[Reproducible-builds] Bug#792687: gettext: please support timestamps from environment

Santiago Vila sanvila at debian.org
Mon Aug 31 19:32:43 UTC 2015

On Fri, 17 Jul 2015, Dhole wrote:

> Source: gettext
> Version: 0.19.4-1
> Severity: wishlist
> Tags: patch
> User: reproducible-builds at lists.alioth.debian.org
> Usertags: toolchain timestamps
> X-Debbugs-Cc: reproducible-builds at lists.alioth.debian.org
> Hi,
> While working on the "reproducible builds" effort [1], we have noticed
> that the xgettext tool from gettext embeds timestamps on the creation of
> PO files.

Ok, after looking at many of the packages in reproducible.debian.net
having the tag "lc_messages_randomness" I have to say that your bug
report is not really an accurate description of the problem.

In the gettext system, there are PO files, containing translations:

msgid "hello"
msgstr "hola"

and POT files which are just templates:

msgid "hello"
msgstr ""

serving as the starting point for a new translation in a new language.

Those files (PO and POT) are different and should not be mixed
in a big bag called "PO files" including both.

The xgettext tool is used to generate a POT file containing all
translatable messages from the source code in which those messages
actually appear.

The problem here is that some packages execute xgettext *every* single
time the package is built (creating a different .pot file each time),
and then they also perform msgmerge with the new .pot file and the
existing .po files, creating different .po files each time.

None of that is necessary at all:

For a given source package and debian revision, you only need to
create the .pot file once, for example, just before dpkg-buildpackage.

The same is true for the .po files: If they need to be refreshed,
updated, or whatever, this could and probably should be done
before dpkg-buildpackage as well.

As a proof of concept, I've fixed "pppconfig" the way I think this
kind of bugs should be fixed: By not running "po/update.sh" each and
every time.

Now, my problem is that there is a forked gettext ~reproducible1 and
every build in reproducible.debian.net uses the forked version.

This way the real problem (the fact that a package modifies its own
source at every build) is hidden and more difficult to fix.

Would be possible to drop the forked gettext and try to fix this in
the affected packages?


More information about the Reproducible-builds mailing list