[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Fixing non-reproducibility in some guile packages
From: |
Christopher Allan Webber |
Subject: |
Re: Fixing non-reproducibility in some guile packages |
Date: |
Mon, 13 Feb 2017 10:42:34 -0600 |
User-agent: |
mu4e 0.9.18; emacs 25.1.1 |
Ludovic Courtès writes:
> Christopher Allan Webber <address@hidden> 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 <address@hidden>
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
- guile2.2-gdbm-ffi issue, Christopher Allan Webber, 2017/02/10
- Fixing non-reproducibility in some guile packages (was: guile2.2-gdbm-ffi issue), Christopher Allan Webber, 2017/02/11
- Re: Fixing non-reproducibility in some guile packages, Jan Nieuwenhuizen, 2017/02/11
- Re: Fixing non-reproducibility in some guile packages, Christopher Allan Webber, 2017/02/12
- Re: Fixing non-reproducibility in some guile packages, Maxim Cournoyer, 2017/02/13
- Re: Fixing non-reproducibility in some guile packages, Andy Wingo, 2017/02/13
- Re: Fixing non-reproducibility in some guile packages, Christopher Allan Webber, 2017/02/13
- Re: Fixing non-reproducibility in some guile packages, Maxim Cournoyer, 2017/02/13
- Re: Fixing non-reproducibility in some guile packages, Ludovic Courtès, 2017/02/13
- Re: Fixing non-reproducibility in some guile packages,
Christopher Allan Webber <=