From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: Timestamps in ...-autoloads.el files Date: Tue, 03 Nov 2015 14:27:08 +0100 Message-ID: <87wptzz00j.fsf@gnu.org> References: <87zize1mmq.fsf@gnu.org> <87si55h205.fsf@gmail.com> <87mvvde3h0.fsf@gnu.org> <87vba0mkwy.fsf@gmail.com> <87y4ew88km.fsf@gnu.org> <87y4egny5y.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:60762) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZtbcI-0004Ac-HI for guix-devel@gnu.org; Tue, 03 Nov 2015 08:27:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZtbcE-0000uJ-GZ for guix-devel@gnu.org; Tue, 03 Nov 2015 08:27:14 -0500 In-Reply-To: <87y4egny5y.fsf@gmail.com> (Alex Kost's message of "Mon, 02 Nov 2015 19:50:17 +0300") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Alex Kost Cc: guix-devel Alex Kost skribis: > Ludovic Court=C3=A8s (2015-10-21 19:55 +0300) wrote: > >> Alex Kost 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=E2=80=99ll have to set it in =E2=80=98gnu-build=E2= =80=99 in (guix build >> gnu-build-system) in the next =E2=80=98core-updates=E2=80=99 cycle. > > So would it be as simple as this (?): > > diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-syste= m.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) >=20=20 > + ;; Avoid non-determinism related to generated timestamps. > + (setenv "SOURCE_DATE_EPOCH" "1") > + > ;; The trick is to #:allow-other-keys everywhere, so that each procedu= re 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 =E2=80=98emacs-build-system= =E2=80=99, 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=E2=80=99ll be several weeks before it is merged, tho= ugh, 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=E2=80=99ing guix-devel and >> reproducible-builds@lists.alioth.debian.org? Hopefully that is >> acceptable. (I searched a bit but didn=E2=80=99t find a similar patch b= y 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=E2=80=99t have to be afraid of= that. Thanks! Ludo=E2=80=99.