Alex Kost <alez...@gmail.com> skribis: > Ludovic Courtès (2015-10-21 19:55 +0300) wrote: > >> Alex Kost <alez...@gmail.com> skribis: >> >>> I like the idea to honor SOURCE_DATE_EPOCH, so I'm attaching a patch for >>> this. But now I don't know how to make Guix set this variable during >>> the build process :-( Need help. >> >> Ahem, eventually, we’ll have to set it in ‘gnu-build’ in (guix build >> gnu-build-system) in the next ‘core-updates’ cycle. > > So would it be as simple as this (?): > > diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm > index ff7646b..92e15d1 100644 > --- a/guix/build/gnu-build-system.scm > +++ b/guix/build/gnu-build-system.scm > @@ -576,6 +576,9 @@ in order. Return #t if all the PHASES succeeded, #f > otherwise." > ;; Encoding/decoding errors shouldn't be silent. > (fluid-set! %default-port-conversion-strategy 'error) > > + ;; Avoid non-determinism related to generated timestamps. > + (setenv "SOURCE_DATE_EPOCH" "1") > + > ;; The trick is to #:allow-other-keys everywhere, so that each procedure in > ;; PHASES can pick the keyword arguments it's interested in. > (every (match-lambda
Yes, as simple as this. >> In the interim, we can set it in a phase of ‘emacs-build-system’, which >> would entail few rebuilds. >> >> WDYT? > > I think it is not so important to make a temporary workaround for > master. What about just fixing it in core-updates? Sure, makes sense. It’ll be several weeks before it is merged, though, but we can probably live with that. >>> +++ b/gnu/packages/patches/emacs-source-date-epoch.patch >>> @@ -0,0 +1,20 @@ >>> +Honor SOURCE_DATE_EPOCH variable to avoid non-determinism in generated >>> +"autoloads" files. >>> + >>> +--- a/lisp/emacs-lisp/autoload.el >>> ++++ b/lisp/emacs-lisp/autoload.el >>> +@@ -378,8 +378,12 @@ >>> + "Insert the section-header line, >>> + which lists the file name and which functions are in it, etc." >>> + (insert generate-autoload-section-header) >>> +- (prin1 `(autoloads ,autoloads ,load-name ,file ,time) >>> +- outbuf) >>> ++ (let* ((env (getenv "SOURCE_DATE_EPOCH")) >>> ++ (time (if env >>> ++ (seconds-to-time (string-to-number env)) >>> ++ time))) >>> ++ (prin1 `(autoloads ,autoloads ,load-name ,file ,time) >>> ++ outbuf)) >>> + (terpri outbuf) >>> + ;; Break that line at spaces, to avoid very long lines. >>> + ;; Make each sub-line into a comment. >> >> Could you also submit it upstream, Cc’ing guix-devel and >> reproducible-bui...@lists.alioth.debian.org? Hopefully that is >> acceptable. (I searched a bit but didn’t find a similar patch by the >> Debian Reproducible team, but patch-tracker.debian.org is unreachable.) > > I'm afraid it's a too hard task for me, sorry. I wouldn't like to mail > to so many places. Or email only emacs-devel if you prefer. An experienced Emacs hacker like you shouldn’t have to be afraid of that. Thanks! Ludo’.