Lunar: Reproducible builds: week 10 in Stretch cycle
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.
--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.
- 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.
- #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..
- 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.