@@ -71,6 +71,7 @@ (define-module (gnu packages guile-xyz)
#:use-module (gnu packages avahi)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
+ #:use-module (gnu packages code)
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
#:use-module (gnu packages databases)
@@ -2135,25 +2136,43 @@ (define-public g-wrap
version ".tar.gz"))
(sha256
(base32
- "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg"))))
+ "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg"))
+ (modules '((guix build utils)))
+ (snippet '(begin
+ ;; allow guile 3.0
+ (substitute* "configure"
+ (("2\\.2 2\\.0")
+ "3.0 2.2 2.0"))
+ (substitute* (find-files "." "^Makefile.in$")
+ (("guilemoduledir =.*guile/site" all)
+ (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
+ ;; don't use removed api
+ (substitute* "guile/g-wrap/guile-runtime.c"
+ (("scm_class_([a-z]+)" all first)
+ (string-append
+ "scm_c_public_ref(\"oop goops\",\"<"
+ first ">\")"))
+ (("scm_memory_error\\(func_name\\)")
+ "scm_report_out_of_memory()"))))))
(build-system gnu-build-system)
- (native-inputs
- (list pkg-config))
+ (native-inputs (list pkg-config guile-3.0))
(propagated-inputs
- (list guile-2.2 guile-lib))
- (inputs
- (list libffi))
+ (list guile-lib
+ ;; Required by pc file
+ libffi))
+ (inputs (list libffi indent guile-3.0))
(arguments
- `(#:configure-flags '("--disable-Werror")
- #:phases
- (modify-phases %standard-phases
- (add-before 'configure 'pre-configure
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (substitute* (find-files "." "^Makefile.in$")
- (("guilemoduledir =.*guile/site" all)
- (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
- #t))))))
+ `(#:parallel-build? #f ;not supported
+ ;; TODO: compile go files.
+ #:make-flags '("GUILE_AUTO_COMPILE=0")
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'set-indent-program-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "g-wrap/util.scm"
+ (("indent \\~S")
+ (string-append (search-input-file inputs
+ "/bin/indent")
+ " ~S"))))))))
(synopsis "Generate C bindings for Guile")
(description "G-Wrap is a tool and Guile library for generating function
wrappers for inter-language calls. It currently only supports generating Guile