What happened about the reproducible builds effort this week:

Toolchain fixes

Norbert Preining uploaded texinfo/6.0.0.dfsg.1-2 which makes texinfo indices reproducible. Original patch by Chris Lamb.

Lunar submitted recently rebased patches to make the file order of files inside .deb stable.

akira filled #789843 to make tex4ht stop printing timestamps in its HTML output by default.

Dhole wrote a patch for xutils-dev to prevent timestamps when creating gzip compresed files.

Reiner Herrmann sent a follow-up patch for wheel to use UTC as timezone when outputing timestamps.

Mattia Rizzolo started a discussion regarding the failure to build from source of subversion when -Wdate-time is added to CPPFLAGS—which happens when asking dpkg-buildflags to use the reproducible profile. SWIG errors out because it doesn't recognize the aforementioned flag.

Trying to get the .buildinfo specification to more definitive state, Lunar started a discussion on storing the checksums of the binary package used in dpkg status database.

akira discovered—while proposing a fix for simgrid—that CMake internal command to create tarballs would record a timestamp in the gzip header. A way to prevent it is to use the GZIP environment variable to ask gzip not to store timestamps, but this will soon become unsupported. It's up for discussion if the best place to fix the problem would be to fix it for all CMake users at once.

Infrastructure-related work

Andreas Henriksson did a delayed NMU upload of pbuilder which adds minimal support for build profiles and includes several fixes from Mattia Rizzolo affecting reproducibility tests.

Neils Thykier uploaded lintian which both raises the severity of package-contains-timestamped-gzip and avoids false positives for this tag (thanks to Tomasz Buchert).

Petter Reinholdtsen filled #789761 suggesting that how-can-i-help should prompt its users about fixing reproducibility issues.

Packages fixed

The following packages became reproducible due to changes in their build dependencies: autorun4linuxcd, libwildmagic, lifelines, plexus-i18n, texlive-base, texlive-extra, texlive-lang.

The following packages became reproducible after getting fixed:

Some uploads fixed some reproducibility issues but not all of them:

Untested uploaded as they are not in main:

Patches submitted which have not made their way to the archive yet:

  • #789648 on apt-dater by Dhole: allow the build date to be set externally and set it to the time of the latest debian/changelog entry.
  • #789715 on simgrid by akira: fix doxygen and patch CMakeLists.txt to give GZIP=-n for tar.
  • #789728 on aegisub by Juan Picca: get rid of __DATE__ and __TIME__ macros.
  • #789747 on dipy by Juan Picca: set documentation date for Sphinx.
  • #789748 on jansson by Juan Picca: set documentation date for Sphinx.
  • #789799 on tmexpand by Chris Lamb: remove timestamps, hostname and username from the build output.
  • #789804 on libevocosm by Chris Lamb: removes generated files which include extra information about the build environment.
  • #789963 on qrfcview by Dhole: removes the timestamps from the the generated PNG icon.
  • #789965 on xtel by Dhole: removes extra timestamps from compressed files by gzip and from the PNG icon.
  • #790010 on simbody by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790023 on stx-btree by akira: pass HTML_TIMESTAMP=NO to Doxygen.
  • #790034 on siscone by akira: removes $datetime from footer.html used by Doxygen.
  • #790035 on thepeg by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790072 on libxray-spacegroup-perl by Chris Lamb: set $Storable::canonical = 1 to make space_groups.db.PL output deterministic.
  • #790074 on visp by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790081 on wfmath by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790082 on wreport by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790088 on yudit by Chris Lamb: removes timestamps from the build system by passing a static comment.
  • #790122 on clblas by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790133 on dcmtk by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790139 on glfw3 by akira: patch for Doxygen timestamps further improved by James Cowgill by removing $datetime from the footer.
  • #790228 on gtkspellmm by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790232 on ucblogo by Reiner Herrmann: set LC_ALL to C before sorting.
  • #790235 on basemap by Juan Picca: set documentation date for Sphinx.
  • #790258 on guymager by Reiner Herrmann: use the date from the latest debian/changelog as build date
  • #790309 on pelican by Chris Lamb: removes useless (and unreproducible) tests.

debbindiff development

debbindiff/23 includes a few bugfixes by Helmut Grohne that result in a significant speedup (especially on larger files). It used to exhibit the quadratic time string concatenation antipattern.

Version 24 was released on June 23rd in a hurry to fix an undefined variable introduced in the previous version. (Reiner Herrmann)

debbindiff now has a test suite! It is written using the PyTest framework (thanks Isis Lovecruft for the suggestion). The current focus has been on the comparators, and we are now at 93% of code coverage for these modules.

Several problems were identified and fixed in the process: paths appearing in output of javap, readelf, objdump, zipinfo, unsqusahfs; useless MD5 checksum and last modified date in javap output; bad handling of charsets in PO files; the destination path for gzip compressed files not ending in .gz; only metadata of cpio archives were actually compared. stat output was further trimmed to make directory comparison more useful.

Having the test suite enabled a refactoring of how comparators were written, switching from a forest of differences to a single tree. This helped removing dust from the oldest parts of the code.

Together with some other small changes, version 25 was released on June 27th. A follow up release was made the next day to fix a hole in the test suite and the resulting unidentified leftover from the comparator refactoring. (Lunar)

Documentation update

Ximin Luo improved code examples for some proposed environment variables for reference timestamps. Dhole added an example on how to fix timestamps C pre-processor macros by adding a way to set the build date externally. akira documented her fix for tex4ht timestamps.

Package reviews

94 obsolete reviews have been removed, 330 added and 153 updated this week.

Hats off for Chris West (Faux) who investigated many fail to build from source issues and reported the relevant bugs.

Slight improvements were made to the scripts for editing the review database, edit-notes and clean-notes. (Mattia Rizzolo)

Meetings

A meeting was held on June 23rd. Minutes are available.

The next meeting will happen on Tuesday 2015-07-07 at 17:00 UTC.

Misc.

The Linux Foundation announced that it was funding the work of Lunar and h01ger on reproducible builds in Debian and other distributions. This was further relayed in a Bits from Debian blog post.