Debian Jessie has been released on April 25th, 2015. This has opened the Stretch development cycle. Reactions to the idea of making Debian build reproducibly have been pretty enthusiastic. As the pace is now likely to be even faster, let’s see if we can keep everyone up-to-date on the developments.
Before the release of Jessie
The story goes back a long way but a formal announcement to the project has only been sent in February 2015.
Since then, too much work has happened to make a complete report, but to give some highlights:
- New variations are now tested: umask, kernel version, domain name, and timezone. We might only be missing CPU type and current date now.
- Many improvements to the test system on jenkins.debian.net and the pages showing the results.
- Now not only packages from
unstable
are tested but also those intesting
andexperimental
. - When rescheduling packages for testing, the build products can be kept and the IRC channel gets a notification when its over.
- binutils version 2.25-6 is now built with the
--enable-deterministic-archives
flag. Makingar
,strip
and others create deterministic static libraries. - Number of identified issues has grown from about 80 to 123 today.
Lunar did a pretty improvised lightning talk during the Mini-DebConf in Lyon.
This past week
It seems changes were pilling behind the curtains given the amount of activity that happened in just one week.
Toolchain fixes
- Niels Thykier uploaded debhelper/9.20150501 which includes fixes to
dh_makeshlibs
(#774100),dh_icons
(#774102),dh_usrlocal
(#775020). Patches written by Lunar. - Helmut Grohne uploaded doxygen/1.8.9.1-3 which will not generate timestamps in HTML by default. Kudos to akira for bringing the issue upstream.
- Kenneth J. Pronovici uploaded epydoc/3.0.1+dfsg-6 adding a
--no-include-build-time
option. Patch by Jelmer Vernooij. - David Prévot uploaded php-apigen/2.8.1+dfsg-2 which now has reproducible output.
- Cédric Boutillier uploaded ruby-prawn/2.0.1+dfsg-1 which now produce a deterministic output when using gradients. Patch by Lunar.
- Jelmer Vernooij uploaded samba/2:4.1.17+dfsg-4 which contains a patch by Matthieu Patou making the output of
pidl
(fromlibparse-pidl-perl
) reproducible. - Dmitry Shachnev uploaded sphinx/1.3.1-1 in experimental which should produce deterministic output. The original patch from Chris Lamb has inspired the upstream fix.
- gregor herrmann uploaded libextutils-depends-perl/0.404-1 which makes ExtUtils::Depends output deterministic. Original patch by Reiner Herrmann.
- Niko Tyni uploaded perl/5.20.2-4 which makes the output of Pod::Man reproducible. Nice team work visible on #780259.
We also rebased the experimental version of debhelper twice to merge the latest set of changes.
Lunar submitted a patch to add a -creation-
date
to genisoimage
.
Reiner Herrmann opened #783938 to request
making -notimestamp
the default behavior for javadoc
.
Juan Picca submitted a patch to add a
--use-date
flag to texi2html
.
Packages fixed
The following packages became reproducible due to changes of their build dependencies: apport, batctl, cil, commons- math3, devscripts, disruptor, ehcache, ftphs, gtk2hs- buildtools, haskell-abstract- deque, haskell-abstract- par, haskell-acid- state, haskell- adjunctions, haskell- aeson, haskell-aeson- pretty, haskell- alut, haskell-ansi- terminal, haskell- async, haskell- attoparsec, haskell- augeas, haskell-auto- update, haskell-binary- conduit, haskell- hscurses, jsch, ledgersmb, libapache2-mod-auth- mellon, libarchive- tar-wrapper-perl, libbusiness-onlinepayment-payflowpro- perl, libcapture-tiny-perl, libchi-perl, libcommons-codec- java, libconfig-model- itself-perl, libconfig-model-tester-perl, libcpan-perl-releases-perl, libcrypt-unixcrypt- perl, libdatetime- timezone-perl, libdbd- firebird-perl, libdbix- class-resultset-recursiveupdate-perl, libdbix-profile- perl, libdevel-cover- perl, libdevel-ptkdb- perl, libfile-tail- perl, libfinance-quote- perl, libformat-human- bytes-perl, libgtk2-perl, libhibernate- validator-java, libimage-exiftool-perl, libjson-perl, liblinux-prctl- perl, liblog-any- perl, libmail-imapclient- perl, libmocked- perl, libmodule-build-xsutil- perl, libmodule- extractuse-perl, libmodule-signature-perl, libmoosex-simpleconfig-perl, libmoox-handlesvia- perl, libnet-frame- layer-ipv6-perl, libnet-openssh-perl, libnumber-format-perl, libobject-id-perl, libpackage-pkg-perl, libpdf-fdf-simple-perl, libpod-webserver-perl, libpoe-component-pubsub-perl, libregexp-grammars-perl, libreply-perl, libscalar-defer-perl, libsereal-encoder-perl, libspreadsheet-read-perl, libspring-java, libsql- abstract-more-perl, libsvn-class-perl, libtemplate-plugin-gravatar-perl, libterm-progressbar- perl, libterm-shellui- perl, libtest-dir- perl, libtest-log4perl- perl, libtext-context- eitherside-perl, libtime-warp-perl, libtree- simple-perl, libwww-shorten- simple-perl, libwx- perl-processstream-perl, libxml-filter-xslt-perl, libxml-writer-string-perl, libyaml-tiny-perl, mupen64plus-core, nmap, openssl, pkg-perl- tools, quodlibet, r-cran- rjags, r-cran- rjson, r-cran- sn, r-cran- statmod, ruby- nokogiri, sezpoz, skksearch, slurm- llnl, stellarium.
The following packages became reproducible after getting fixed:
- berkeley-abc/1.01+20141105hg5b5af75+dfsg-3 uploaded by Ruben Undheim, original patch by Johann Klammer.
- binutils/2.25-7 by Matthias Klose.
- bitmap-mule/8.5+0.20030825.0433-16 uploaded by Tatsuya Kinoshita, original patch by Chris Lamb.
- blobby/1.0-2 by Felix Geyer.
- codelite/7.0+dfsg-2 by James Cowgill.
- conkeror/1.0~~pre-1+git150409-1 by Axel Beckert.
- convmv/1.15-1 by Christian Perrier.
- cpl/6.6~b-1 by Ole Streicher.
- deheader/1.1-2 by Reiner Herrmann.
- dict-foldoc/20150318-1 uploaded by Iustin Pop, original patch by Chris Lamb.
- ding/1.8-1 by Roland Rosenfeld.
- doc-rfc/20150425-1 by Iustin Pop.
- doxygen/1.8.9.1-3 by Helmut Grohne.
- eureka/1.07-1 by Fabian Greffrath.
- eximdoc4/4.85-2 uploaded by Andreas Metzler, original patch by Chris Lamb.
- flashproxy/1.7-3 by Ximin Luo.
- heimdal/1.6~rc2+dfsg-10 by Jelmer Vernooij.
- init-system-helpers/1.23 by Martin Pitt original patch by Lunar.
- ldb/2:1.1.20-2 by Jelmer Vernooij.
- libalien-wxwidgets-perl/0.67+dfsg-1 uploaded by gregor herrmann, original patch by Chris Lamb.
- libcairo-perl/1.105-1 by intrigeri.
- libclass-methodmaker-perl/2.24-1 uploaded by gregor herrmann, original patch by Chris Lamb.
- libcommon-sense-perl/3.73-3 uploaded by gregor herrmann, original patch by Chris Lamb.
- libelixirfm-perl/1.1.976-4 uploaded by gregor herrmann, original patch by Chris Lamb.
- libgnome2-perl/1.045-3 by intrigeri.
- libjs-jcrop/0.9.12+dfsg-2 uploaded by David Prévot, original patch by Chris Lamb.
- liblas/1.8.0-2 by Bas Couwenberg.
- libopengl-perl/0.6704+dfsg-1 uploaded by gregor herrmann, original patch by Chris Lamb.
- libparse-recdescent-perl/1.967009+dfsg-2 uploaded by gregor herrmann, original patch by Reiner Herrmann.
- librasterlite/1.1g-5 by Bas Couwenberg.
- libterm-size-perl-perl/0.029-2 uploaded by gregor herrmann, original patch by Chris Lamb.
- libvdpau/1.1-1 by Andreas Beckmann.
- libxml-sax-expatxs-perl/1.33-2 uploaded by gregor herrmann, original patch by Chris Lamb.
- lynx-cur/2.8.9dev4-2 by Axel Beckert.
- mapcache/1.2.1-3 by Bas Couwenberg.
- mdbtools/0.7.1-4 by Jean-Michel Nirgal Vourgère.
- mopidy uploaded by Stein Magnus Jodal, fixed by upstream.
- objenesis/2.1-1 by Markus Koschany.
- opendkim/2.10.1-2 uploaded by Scott Kitterman, original patch by Reiner Herrmann.
- pktools/2.6.3-1 by Bas Couwenberg.
- posh/0.12.4 uploaded by Clint Adams, original patch by Chris Lamb.
- prboom-plus/2:2.5.1.4~svn4425+dfsg1-1 by Fabian Greffrath.
- qlandkartegt/1.8.1+ds-1 by Bas Couwenberg.
- readosm/1.0.0d-1~exp2 by Bas Couwenberg.
- robocode/1.9.2.4-1 by Markus Koschany.
- ruby-prawn/2.0.1+dfsg-1 uploaded by Cédric Boutillier, original patch by Lunar.
- sane-backends/1.0.25+git20150425-1 by Jörg Frings-Fürst.
- scoop/0.7.1-3 by Daniel Stender.
- springlobby/0.218-1 by Markus Koschany.
- subvertpy/0.9.2-1 by Jelmer Vernooij.
- t-prot/3.4-2 by Axel Beckert.
- talloc/2.1.2-3 by Jelmer Vernooij.
- tdb/1.3.4-2 by Jelmer Vernooij, patch now applied by upstream.
- tk-html3/3.0~fossil20110109-5 by Ole Streicher.
- tox/1.9.2-2 uploaded by Barry Warsaw original patch by Reiner Herrmann.
- trove3/3.0.3-2 by Erich Schubert.
- txt2man/1.5.6-2 uploaded by Joao Eriberto Mota Filho, initial patch by Jonathan Wiltshire.
- units/2.11-2 by Stephen Kitt.
- win32-loader/0.7.10 upload by Didier Raboud, original patch by Lunar.
- zec/0.12-3 uploaded by Clint Adams, original patch by Chris Lamb.
- zomg/0.8-1 uploaded by Clint Adams, original patch by Chris Lamb.
Some uploads fixed some reproducibility issues but not all of them:
- ada-reference-manual/1:2012.2-4 by Nicolas Boulenguez.
- adacontrol/1.16r11-3 by Nicolas Boulenguez.
- aspectj/1.8.5-1 by Emmanuel Bourg.
- binutils-m68hc1x/1:2.18-4 uploaded by Riku Voipio, original patch by Chris Lamb.
- debianutils/4.5) uploaded by Clint Adams, original patch by Lunar.
- ioquake3/1.36+u20150412+dfsg1-1 by Simon McVittie.
- libsdl1.2/1.2.15-11 uploaded by Manuel A. Fernandez Montecelo, original patch by Chris Lamb; currently FTBFS.
- libsdl2/2.0.2+dfsg1-7 by Manuel A. Fernandez Montecelo, original patch by Chris Lamb; currently FTBFS.
- nedit/1:5.6a-2 by Paul Gevers.
- openarena-085-data/0.8.5split-4 by Simon McVittie.
- openarena-data/0.8.5split-4 by Simon McVittie.
- openarena/0.8.8-12 by Simon McVittie.
- openchange/1:2.2-6 by Jelmer Vernooij.
- puredata/0.46.6-1 by IOhannes m zmölnig.
- pyexiv2/0.3.2-8 by Michal Čihař; currently FTBFS.
- quakespasm/0.90.0-2 by Stephen Kitt.
- sed/4.2.2-5 by Clint Adams, patch by Lunar.
- v4l2loopback/0.8.0-5 uploaded by IOhannes m zmölnig, original patch by Chris Lamb.
- vim/2:7.4.712-1 uploaded by James McCoy, original patch by Reiner Herrmann.
- zookeeper/3.4.6-4 by Emmanuel Bourg.
Patches submitted which did not make their way to the archive yet:
- #783882 on jodconverter by Reiner Herrmann: tell javadoc to stop writing timestamps.
- #783885 on bind9 by Reiner Herrmann: pass
-DNO_VERSION_DATE
to build system. - #783688 on serverstats by Chris Lamb: fix permissions.
- #783453 on cdbackup by Chris Lamb: remove build date from version string in binary.
- #783478 on texi2html by Juan Picca: pass
--use-date
totexi2html
. - #783933 on imagemagick by Reiner Herrmann: remove timestamps from PNG and use deterministic package build date.
- #783515 on memtest86+ by Lunar: fix embedded mtimes and pass
-creation-date
togenisoimage
. - #783558 on websvn by Chris Lamb: fix permissions.
Improvements to reproducible.debian.net
Mattia Rizzolo has been working on compressing logs using gzip to save disk space. The web server would uncompress them on-the-fly for clients which does not accept gzip content.
Mattia Rizzolo worked on a new page listing various
breakage: missing or
bad debbindiff
output, missing build logs, unavailable build dependencies.
Holger Levsen added a new execution environment to run debbindiff
using
dependencies from testing. This is required for packages built with GHC as
the compiler only understands interfaces built by the same version.
debbindiff development
Version 17 has been uploaded to unstable. It now supports comparing ISO9660 images, dictzip files and should compare identical files much faster.
Documentation update
Various small updates and fixes to the pages about PDF produced by LaTeX, DVI produced by LaTeX, static libraries, Javadoc, PE binaries, and Epydoc.
Package reviews
Known issues have been tagged when known to be deterministic as some might unfortunately not show up on every single build.
For example, two new issues have been identified by building with one timezone in April and one in May. RD and help2man add current month and year to the documentation they are producing.
1162 packages have been removed and 774 have been added in the past week. Most of them are the work of proper automated investigation done by Chris West.
Summer of code
Finally, we learned that both akira and Dhole were accepted for this Google Summer of Code. Let’s welcome them!
They have until May 25th before “coding” officialy begins. Now is the good time to help them feel more comfortable by sharing all these little bits of knowledge on how Debian works.