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’.

Reply via email to