Differences between revisions 34 and 35
Revision 34 as of 2014-01-20 15:35:01
Size: 199045
Editor: Lunar
Comment: be clear in what was varying between build and rebuild
Revision 35 as of 2014-01-20 15:36:45
Size: 198984
Editor: Lunar
Comment: logs are not there anymore
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:

Logs: http://aws-logs.debian.net/ftbfs-logs/reproducible/

Here is the result of a partial archive rebuild done by David Suárez on September 7th, 2013 using Lunar's pu/reproducible_builds branch of dpkg.

The setup meant there was a variation in time and build path between the initial build and the rebuild.

The latter contains fix to deal with timestamps and file order in .deb produced by dpkg. It also pass CFLAGS using dpkg-buildflags that build stable debug symbols (fdebug-prefix-map approach).

Mismatching binary packages


dh-buildinfo output is not stable and calls gzip without the -n flag (722186), this is fixed in dh-buildinfo 0.10.

Missing CXXFLAGS in dpkg-buildflags

The rebuilt was made with a pu/reproducible_builds branch that handled CFLAGS but not CXXFLAGS.

  • bobcat (3.15.00-1) => libbobcat3: usr/lib/libbobcat.so.3.15.00 build id mismatch

Ruby extensions

Ruby extensions are built with the same CFLAGS than the Ruby interpreter.

  • ruby-unicode (0.4.4-1) => Mismatching Build Id in unicode.so.

.a contains timestamps

  • ben (0.6.6) => libben-ocaml-dev: usr/lib/ocaml/ben/benl.a and usr/lib/ocaml/ben/libbenl.a contains timestamps

  • bison (2.7.1.dfsg-1) => libbison-dev: usr/lib/x86_64-linux-gnu/liby.a contains timestamps

  • bobcat (3.15.00-1) => libbobcat-dev: usr/lib/libbobcat.a

  • gettext ( => libgettextpo-dev: ./usr/lib/x86_64-linux-gnu/libgettextpo.a contains timestamps

.gz contains timestamp

  • bobcat (3.15.00-1) => libbobcat-dev: usr/share/man/man3/*.gz 722166

  • debian-policy ( => in many files, and also timestamps in the document themselves

.jar contains timestamps

  • gettext ( => gettext: ./usr/share/java/gettext.jar differ, gettext-base: ./usr/share/java/libintl.jar

  • jaxe (3.5-4) => jaxe: ./usr/share/java/Jaxe/editeurconfig.jar, libjaxe-java: usr/share/java/Jaxe/lib/Jaxe.jar and usr/share/java/Jaxe/plugins/xpages.jar

javadoc HTML files contain timestamp

  • jaxe (3.5-4) => libjaxe-java-doc


Epydoc HTML files contain timestamps and does not always output links in the same order.


It appears that mono libraries and executables contains timestamps, but this needs to be checked in depth. monodoc sources are zip files containing timestamps.

php registry files contain timestamp

./usr/share/php/.registry/*.reg files contain a _lastmodified timestamp.

doxygen developer documentation

It looks like doxygen does not work with files in a stable order.

Specific issue

  • ruby-rubypants (0.2.0-1) => Only ruby-rubypants-doc mismatch due to timestamp in usr/share/doc/ruby-rubypants-doc/html/created.rid

  • gettext ( => libasprintf0c2: ./usr/lib/x86_64-linux-gnu/libasprintf.so.0.0.0 build id mismatch

  • bup (0.25~rc2-3) => debian/gen_version_py.sh encode a timestamp in the library

  • bowtie (1.0.0-5) => build id differs, manpages are gzip with timestamps, manpages contain build command-line (= build path)

  • e17 (0.17.3-1) => usr/share/doc/enlightenment/cache.txt.gz, usr/share/doc/enlightenment/FDO.txt.gz both contain gzip timestamp; 724340

  • pidgin (2.10.7-2) => build id mismatch for usr/bin/finch, usr/lib/libgnt.so.0.8.9, ./usr/lib/libpurple.so.0.10.7, ./usr/lib/purple-2/libjabber.so.0.0.0, ./usr/lib/purple-2/libmsn.so, ./usr/lib/purple-2/libmyspace.so, ./usr/lib/purple-2/libsametime.so, ./usr/lib/purple-2/libymsg.so.0.0.0, ./usr/lib/purple-2/perl.so, usr/bin/pidgin ; build path is encoded in ./usr/include/libpurple/dbus-types.h ; unknown issue usr/share/locale/ja/LC_MESSAGES/pidgin.mo

  • ipmitool (1.8.12-1) => do not use dpkg-buildflags… that would be solve by upgrading to dh 9

Unable to reproduce

This might actually due to changes in dpkg-buildflags or dh-buildinfo…


Successfully rebuilt

1254 packages (24%) produced matching .deb: