Subject: Re: bug#26247: Gettext introduces timestamps in .mo files

From: Julien Lepiller <[email-masked]>
Date: Thu, 03 Dec 2020 07:07:16 -0500

So it's not gettext itself, but our build system that generates the en@quote and en@boldquote files. Do we really need them? If so, we should find a way to generate them reproducibly.

Le 3 décembre 2020 05:32:54 GMT-05:00, "Ludovic Courtès" <[email-masked]> a écrit :
>Hi Simon,
>
>zimoun <[email-masked]> skribis:
>
>> On Fri, 24 Mar 2017 at 23:54, [email-masked] (Ludovic Courtès) wrote:
>>
>>> Gettext 0.19.8.1 (current core-updates,
>>> 77ab6983a19ef307558ab2607920158d6bb94ba8) introduces timestamps in
>.mo
>>> file, without honoring SOURCE_DATE_EPOCH, which leads to
>>> non-reproducible builds (for example ‘guix’).
>>
>> Is it still relevant?  Since Gettext is now at 0.20.1.  How can I
>> reproduce the issue?
>
>I still see this:
>
>--8<---------------cut here---------------start------------->8---
>$ guix challenge guix --substitute-urls="https://ci.guix.gnu.org
>https://bayfront.guix.gnu.org"
>updating substitutes from 'https://bayfront.guix.gnu.org'... 100.0%
>/gnu/store/babcmx68gkfxwzr3rmccan88dqjiqzb4-guix-1.2.0-3.35a32fe
>contents differ:
>no local build for
>'/gnu/store/babcmx68gkfxwzr3rmccan88dqjiqzb4-guix-1.2.0-3.35a32fe'
>https://ci.guix.gnu.org/nar/lzip/babcmx68gkfxwzr3rmccan88dqjiqzb4-guix-1.2.0-3.35a32fe:
>13wvxga668grzs0p6sp0ghvdiy96nc9w71vs11djjkypsaf7wpw1
>https://bayfront.guix.gnu.org/nar/lzip/babcmx68gkfxwzr3rmccan88dqjiqzb4-guix-1.2.0-3.35a32fe:
>1rpwil9h2whjd9dbwpikxn8prkg924nhljglwj9yjijh578nlfr8
>  differing files:
>    /share/locale/en@quot/LC_MESSAGES/guix.mo
>    /share/locale/en@quot/LC_MESSAGES/guix-packages.mo
>    /share/locale/en@boldquot/LC_MESSAGES/guix.mo
>    /share/locale/en@boldquot/LC_MESSAGES/guix-packages.mo
>    /share/info/guix-cookbook.de.info.gz
>    /lib/guile/3.0/site-ccache/guix/workers.go
>    /lib/guile/3.0/site-ccache/guix/ui.go
>    /lib/guile/3.0/site-ccache/guix/swh.go
>    /lib/guile/3.0/site-ccache/guix/svn-download.go
>[…]
>--8<---------------cut here---------------end--------------->8---
>
>‘--diff=diffoscope’ is not an option here because it takes too long
>looking at all the .go files…
>
>A focused diff shows this:
>
>--8<---------------cut here---------------start------------->8---
>$ diffoscope --exclude-directory-metadata=yes
>/tmp/{t1,t2}/share/locale/en@quot/
>--- /tmp/t1/share/locale/en@quot/
>+++ /tmp/t2/share/locale/en@quot/
>│   --- /tmp/t1/share/locale/en@quot/LC_MESSAGES
>├── +++ /tmp/t2/share/locale/en@quot/LC_MESSAGES
>│ │   --- /tmp/t1/share/locale/en@quot/LC_MESSAGES/guix-packages.mo
>│ ├── +++ /tmp/t2/share/locale/en@quot/LC_MESSAGES/guix-packages.mo
>│ │ ├── msgunfmt {}
>│ │ │ @@ -1,12 +1,12 @@
>│ │ │  msgid ""
>│ │ │  msgstr ""
>│ │ │  "Project-Id-Version: guix 1.2.0-3.35a32fe\n"
>│ │ │  "Report-Msgid-Bugs-To: [email-masked]\n"
>│ │ │ -"PO-Revision-Date: 2020-11-29 18:33+0000\n"
>│ │ │ +"PO-Revision-Date: 2020-12-02 10:10+0000\n"
>│ │ │  "Last-Translator: Automatically generated\n"
>│ │ │  "Language-Team: none\n"
>│ │ │  "Language: en@quot\n"
>│ │ │  "MIME-Version: 1.0\n"
>│ │ │  "Content-Type: text/plain; charset=UTF-8\n"
>│ │ │  "Content-Transfer-Encoding: 8bit\n"
>│ │ │  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
>│ │   --- /tmp/t1/share/locale/en@quot/LC_MESSAGES/guix.mo
>│ ├── +++ /tmp/t2/share/locale/en@quot/LC_MESSAGES/guix.mo
>│ │ ├── msgunfmt {}
>│ │ │ @@ -1,12 +1,12 @@
>│ │ │  msgid ""
>│ │ │  msgstr ""
>│ │ │  "Project-Id-Version: guix 1.2.0-3.35a32fe\n"
>│ │ │  "Report-Msgid-Bugs-To: [email-masked]\n"
>│ │ │ -"PO-Revision-Date: 2020-11-29 18:33+0000\n"
>│ │ │ +"PO-Revision-Date: 2020-12-02 10:10+0000\n"
>│ │ │  "Last-Translator: Automatically generated\n"
>│ │ │  "Language-Team: none\n"
>│ │ │  "Language: en@quot\n"
>│ │ │  "MIME-Version: 1.0\n"
>│ │ │  "Content-Type: text/plain; charset=UTF-8\n"
>│ │ │  "Content-Transfer-Encoding: 8bit\n"
>│ │ │  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
>--8<---------------cut here---------------end--------------->8---
>
>Ludo’.