Ludovic Courtès writes: > Christopher Allan Webber <[email protected]> skribis: > >> (let* ((out (assoc-ref %outputs "out")) >> - (module-dir (string-append out "/share/guile/site/2.0")) >> + (module-dir (string-append out "/share/guile/site/" >> + ,(if guile-2.2? >> + "2.2" "2.0"))) >> (source (assoc-ref %build-inputs "source")) > > Another approach, which is more future-proof but also more verbose, is > to evaluate (effective-version) for the Guile that’s being used, on the > “build side” (thus, no need to do the unquote thing above). > > The ‘guile-minikanren’ package does exactly that: > > (let* ((out (assoc-ref %outputs "out")) > (guile (assoc-ref %build-inputs "guile")) > (effective (read-line > (open-pipe* OPEN_READ > (string-append guile "/bin/guile") > "-c" "(display > (effective-version))"))) > (module-dir (string-append out "/share/guile/site/" > effective)) …) > …) > > We should probably factorize this somewhere (a new (guix build guile) > module?), but for now that’s what we have. > > How does that sound?
It looks much better! I've updated my patch to use this method. Re: the new module, I agree it's a good idea. We had some talks at FOSDEM about maybe supporting more declarative guild'y type configuration again, and maybe that's the right approach, I don't really know. It feels like "what should we do about easy to package guile packages that don't necessarily use autotools" is still a conversation to be had. Not sure if that's a prerequisite for the module. Anyway, okay to push? I'd love to have the buggy package not be buggy in master. :)
From 369582d7c8b5ce1249761337319e79cc117f161e Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber <[email protected]> Date: Fri, 10 Feb 2017 19:24:57 -0600 Subject: [PATCH] guile-gdbm-ffi: Write to correct guile output directory and use guild. * gnu/packages/guile.scm (guile-gdbm-ffi): Check guile for effective version before writing to output path. Also fixes a bug where the guild command was not getting called, and instead was calling the internal guile compile-file procedure. This meant that the package produced was dependent on whatever version of guile was powering Guix at the time. Also set GUILE_AUTO_COMPILE to 0 to avoid gnarly looking warnings during build. --- gnu/packages/guile.scm | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 3e8ab007b..75f561c03 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -844,11 +844,20 @@ inspired by the SCSH regular expression system.") ((guix build utils)) #:builder (begin - (use-modules (guix build utils) - (system base compile)) + (use-modules (guix build utils)) + + (setenv "GUILE_AUTO_COMPILE" "0") (let* ((out (assoc-ref %outputs "out")) - (module-dir (string-append out "/share/guile/site/2.0")) + (effective-version + (read-line + (open-pipe* OPEN_READ + (string-append + (assoc-ref %build-inputs "guile") + "/bin/guile") + "-c" "(display (effective-version))"))) + (module-dir (string-append out "/share/guile/site/" + effective-version)) (source (assoc-ref %build-inputs "source")) (doc (string-append out "/share/doc")) (guild (string-append (assoc-ref %build-inputs "guile") @@ -856,7 +865,10 @@ inspired by the SCSH regular expression system.") (gdbm.scm-dest (string-append module-dir "/gdbm.scm")) (gdbm.go-dest - (string-append module-dir "/gdbm.go"))) + (string-append module-dir "/gdbm.go")) + (compile-file + (lambda (in-file out-file) + (system* guild "compile" "-o" out-file in-file)))) ;; Make installation directories. (mkdir-p module-dir) (mkdir-p doc) @@ -874,8 +886,7 @@ inspired by the SCSH regular expression system.") (assoc-ref %build-inputs "gdbm")))) ;; compile to the destination - (compile-file gdbm.scm-dest - #:output-file gdbm.go-dest))))) + (compile-file gdbm.scm-dest gdbm.go-dest))))) (inputs `(("guile" ,guile-2.0))) (propagated-inputs -- 2.11.0
signature.asc
Description: PGP signature
