Kaz Kylheku skribis: > On 2021-07-17 15:51, Kaz Kylheku wrote: >> On 2021-07-17 02:57, Guillaume Le Vaillant wrote: >>> Hi, >>> When testing the patch to build the HTML and PDF documentation, >>> I noticed that the 'share/doc/txr-263/txr-manpage.pdf' file is not >>> reproducible. There are some timestamps and UUIDs in it that change at >>> each build (diffoscope output attached). >>> Could you take a look at that and see if there's a way to make it >>> reproducible? >>> Thanks. >> Hi Guillaume, >> Thank you for your report. I don't see anything in the pdfroff >> documentation >> about getting rid of this. I might use a program similar to this one >> to just overwrite the UUIDs and dates: > > I've noticed that there are some dates in the document which > respond to SOURCE_DATE_EPOCH: > > 2 0 obj > < /CreationDate(D:20210717203740-07'00') > /ModDate(D:20210717203740-07'00') > /Creator(groff version 1.22.3)>>endobj > > If I build with the SOURCE_DATE_EPOCH environment variable, > these dates from Ghostscript follow that variable. > That's why Guillaume isn't seeing an issue in that section > of the file. Hi Kaz, I tried your patch and it doesn't fix all the timestamps in the environment used to build Guix packages: - Timestamps have the "YYYY-MM-DDTHH:MM:SSZ" format instead of "YYYY-MM-DDTHH:MM:SS+00:00" - There are two "...Date(D:YYYYMMDDHHMMSSZ..." timestamps after the XML block, although SOURCE_DATE_EPOCH is set to 1 in the environment With the following modified 'pdf-clobber-stamps.tl' the document becomes reproducible with Guix (but probably not in some other environments, depending on the timezone format): --8<---------------cut here---------------start------------->8--- (let* ((epoch (or (tointz (getenv "SOURCE_DATE_EPOCH")) 0)) (isotime (time-string-utc epoch "%FT%TZ")) (pdf (file-get-string "txr-manpage.pdf")) (start (search-str pdf "....-..-..T..:..:..Z/ `Date>@isotime`)) (assert (eql (len xml) orig-len)) (set [pdf start..end] xml) (upd pdf (regsub #/Date\(D:..............Z/ "Date(D:19700101000001Z")) (file-put-string "txr-manpage.pdf.temp" pdf) (rename-path "txr-manpage.pdf.temp" "txr-manpage.pdf")) --8<---------------cut here---------------end--------------->8---