What happened about the reproducible builds effort this week:

Media coverage

Daniel Stender published an English translation of the article which originally appeared in Linux Magazin in Admin Magazine.

Toolchain fixes

Fixes landed in the Debian archive:

  • Lunar uploaded docbook-to-man/1:2.0.0-34 which removes a timestamp in generated manpages. Original patch by Chris Lamb.
  • Stefano Rivera uploaded dh-python/1.20150628-1 which now sorts namespace files. Original patch by Chris Lamb.
  • Christian Hofstaedtler uploaded ruby2.2/2.2.2-2 which now uses UTC for the dates in gemspec files. Original patch by Chris Lamb.

Lunar submitted to Debian the patch already sent upstream adding a --clamp-mtime option to tar.

Patches have been submitted to add support for SOURCE_DATE_EPOCH to txt2man (Reiner Herrmann), epydoc (Reiner Herrmann), GCC (Dhole), and Doxygen (akira).

Dhole uploaded a new experimental debhelper to the reproducible repository which exports SOURCE_DATE_EPOCH. As part of the experiment, the patch also sets TZ to UTC which should help with most timezone issues. It might still be problematic for some packages which would change their settings based on this.

Mattia Rizzolo sent upstream a patch originally written by Lunar to make the generate-id() function be deterministic in libxslt. While that patch was quickly rejected by upstream, Andrew Ayer came up with a much better one… which sadly could have some performance impact. Daniel Veillard replied with another patch that should be deterministic in most cases without needing extra data structures. It's impact is currently being investigated by retesting packages on reproducible.debian.net.

akira added a new option to sbuild for configuring the path in which packages are built. This will be needed for the srebuild script.

Niko Tyni asked Perl upstream about it using the __DATE__ and __TIME__ C processor macros.

Packages fixed

The following 143 packages became reproducible due to changes in their build dependencies: alot, argvalidate, astroquery, blender, bpython, brian, calibre, cfourcc, chaussette, checkbox-ng, cloc, configshell, daisy-player, dipy, dnsruby, dput-ng, dsc-statistics, eliom, emacspeak, freeipmi, geant321, gpick, grapefruit, heat-cfntools, imagetooth, jansson, jmapviewer, lava-tool, libhtml-lint-perl, libtime-y2038-perl, lift, lua-ldoc, luarocks, mailman-api, matroxset, maven-hpi-plugin, mknbi, mpi4py, mpmath, msnlib, munkres, musicbrainzngs, nova, pecomato, pgrouting, pngcheck, powerline, profitbricks-client, pyepr, pylibssh2, pylogsparser, pystemmer, pytest, python-amqp, python-apt, python-carrot, python-crypto, python-darts.lib.utils.lru, python-demgengeo, python-graph, python-mock, python-musicbrainz2, python-pathtools, python-pskc, python-psutil, python-pypump, python-repoze.sphinx.autointerface, python-repoze.tm2, python-repoze.what-plugins, python-repoze.what, python-repoze.who-plugins, python-xstatic-term.js, reclass, resource-agents, rgain, rttool, ruby-aggregate, ruby-archive-tar-minitar, ruby-bcat, ruby-blankslate, ruby-coffee-script, ruby-colored, ruby-dbd-mysql, ruby-dbd-odbc, ruby-dbd-pg, ruby-dbd-sqlite3, ruby-dbi, ruby-dirty-memoize, ruby-encryptor, ruby-erubis, ruby-fast-xs, ruby-fusefs, ruby-gd, ruby-git, ruby-globalhotkeys, ruby-god, ruby-hike, ruby-hmac, ruby-integration, ruby-ipaddress, ruby-jnunemaker-matchy, ruby-memoize, ruby-merb-core, ruby-merb-haml, ruby-merb-helpers, ruby-metaid, ruby-mina, ruby-net-irc, ruby-net-netrc, ruby-odbc, ruby-packet, ruby-parseconfig, ruby-platform, ruby-plist, ruby-popen4, ruby-rchardet, ruby-romkan, ruby-rubyforge, ruby-rubytorrent, ruby-samuel, ruby-shoulda-matchers, ruby-sourcify, ruby-test-spec, ruby-validatable, ruby-wirble, ruby-xml-simple, ruby-zoom, ryu, simplejson, spamassassin-heatu, speaklater, stompserver, syncevolution, syncmaildir, thin, ticgit, tox, transmissionrpc, vdr-plugin-xine, waitress, whereami, xlsx2csv, zathura.

The following packages became reproducible after getting fixed:

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

  • cdo/1.6.6+dfsg.1-1 uploaded by Alastair McKinstry.
  • dsdo/1.6.36-6 by Agustin Martin Domingo.
  • liboro-java/2.0.8a-11 by Emmanuel Bourg.
  • simgrid/3.11.1-10 uploaded by Martin Quinson, original patch by akira.

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


A new package set for the X Strike Force has been added. (h01ger)

Bugs tagged with “locale” are now visible in the statistics. (h01ger)

Some work has been done add tests for NetBSD. (h01ger)

Many changes by Mattia Rizzolo have been merged on the whole infrastructure:

  • IRC notifications when known reproducible packages stops buildig successfully.
  • Packages marked ftbfs_due_to_obsolete_dependencies now appears as FTBFS on the package tracker.
  • When listing packages affected by an issue, packages without bugs are grouped together, making it easier to spot the ones who requires work.
  • Both build logs are now saved separately. A diff between the two files is available.
  • The text output of debbindiff is now available as well for easier search and reports.
  • Build logs and debbindiff output are now stored compressed with gzip.
  • The builder used for a given test is now recorded in the database.
  • The manual scheduler available from Alioth gained new options:
    • -i/--issues: schedule all packages affected by the given issue.
    • -r/--status: schedule all packages with the given status.
    • -b/--before: schedule all packages built before the given date
    • -t/--after: schedule all packages built after the given date.
    • --noisy: notify the IRC channel also when the build starts, with a URL to watch it in real time.

debbindiff development

Version 26 has been released on June 28th fixing the comparison of files of unknown format. (Lunar)

A missing dependency identified in python-rpm affecting debbindiff installation without recommended packages was promptly fixed by Michal Čihař.

Lunar also started a massive code rearchitecture to enhance code reuse and enable new features. Nothing visible yet, though.

Documentation update

josch and Mattia Rizzolo documented how to reschedule packages from Alioth.

Package reviews

142 obsolete reviews have been removed, 344 added and 107 updated this week.

Chris West (Faux) filled 13 new bugs for packages failing to build from sources.

The following new issues have been added: snapshot_placeholder_replaced_with_timestamp_in_pom_properties, different_encoding, timestamps_in_documentation_generated_by_org_mode and timestamps_in_pdf_generated_by_matplotlib.