On 2022-06-15, Ludovic Courtès wrote: > Vagrant Cascadian skribis: >> From 7a39330b56934accef14b5e2ac003e211c7c6c5b Mon Sep 17 00:00:00 2001 >> From: Vagrant Cascadian >> Date: Fri, 10 Jun 2022 16:12:59 -0700 >> Subject: [PATCH] guix: gnu-build-system: Set FORCE_SOURCE_DATE in >> set-SOURCE-DATE-EPOCH phase. >> >> * guix/build/gnu-build-system.scm (set-SOURCE-DATE-EPOCH): Set >> FORCE_SOURCE_DATE=1. Update URL. > > [...] > >> (define* (set-SOURCE-DATE-EPOCH #:rest _) >> - "Set the 'SOURCE_DATE_EPOCH' environment variable. This is used by tools >> -that incorporate timestamps as a way to tell them to use a fixed timestamp. >> -See https://reproducible-builds.org/specs/source-date-epoch/." >> - (setenv "SOURCE_DATE_EPOCH" "1")) >> + "Set the 'SOURCE_DATE_EPOCH' and 'FORCE_SOURCE_DATE' environment variables. >> +This is used by tools that incorporate timestamps as a way to tell them to use >> +a fixed timestamp. See https://reproducible-builds.org/docs/source-date-epoch/." >> + (setenv "SOURCE_DATE_EPOCH" "1") >> + (setenv "FORCE_SOURCE_DATE" "1")) > > I’d mention above that FORCE_SOURCE_DATE is honored exclusively by > TeX Live. I am having trouble explaining it, partly because I don't really believe in it and kind of want to just leave that up to the URL... that said: diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index d84411c090..d69f8c42fd 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -56,10 +56,13 @@ (define time-monotonic time-tai)) (else #t)) (define* (set-SOURCE-DATE-EPOCH #:rest _) - "Set the 'SOURCE_DATE_EPOCH' environment variable. This is used by tools -that incorporate timestamps as a way to tell them to use a fixed timestamp. -See https://reproducible-builds.org/specs/source-date-epoch/." - (setenv "SOURCE_DATE_EPOCH" "1")) + "Set the 'SOURCE_DATE_EPOCH' and 'FORCE_SOURCE_DATE' environment variables. +This is used by tools that incorporate timestamps as a way to tell them to use +a fixed timestamp. Setting 'FORCE_SOURCE_DATE' is needed in order for TeX +Live to respect 'SOURCE_DATE_EPOCH'. See +https://reproducible-builds.org/docs/source-date-epoch/." + (setenv "SOURCE_DATE_EPOCH" "1") + (setenv "FORCE_SOURCE_DATE" "1")) (define (first-subdirectory directory) "Return the file name of the first sub-directory of DIRECTORY or false, when Not really happy with it ... both variables are basically needed to make SOURCE_DATE_EPOCH effective, and it's not clear to me what it really adds to the statement to call out TeX Live explicitly... especially given that other tools *might* actually do the same... even though I sure hope we can contain the problem to TeX Live. Would renaming it to set-SOURCE-DATE-EPOCH-and-FORCE-SOURCE-DATE add anything? or come up with a generic name? or having both set-SOURCE-DATE-EPOCH and set-FORCE-SOURCE-DATE as separate functions? Or a more generic description? > It’s a bit of a bummer that we have to do that here, but as you point > out, TeX Live can be used pretty much in any package and we’d rather not > track every possible issue by hand. Agreed. > I think it can go to ‘core-updates’. I hope so too! live well, vagrant