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:
- ansible/1.9.2+dfsg-1 by Harlan Lieberman-Berg.
- antpm/1.16-9 uploaded by Kristof Ralovich, original patch by Dhole.
- ccseapps/2.5-6 by Alastair McKinstry.
- clblas/2.4-2 uploaded by Ghislain Antony Vaillant, original patch by akira.
- dictionaries-common/1.26.1 by Agustin Martin Domingo.
- djvulibre/3.5.27.1-2 uploaded by Barak A. Pearlmutter, original patch by Dhole.
- exim4/4.86~RC4-1 by Andreas Metzler.
- geis/2.2.17-1 uploaded by Stephen M. Webb, original patch by akira.
- guymager/0.7.4-2 uploaded by Michael Prokop, original patch by Reiner Herrman.
- irrlicht/1.8.1+dfsg1-2 uploaded by Vincent Cheng, original patch by akira.
- ismrmrd/1.2.3-2 by Ghislain Antony Vaillant.
- ispell-et/1:20030606-24 by Agustin Martin Domingo.
- jacktrip/1.1~repack-1 uploaded by IOhannes m zmölnig, original patch by akira.
- ksshaskpass/4:5.3.1-1 by Maximiliano Curia, report by Daniel Kahn Gillmor.
- libencode-jis2k-perl/0.03-1 by gregor herrmann.
- libosmium/2.1.0-4 by Bas Couwenberg.
- libzorpll/3.9.4.1-2 by SZALAY Attila.
- linop/0.8.2-3 uploaded by Ghislain Antony Vaillant, original patch by Juan Picca.
- lmdb/0.9.15-1 uploaded by Ondřej Surý, original patch by akira.
- manuel/1.8.0-3 by Daniel Stender.
- nss-wrapper/1.0.3-3 by Jakub Wilk.
- orthanc/0.9.0+dfsg-1 prepared by Sebastien Jodogne, issues fixed in upstream version.
- osmcoastline/2.0.1-2 by Bas Couwenberg.
- osmium-tool/1.0.1-2 uploaded by Bas Couwenberg, original patch by Chris Lamb.
- pelican/3.6.0-4 uploaded by Vincent Cheng, original patch by Chris Lamb.
- py-lmdb/0.86-1 uploaded by Robert Edmonds, original patch by Chris Lamb.
- python-pysqlite2/2.6.3-4 uploaded by Joel Rosdahl, original patch by Juan Picca.
- stx-btree/0.9-2 uploaded by Yury Stankevich, original patch by akira.
- wxwidgets3.0/3.0.2+dfsg-1 by Olly Betts.
- y-u-no-validate/2013052401-4 by Jakub Wilk.
- yudit/2.9.6-4 uploaded by Hideki Yamane, original patch by Chris Lamb.
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:
- #790357 on clanlib by Chris Lamb: sort keys from Perl hash when generating documentation.
- #790374 on oxygen-icons by Dhole: removes the timestamps from the the generated png icons and make symlink deduplication deterministic
- #790380 on gearmand by Chris Lamb: don’t package unreproducible example files
- #790387 on kbtin by Chris Lamb: use UTC timezone when fixing manual date
- #790389 on xtrkcad by Chris Lamb use time of latest
debian/changelog
entry as build date - #790410 on pyke by Chris Lamb: use C locale for time strings
- #790503 on libnet-interface-perl by Chris Lamb: sort Perl hash keys when generating C code
- #790696 on python-pygraphviz by Chris Lamb: set documentation date for Sphinx.
- #790697 on python-repoze.who by Chris Lamb: set documentation date for Sphinx.
- #790741 on libapache-poi-java by Chris Lamb: set build stamp to time of latest
debian/changelog
entry. - #790763 on openchange by Chris Lamb: use UTC when writing timestamp in manpage.
- #790783 on jargon-text by Daniel Kahn Gillmor: set C.UTF-8 as locate to always output unicode when converting HTML to text.
- #791423 on linuxtv-dvb-apps by Reiner Herrmann: set LC_ALL to C before sorting
#define
s..
reproducible.debian.net
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.