[Reproducible-builds] Bug#818430: ruby-coveralls: please make the build reproducible
Source: ruby-coveralls Version: 0.7.0-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: locale X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that ruby-coveralls could not be built reproducibly. When generating the manpages, ronn uses the local timezone in the embedded timestamps. The attached patch fixes this by setting the timezone to UTC before calling ronn. Once applied, ruby-coveralls can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru ruby-coveralls-0.7.0/debian/changelog ruby-coveralls-0.7.0/debian/changelog --- ruby-coveralls-0.7.0/debian/changelog 2015-12-15 18:17:57.0 +0100 +++ ruby-coveralls-0.7.0/debian/changelog 2016-03-16 22:55:08.0 +0100 @@ -1,3 +1,11 @@ +ruby-coveralls (0.7.0-2.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Set a deterministic date in the manpages to make the package build +reproducibly. + + -- Eduard Sanou Wed, 16 Mar 2016 22:52:56 +0100 + ruby-coveralls (0.7.0-2) unstable; urgency=low * Add missing B-D on ruby-multi-json. (Closes: #802116). diff -Nru ruby-coveralls-0.7.0/debian/rules ruby-coveralls-0.7.0/debian/rules --- ruby-coveralls-0.7.0/debian/rules 2014-03-05 00:51:37.0 +0100 +++ ruby-coveralls-0.7.0/debian/rules 2016-03-17 00:15:04.0 +0100 @@ -16,7 +16,7 @@ override_dh_auto_build: dh_auto_build - ronn --roff debian/coveralls.mkd + TZ=UTC ronn --roff debian/coveralls.mkd override_dh_auto_clean: dh_auto_clean signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#818431: seqprep: please make the build reproducible
Source: seqprep Version: 1.1-4 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: locale X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that seqprep could not be built reproducibly. When generating the manpages, ronn uses the local timezone in the embedded timestamps. The attached patch fixes this by setting the timezone to UTC before calling ronn. Once applied, seqprep can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru seqprep-1.1/debian/changelog seqprep-1.1/debian/changelog --- seqprep-1.1/debian/changelog2015-09-28 13:46:56.0 +0200 +++ seqprep-1.1/debian/changelog2016-03-17 00:06:55.0 +0100 @@ -1,3 +1,11 @@ +seqprep (1.1-4.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Fix timezone to UTC when building manpages to get reproducible embedded +dates. + + -- Eduard Sanou Thu, 17 Mar 2016 00:06:36 +0100 + seqprep (1.1-4) unstable; urgency=medium * Really apply patch created by Graham Inggs diff -Nru seqprep-1.1/debian/rules seqprep-1.1/debian/rules --- seqprep-1.1/debian/rules2015-09-28 08:12:13.0 +0200 +++ seqprep-1.1/debian/rules2016-03-17 00:06:19.0 +0100 @@ -9,7 +9,7 @@ override_dh_auto_build: dh_auto_build cp SeqPrep seqprep - ronn -r --manual=seqprep --organization='Cancer Therapeutics Innovation Group' debian/seqprep.1.ronn + TZ=UTC ronn -r --manual=seqprep --organization='Cancer Therapeutics Innovation Group' debian/seqprep.1.ronn markdown_py -f README.html README.md override_dh_clean: signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#819325: angular.js: please make the build reproducible
Source: angular.js Version: 1.3.20-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: locale X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that angular.js could not be built reproducibly. When processing translation files and using a non-UTF8 locale, grep misdetects them as binary files and embeds the line: "Binary file (standard input) matches" The attached patch fixes this by telling grep to treat the input as text. Once applied, angular.js can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru angular.js-1.3.20/debian/changelog angular.js-1.3.20/debian/changelog --- angular.js-1.3.20/debian/changelog 2016-03-14 16:57:49.0 +0100 +++ angular.js-1.3.20/debian/changelog 2016-03-25 23:51:20.0 +0100 @@ -1,3 +1,10 @@ +angular.js (1.3.20-2.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Fix misdetection as binary input in grep when LC_ALL=C + + -- Eduard Sanou Fri, 25 Mar 2016 23:50:43 +0100 + angular.js (1.3.20-2) unstable; urgency=low * Don't ship minified files until uglifyjs is updated (closes: #815865). diff -Nru angular.js-1.3.20/debian/rules angular.js-1.3.20/debian/rules --- angular.js-1.3.20/debian/rules 2016-03-14 16:54:56.0 +0100 +++ angular.js-1.3.20/debian/rules 2016-03-25 23:50:34.0 +0100 @@ -33,7 +33,7 @@ echo \'use strict\'\;) \ >$(CURDIR)/debian/build/angular.js-head ln -s $(CURDIR)/debian/smash-angularSrc.js $(CURDIR) - smash $(CURDIR)/smash-angularSrc.js | egrep -v 'use strict' \ + smash $(CURDIR)/smash-angularSrc.js | egrep -a -v 'use strict' \ >$(CURDIR)/debian/build/angular.js-body cat $(CURDIR)/debian/build/angular.js-head \ $(CURDIR)/debian/build/angular.js-body \ @@ -108,7 +108,7 @@ (cat $(CURDIR)/src/module.prefix && \ echo \'use strict\'\;) \ >$(CURDIR)/debian/build/angular.js-module_head - smash $(CURDIR)/smash-ngRoute.js | egrep -v 'use strict' \ + smash $(CURDIR)/smash-ngRoute.js | egrep -a -v 'use strict' \ >$(CURDIR)/debian/build/angular.js-route_body cat $(CURDIR)/debian/build/angular.js-module_head \ $(CURDIR)/debian/build/angular.js-route_body | \ @@ -120,7 +120,7 @@ # angular-sanitize.js ln -s $(CURDIR)/debian/smash-ngSanitize.js $(CURDIR) - smash $(CURDIR)/smash-ngSanitize.js | egrep -v 'use strict' \ + smash $(CURDIR)/smash-ngSanitize.js | egrep -a -v 'use strict' \ >$(CURDIR)/debian/build/angular.js-sanitize_body cat $(CURDIR)/debian/build/angular.js-module_head \ $(CURDIR)/debian/build/angular.js-sanitize_body | \ @@ -132,7 +132,7 @@ # angular-touch.js ln -s $(CURDIR)/debian/smash-ngTouch.js $(CURDIR) - smash $(CURDIR)/smash-ngTouch.js | egrep -v 'use strict' \ + smash $(CURDIR)/smash-ngTouch.js | egrep -a -v 'use strict' \ >$(CURDIR)/debian/build/angular.js-touch_body cat $(CURDIR)/debian/build/angular.js-module_head \ $(CURDIR)/debian/build/angular.js-touch_body | \ @@ -147,7 +147,7 @@ ((cat $(CURDIR)/src/loader.prefix | egrep -v 'use strict') && \ echo \'use strict\'\;) \ >$(CURDIR)/debian/build/angular.js-loader_head - smash $(CURDIR)/smash-angularLoader.js | egrep -v 'use strict' \ + smash $(CURDIR)/smash-angularLoader.js | egrep -a -v 'use strict' \ >$(CURDIR)/debian/build/angular.js-loader_body cat $(CURDIR)/debian/build/angular.js-loader_head \ $(CURDIR)/debian/build/angular.js-loader_body | \ signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#820745: gap: please make the build reproducible
Source: gap Version: 4r7p9-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that gap embeds timestamps of the current time in htm files generated by etc/convert.pl. This makes packages that use etc/convert.pl generate unreproducible documentation files. The attached patch fixes this by making convert.pl embed the date taken from the SOURCE_DATE_EPOCH env var if this env var is set, or the localtime otherwise. Once applied, convert.pl can generate reproducible htm files in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru gap-4r7p9/debian/changelog gap-4r7p9/debian/changelog --- gap-4r7p9/debian/changelog 2015-12-07 20:06:14.0 +0100 +++ gap-4r7p9/debian/changelog 2016-04-10 18:36:58.0 +0200 @@ -1,3 +1,10 @@ +gap (4r7p9-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Honour SOURCE_DATE_EPOCH when embedding timestamps in convert.pl + + -- Eduard Sanou Sun, 10 Apr 2016 18:36:37 +0200 + gap (4r7p9-1) unstable; urgency=low * New upstream release diff -Nru gap-4r7p9/debian/patches/honour-SOURCE_DATE_EPOCH-in-convert.pl.patch gap-4r7p9/debian/patches/honour-SOURCE_DATE_EPOCH-in-convert.pl.patch --- gap-4r7p9/debian/patches/honour-SOURCE_DATE_EPOCH-in-convert.pl.patch 1970-01-01 01:00:00.0 +0100 +++ gap-4r7p9/debian/patches/honour-SOURCE_DATE_EPOCH-in-convert.pl.patch 2016-04-11 23:19:31.0 +0200 @@ -0,0 +1,57 @@ +Description: Honour SOURCE_DATE_EPOCH in convert.pl + Honour SOURCE_DATE_EPOCH in convert.pl when embedding timestamps in the + html files. +Author: Eduard Sanou + +Index: gap-4r7p9/etc/convert.pl +=== +--- gap-4r7p9.orig/etc/convert.pl gap-4r7p9/etc/convert.pl +@@ -140,6 +140,7 @@ + $] > 5 or die "Needs perl 5"; + + use Getopt::Std; ++use POSIX qw(strftime setlocale LC_TIME); + + $gaproot="/usr/share/gap/"; + #Added by Bill Allombert to absorb ../../.. from caller. Any pkg/*/* would do. +@@ -410,8 +411,26 @@ sub printchaps { + } + } + +-# Printed at the bottom of every page. +-$footer = "\n" . sansserif( "GAP 4 manual" . `date +"%B %Y"` ) . ++# ++# Get the local date or a reproducible date from the environment variable ++# SOURCE_DATE_EPOCH if set. ++# ++sub get_date { ++ my $date = ""; ++ ++ if (defined $ENV{SOURCE_DATE_EPOCH}) { ++ my $locale = setlocale(LC_TIME); ++ setlocale(LC_TIME, "C"); ++ $date = strftime("%B %Y", gmtime($ENV{SOURCE_DATE_EPOCH})); ++ setlocale(LC_TIME, $locale); ++ } else { ++ $date = strftime("%B %Y", gmtime(time)); ++ } ++ ++ return $date; ++} ++ ++$footer = "\n" . sansserif( "GAP 4 manual" . get_date ) . + ""; + + # Section label ... this is the bit that goes after a # in an HREF link +@@ -2091,8 +2110,8 @@ if ($opt_n) { + $booktitle = "$opt_n : a GAP 4 package"; + $booktitle_body = booktitle_body($booktitle, ("GAP", $opt_n)); + $mainman=0; +- $footer = "\n$opt_n manual" . +-`date +"%B %Y"` . ""; ++ $footer = "\n$opt_n manual" . get_date . ++""; + #print "c: $opt_c \n"; + } else { + if ($opt_f) { diff -Nru gap-4r7p9/debian/patches/series gap-4r7p9/debian/patches/series --- gap-4r7p9/debian/patches/series 2015-06-17 18:27:52.0 +0200 +++ gap-4r7p9/debian/patches/series 2016-04-10 18:37:18.0 +0200 @@ -8,3 +8,4 @@ upstream-env-tmpdir fix-basecc fix-testinstall.g +honour-SOURCE_DATE_EPOCH-in-convert.pl.patch signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#822268: transdecoder: please make the build reproducible
Source: transdecoder Version: 2.0.1+dfsg-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: randomness X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that transdecoder could not be built reproducibly. When generating some sample files (sample_data/transcripts.fasta) a Perl script is used (cufflinks_gtf_genome_to_cdna_fasta.pl) that loops through a dictionary producing unreproducible output. The attached patch fixes this by setting the env var PERL_HASH_SEED to 0 before calling this script to get a reproducible output when looping through the hash keys. Once applied, transdecoder can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru transdecoder-2.0.1+dfsg/debian/changelog transdecoder-2.0.1+dfsg/debian/changelog --- transdecoder-2.0.1+dfsg/debian/changelog2015-12-29 00:54:39.0 +0100 +++ transdecoder-2.0.1+dfsg/debian/changelog2016-04-22 20:42:48.0 +0200 @@ -1,3 +1,11 @@ +transdecoder (2.0.1+dfsg-2.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Set a hash seed for Perl before generating sample_data/transcripts.fasta +to get a reproducible output. + + -- Eduard Sanou Fri, 22 Apr 2016 20:42:02 +0200 + transdecoder (2.0.1+dfsg-2) unstable; urgency=medium [ Andreas Tille ] diff -Nru transdecoder-2.0.1+dfsg/debian/patches/reproducible-sample_data.patch transdecoder-2.0.1+dfsg/debian/patches/reproducible-sample_data.patch --- transdecoder-2.0.1+dfsg/debian/patches/reproducible-sample_data.patch 1970-01-01 01:00:00.0 +0100 +++ transdecoder-2.0.1+dfsg/debian/patches/reproducible-sample_data.patch 2016-04-22 20:43:56.0 +0200 @@ -0,0 +1,16 @@ +Description: Make the sample data reproducible + Set a fixed hash seed for Perl before generating sample_data/transcripts.fasta + to get reproducible results +Author: Eduard Sanou + +--- transdecoder-2.0.1+dfsg.orig/sample_data/runMe.sh transdecoder-2.0.1+dfsg/sample_data/runMe.sh +@@ -26,7 +26,7 @@ fi + ../util/cufflinks_gtf_to_alignment_gff3.pl transcripts.gtf > transcripts.gff3 + + ## generate transcripts fasta file +-../util/cufflinks_gtf_genome_to_cdna_fasta.pl transcripts.gtf test.genome.fasta > transcripts.fasta ++PERL_HASH_SEED=0 ../util/cufflinks_gtf_genome_to_cdna_fasta.pl transcripts.gtf test.genome.fasta > transcripts.fasta + + ## Extract the long ORFs + ../TransDecoder.LongOrfs -t transcripts.fasta diff -Nru transdecoder-2.0.1+dfsg/debian/patches/series transdecoder-2.0.1+dfsg/debian/patches/series --- transdecoder-2.0.1+dfsg/debian/patches/series 2015-12-29 00:54:39.0 +0100 +++ transdecoder-2.0.1+dfsg/debian/patches/series 2016-04-22 20:43:08.0 +0200 @@ -1,3 +1,4 @@ cd-hit-est-rename fix-whatis reproducible-build +reproducible-sample_data.patch signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#828680: debiandoc-sgml-doc-pt-br: please make the build reproducible
Source: debiandoc-sgml-doc-pt-br Version: 1.1.12+nm Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: locale X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that debiandoc-sgml-doc-pt-br could not be built reproducibly. When generating the documentation files, a timestamp of the current month and year is embedded. The attached patch fixes this by setting the timestamp to a reproducible value. Once applied, debiandoc-sgml-doc-pt-br can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru debiandoc-sgml-doc-pt-br-1.1.12/debian/changelog debiandoc-sgml-doc-pt-br-1.1.12+nmu1/debian/changelog --- debiandoc-sgml-doc-pt-br-1.1.12/debian/changelog2016-02-03 12:48:25.0 +0100 +++ debiandoc-sgml-doc-pt-br-1.1.12+nmu1/debian/changelog 2016-06-25 20:47:02.0 +0200 @@ -1,3 +1,10 @@ +debiandoc-sgml-doc-pt-br (1.1.12+nmu1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Replace debiandoc timestamp by SOURCE_DATE_EPOCH. + + -- Eduard Sanou Sat, 25 Jun 2016 20:46:48 +0200 + debiandoc-sgml-doc-pt-br (1.1.12) unstable; urgency=medium * Use onsgml for the migration from sp to opensp. Closes: #812188 diff -Nru debiandoc-sgml-doc-pt-br-1.1.12/debian/rules debiandoc-sgml-doc-pt-br-1.1.12+nmu1/debian/rules --- debiandoc-sgml-doc-pt-br-1.1.12/debian/rules2016-02-02 10:21:32.0 +0100 +++ debiandoc-sgml-doc-pt-br-1.1.12+nmu1/debian/rules 2016-06-26 00:15:08.0 +0200 @@ -7,6 +7,10 @@ ## uncomment this to turn on verbose mode #export DH_VERBOSE=1 +ifdef SOURCE_DATE_EPOCH + export DEBIANDOC_DATE ?= $(shell LC_ALL=pt_BR date -u -d "@$(SOURCE_DATE_EPOCH)" +"%d %B %Y") +endif + ## -- ## Targets signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#828790: debiandoc-sgml-doc: please make the build reproducible
Source: debiandoc-sgml-doc Version: 1.1.24+nm Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: locale X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that debiandoc-sgml-doc could not be built reproducibly. When generating the documentation files, a timestamp of the last changelog entry is embedded in the local timezone. The attached patch fixes this setting the timestamp to UTC. Once applied, debiandoc-sgml-doc can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru debiandoc-sgml-doc-1.1.24/debian/changelog debiandoc-sgml-doc-1.1.24+nmu1/debian/changelog --- debiandoc-sgml-doc-1.1.24/debian/changelog 2015-08-12 18:31:34.0 +0200 +++ debiandoc-sgml-doc-1.1.24+nmu1/debian/changelog 2016-06-27 21:34:23.0 +0200 @@ -1,3 +1,10 @@ +debiandoc-sgml-doc (1.1.24+nmu1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Set the embedded date to UTC to make it reproducible. + + -- Eduard Sanou Mon, 27 Jun 2016 21:34:14 +0200 + debiandoc-sgml-doc (1.1.24) unstable; urgency=medium * Reproducible build with the new debiandoc-sgml 1.2.31-1. diff -Nru debiandoc-sgml-doc-1.1.24/debian/rules debiandoc-sgml-doc-1.1.24+nmu1/debian/rules --- debiandoc-sgml-doc-1.1.24/debian/rules 2015-08-12 18:18:25.0 +0200 +++ debiandoc-sgml-doc-1.1.24+nmu1/debian/rules 2016-06-27 21:34:09.0 +0200 @@ -8,7 +8,7 @@ #export DH_VERBOSE=1 # Reproduceble build -DEBIANDOC_DATE ?= $(shell date +'%Y-%m-%d' -d"`dpkg-parsechangelog -SDate`") +DEBIANDOC_DATE ?= $(shell date --utc +'%Y-%m-%d' -d"`dpkg-parsechangelog -SDate`") export DEBIANDOC_DATE ## -- signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#828994: syncthing: please make the build reproducible
Source: syncthing Version: 0.13.4+dfsg1-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: locale X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that syncthing could not be built reproducibly. genassets.go embeds a timestamp of the localtime to a source code file generated during the build. The attached patch fixes this replacing the local timestamp by SOURCE_DATE_EPOCH if defined. Once applied, syncthing can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru syncthing-0.13.4+dfsg1/debian/changelog syncthing-0.13.4+dfsg1/debian/changelog --- syncthing-0.13.4+dfsg1/debian/changelog 2016-06-01 16:29:56.0 +0200 +++ syncthing-0.13.4+dfsg1/debian/changelog 2016-06-29 15:50:58.0 +0200 @@ -1,3 +1,10 @@ +syncthing (0.13.4+dfsg1-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Use SOURCE_DATE_EPOCH as embedded timestamp by genassets.go if defined. + + -- Eduard Sanou Wed, 29 Jun 2016 15:49:38 +0200 + syncthing (0.13.4+dfsg1-1) unstable; urgency=medium * Added missing CC-BY-SA-4.0 section in d/copyright diff -Nru syncthing-0.13.4+dfsg1/debian/patches/series syncthing-0.13.4+dfsg1/debian/patches/series --- syncthing-0.13.4+dfsg1/debian/patches/series2016-06-01 16:29:56.0 +0200 +++ syncthing-0.13.4+dfsg1/debian/patches/series2016-06-29 15:51:12.0 +0200 @@ -1,2 +1,3 @@ use-packaged-gateway.patch genxdr-command.patch +use-SOURCE_DATE_EPOCH.patch diff -Nru syncthing-0.13.4+dfsg1/debian/patches/use-SOURCE_DATE_EPOCH.patch syncthing-0.13.4+dfsg1/debian/patches/use-SOURCE_DATE_EPOCH.patch --- syncthing-0.13.4+dfsg1/debian/patches/use-SOURCE_DATE_EPOCH.patch 1970-01-01 01:00:00.0 +0100 +++ syncthing-0.13.4+dfsg1/debian/patches/use-SOURCE_DATE_EPOCH.patch 2016-06-29 15:52:18.0 +0200 @@ -0,0 +1,46 @@ +Description: Use SOURCE_DATE_EPOCH in genassets.go + Use SOURCE_DATE_EPOCH if defined as the embedded timestamp by genassets.go to + make the generated file reproducible. +Author: Eduard Sanou + +--- syncthing-0.13.4+dfsg1.orig/script/genassets.go syncthing-0.13.4+dfsg1/script/genassets.go +@@ -13,11 +13,13 @@ import ( + "compress/gzip" + "encoding/base64" + "flag" ++ "fmt" + "go/format" + "io" + "net/http" + "os" + "path/filepath" ++ "strconv" + "strings" + "text/template" + "time" +@@ -93,10 +95,23 @@ func main() { + flag.Parse() + + filepath.Walk(flag.Arg(0), walkerFor(flag.Arg(0))) ++ ++ source_date_epoch := os.Getenv("SOURCE_DATE_EPOCH") ++ var build_date string ++ if source_date_epoch == "" { ++ build_date = time.Now().UTC().Format(http.TimeFormat) ++ } else { ++ sde, err := strconv.ParseInt(source_date_epoch, 10, 64) ++ if err != nil { ++ panic(fmt.Sprintf("Invalid SOURCE_DATE_EPOCH: %s", err)) ++ } ++ build_date = time.Unix(sde, 0).UTC().Format(http.TimeFormat) ++ } ++ + var buf bytes.Buffer + tpl.Execute(&buf, templateVars{ + Assets:assets, +- BuildDate: time.Now().UTC().Format(http.TimeFormat), ++ BuildDate: build_date, + }) + bs, err := format.Source(buf.Bytes()) + if err != nil { signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Re: [Reproducible-builds] Bug#828994: syncthing: please make the build reproducible
I forgot to mention: please, consider sending this patch upstream as it is not Debian specific. Thanks, -- Dhole signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#830075: golang-github-kr-binarydist: please make the build reproducible
Source: golang-github-kr-binarydist Version: 0.0~git20120828.0.9955b0a-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: locale X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that golang-github-kr-binarydist could not be built reproducibly. When building the package, some test functions are run that generate random test files. The randomness for those test files is provided by the kernel (through the crypto/rand go package). The attached patch fixes this by generating deterministic pseudorandom test files instead (by means of the rand go package and setting a fixed seed). The function that creates this test files is only used for testing purposes, and as such, I believe there's no security concern. But I'm not familiar with the package, so please, double check it. Also, consider sending this patch upstream :) Once applied, golang-github-kr-binarydist can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/debian/changelog golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/debian/changelog --- golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/debian/changelog 2016-06-29 22:09:09.0 +0200 +++ golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/debian/changelog 2016-07-04 01:21:45.0 +0200 @@ -1,3 +1,10 @@ +golang-github-kr-binarydist (0.0~git20120828.0.9955b0a-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Make test files deterministic to make the package build reproducible. + + -- Eduard Sanou Mon, 04 Jul 2016 01:21:16 +0200 + golang-github-kr-binarydist (0.0~git20120828.0.9955b0a-1) unstable; urgency=medium * Initial release (Closes: 823342) diff -Nru golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/debian/patches/deterministic-test-files.patch golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/debian/patches/deterministic-test-files.patch --- golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/debian/patches/deterministic-test-files.patch 1970-01-01 01:00:00.0 +0100 +++ golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/debian/patches/deterministic-test-files.patch 2016-07-04 01:23:15.0 +0200 @@ -0,0 +1,56 @@ +Description: Deterministic test files + Make the files written during tests deterministic to make this package build + reproducible. +Author: Eduard Sanou + +--- golang-github-kr-binarydist-0.0~git20120828.0.9955b0a.orig/common_test.go golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/common_test.go +@@ -1,10 +1,10 @@ + package binarydist + + import ( +- "crypto/rand" + "io" + "io/ioutil" + "os" ++ "rand" + ) + + func mustOpen(path string) *os.File { +@@ -67,8 +67,9 @@ func fileCmp(a, b *os.File) int64 { + return -1 + } + +-func mustWriteRandFile(path string, size int) *os.File { ++func mustWriteRandFile(path string, size int, seed int64) *os.File { + p := make([]byte, size) ++ rand.Seed(seed) + _, err := rand.Read(p) + if err != nil { + panic(err) +--- golang-github-kr-binarydist-0.0~git20120828.0.9955b0a.orig/diff_test.go golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/diff_test.go +@@ -13,8 +13,8 @@ var diffT = []struct { + new *os.File + }{ + { +- old: mustWriteRandFile("test.old", 1e3), +- new: mustWriteRandFile("test.new", 1e3), ++ old: mustWriteRandFile("test.old", 1e3, 1), ++ new: mustWriteRandFile("test.new", 1e3, 2), + }, + { + old: mustOpen("testdata/sample.old"), +--- golang-github-kr-binarydist-0.0~git20120828.0.9955b0a.orig/patch_test.go golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/patch_test.go +@@ -8,8 +8,8 @@ import ( + ) + + func TestPatch(t *testing.T) { +- mustWriteRandFile("test.old", 1e3) +- mustWriteRandFile("test.new", 1e3) ++ mustWriteRandFile("test.old", 1e3, 1) ++ mustWriteRandFile("test.new", 1e3, 2) + + got, err := ioutil.TempFile("/tmp", "bspatch.") + if err != nil { diff -Nru golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/debian/patches/series golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/debian/patches/series --- golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/debian/patches/series 1970-01-01 01:00:00.0 +0100 +++ golang-github-kr-binarydist-0.0~git20120828.0.9955b0a/debian/patches/series 2016-07-04 01:22:10.0 +0200 @@ -0,0 +1 @@ +deterministic-test-files.patch signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#830922: kernel-handbook: please make the build reproducible
Source: kernel-handbook Version: 1.0.17+nm Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: locale X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that kernel-handbook could not be built reproducibly. A date and timestamp is embedded in the documentation using the local timezone and locale. The attached patch fixes this by fixing the timezone to UTC and the locale to "C" in the timestamp. Once applied, kernel-handbook can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru kernel-handbook-1.0.17/debian/changelog kernel-handbook-1.0.17+nmu1/debian/changelog --- kernel-handbook-1.0.17/debian/changelog 2016-03-07 03:08:15.0 +0100 +++ kernel-handbook-1.0.17+nmu1/debian/changelog2016-07-13 01:29:10.0 +0200 @@ -1,3 +1,10 @@ +kernel-handbook (1.0.17+nmu1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Fix locale and timezone in embedded timestamp to make it reproducible. + + -- Eduard Sanou Wed, 13 Jul 2016 01:28:52 +0200 + kernel-handbook (1.0.17) unstable; urgency=medium * debian/control: Change Vcs-Git and Vcs-Browser to canonical HTTP-S URLs diff -Nru kernel-handbook-1.0.17/Makefile kernel-handbook-1.0.17+nmu1/Makefile --- kernel-handbook-1.0.17/Makefile 2015-11-13 22:33:04.0 +0100 +++ kernel-handbook-1.0.17+nmu1/Makefile2016-07-13 01:37:47.0 +0200 @@ -1,5 +1,5 @@ version := $(shell dpkg-parsechangelog -SVersion) -date:= $(shell date -d "$$(dpkg-parsechangelog -SDate)") +date:= $(shell LC_ALL=C date --utc -d "$$(dpkg-parsechangelog -SDate)") LANG_PO := ja LANG_EN := en signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#832917: hyperscan: please make the build reproducible
Source: hyperscan Version: 4.2.0-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: locale X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that hyperscan could not be built reproducibly. During the build a timestamp is embedded in the compiled binaries. The attached patch fixes this by using SOURCE_DATE_EPOCH as the timestamp. Once applied, hyperscan can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru hyperscan-4.2.0/debian/changelog hyperscan-4.2.0/debian/changelog --- hyperscan-4.2.0/debian/changelog2016-07-25 21:15:48.0 +0200 +++ hyperscan-4.2.0/debian/changelog2016-07-29 15:39:02.0 +0200 @@ -1,3 +1,11 @@ +hyperscan (4.2.0-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Use SOURCE_DATE_EPOCH as embedded timestamp to make the build +reproducible. + + -- Eduard Sanou Fri, 29 Jul 2016 15:38:39 +0200 + hyperscan (4.2.0-1) unstable; urgency=medium * Initial release (Closes: #824838) diff -Nru hyperscan-4.2.0/debian/patches/reproducible-timestamp.patch hyperscan-4.2.0/debian/patches/reproducible-timestamp.patch --- hyperscan-4.2.0/debian/patches/reproducible-timestamp.patch 1970-01-01 01:00:00.0 +0100 +++ hyperscan-4.2.0/debian/patches/reproducible-timestamp.patch 2016-07-29 15:40:15.0 +0200 @@ -0,0 +1,27 @@ +Description: Reproducible timestamp + Use SOURCE_DATE_EPOCH as a timestamp to make the build reproducible. +Author: Eduard Sanou + +Index: hyperscan-4.2.0/CMakeLists.txt +=== +--- hyperscan-4.2.0.orig/CMakeLists.txt hyperscan-4.2.0/CMakeLists.txt +@@ -6,7 +6,17 @@ set (HS_MINOR_VERSION 2) + set (HS_PATCH_VERSION 0) + set (HS_VERSION ${HS_MAJOR_VERSION}.${HS_MINOR_VERSION}.${HS_PATCH_VERSION}) + +-string (TIMESTAMP BUILD_DATE "%Y-%m-%d") ++if (DEFINED ENV{SOURCE_DATE_EPOCH}) ++ execute_process( ++COMMAND "date" "-u" "-d" "@$ENV{SOURCE_DATE_EPOCH}" "+%Y-%m-%d" ++OUTPUT_VARIABLE BUILD_DATE ++OUTPUT_STRIP_TRAILING_WHITESPACE) ++else () ++ execute_process( ++COMMAND "date" "+%Y-%m-%d" ++OUTPUT_VARIABLE BUILD_DATE ++OUTPUT_STRIP_TRAILING_WHITESPACE) ++endif () + + set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) + include(CheckCCompilerFlag) diff -Nru hyperscan-4.2.0/debian/patches/series hyperscan-4.2.0/debian/patches/series --- hyperscan-4.2.0/debian/patches/series 1970-01-01 01:00:00.0 +0100 +++ hyperscan-4.2.0/debian/patches/series 2016-07-29 15:39:15.0 +0200 @@ -0,0 +1 @@ +reproducible-timestamp.patch signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Bug#848633: sugar-toolkit-gtk3: please make the build reproducible
Source: sugar-toolkit-gtk3 Version: 0.110.0-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: locale X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that sugar-toolkit-gtk3 generates unreproducible desktop files. When generating desktop files, translation files are iterated in a non-deterministic order. The attached patch fixes this by sorting the translation files used to generate the desktop file. Once applied, packages using sugar-toolkit-gtk3 can generate reproducible desktop files in our current experimental framework. Please, consider sending this patch upstream. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru sugar-toolkit-gtk3-0.110.0/debian/changelog sugar-toolkit-gtk3-0.110.0/debian/changelog --- sugar-toolkit-gtk3-0.110.0/debian/changelog 2016-12-12 19:00:52.0 +0100 +++ sugar-toolkit-gtk3-0.110.0/debian/changelog 2016-12-19 03:18:16.0 +0100 @@ -1,3 +1,10 @@ +sugar-toolkit-gtk3 (0.110.0-2.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Sort translation files when generating desktop file. + + -- Eduard Sanou Mon, 19 Dec 2016 03:18:16 +0100 + sugar-toolkit-gtk3 (0.110.0-2) unstable; urgency=medium * Modernize CDBS use: diff -Nru sugar-toolkit-gtk3-0.110.0/debian/patches/series sugar-toolkit-gtk3-0.110.0/debian/patches/series --- sugar-toolkit-gtk3-0.110.0/debian/patches/series2016-12-12 04:01:17.0 +0100 +++ sugar-toolkit-gtk3-0.110.0/debian/patches/series2016-12-19 03:18:16.0 +0100 @@ -1,3 +1,4 @@ 020161109~ee93ad3.patch 2002_ignore_debian_and_quilt-patches.patch #2003_bundlebuilder_exit_nonzero_on_error.patch +sort-translation-files.patch diff -Nru sugar-toolkit-gtk3-0.110.0/debian/patches/sort-translation-files.patch sugar-toolkit-gtk3-0.110.0/debian/patches/sort-translation-files.patch --- sugar-toolkit-gtk3-0.110.0/debian/patches/sort-translation-files.patch 1970-01-01 01:00:00.0 +0100 +++ sugar-toolkit-gtk3-0.110.0/debian/patches/sort-translation-files.patch 2016-12-19 03:18:16.0 +0100 @@ -0,0 +1,20 @@ +Description: Sort translation files + Sort translation files when generating the .desktop file to output reproducible results. +Author: Eduard Sanou + + +Index: sugar-toolkit-gtk3-0.110.0/src/sugar3/activity/bundlebuilder.py +=== +--- sugar-toolkit-gtk3-0.110.0.orig/src/sugar3/activity/bundlebuilder.py sugar-toolkit-gtk3-0.110.0/src/sugar3/activity/bundlebuilder.py +@@ -387,8 +387,8 @@ class Installer(Packager): + if info.has_option('Activity', 'summary'): + cp.set(section, 'Comment', info.get('Activity', 'summary')) + +-for path in glob(os.path.join(activity_path, 'locale', +- '*', 'activity.linfo')): ++for path in sorted(glob(os.path.join(activity_path, 'locale', ++ '*', 'activity.linfo'))): + locale = path.split(os.path.sep)[-2] + info = ConfigParser() + info.read(path) signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#788747: 0xffff: please make the build reproducible
Source: 0x Version: 0.6.1-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that 0x could not be built reproducibly. The attached patch removes extra timestamps from the build system. Specifically, the patch avoids the the usage of the __DATE__ and __TIME__ C macro which embed timestamps during the compilation and make the package build unreproducibly. Once applied, 0x can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Dhole diff -Nru 0x-0.6.1/debian/changelog 0x-0.6.1/debian/changelog --- 0x-0.6.1/debian/changelog 2015-05-27 17:45:22.0 +0200 +++ 0x-0.6.1/debian/changelog 2015-06-13 18:34:10.0 +0200 @@ -1,3 +1,10 @@ +0x (0.6.1-2.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. +- Remove timestamp from documentation to make package build reproducibly + + -- Dhole Sat, 13 Jun 2015 18:33:37 +0200 + 0x (0.6.1-2) unstable; urgency=medium * Upload to unstable diff -Nru 0x-0.6.1/debian/patches/remove_timestamp 0x-0.6.1/debian/patches/remove_timestamp --- 0x-0.6.1/debian/patches/remove_timestamp1970-01-01 01:00:00.0 +0100 +++ 0x-0.6.1/debian/patches/remove_timestamp2015-06-13 18:35:34.0 +0200 @@ -0,0 +1,33 @@ +Description: remove timestamp + Remove __DATE__ macro to make package reproducibly + . + 0x (0.6.1-2.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + - Remove timestamp from documentation to make package build reproducibly +Author: Dhole + + +--- 0x-0.6.1.orig/src/mangen.c 0x-0.6.1/src/mangen.c +@@ -34,7 +34,7 @@ int main() { + if ( ! pipe ) + return 1; + +- puts(".TH " NAME " 1 \"" __DATE__ "\" \"" NAME " " VERSION "\""); ++ puts(".TH " NAME " 1 \"" NAME " " VERSION "\""); + puts(""); + + puts(".SH NAME"); diff -Nru 0x-0.6.1/debian/patches/series 0x-0.6.1/debian/patches/series --- 0x-0.6.1/debian/patches/series 1970-01-01 01:00:00.0 +0100 +++ 0x-0.6.1/debian/patches/series 2015-06-13 18:34:53.0 +0200 @@ -0,0 +1 @@ +remove_timestamp signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#788748: abcm2ps: please make the build reproducible
Source: abcm2ps Version: 7.8.9-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that abcm2ps could not be built reproducibly. The attached patch removes extra timestamps from the build system. Specifically, the patch avoids the the usage of the __DATE__ and __TIME__ C macro which embed timestamps during the compilation and make the package build unreproducibly. Once applied, abcm2ps can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Dhole diff -Nru abcm2ps-7.8.9/debian/changelog abcm2ps-7.8.9/debian/changelog --- abcm2ps-7.8.9/debian/changelog 2014-10-18 23:38:31.0 +0200 +++ abcm2ps-7.8.9/debian/changelog 2015-06-13 18:51:51.0 +0200 @@ -1,3 +1,10 @@ +abcm2ps (7.8.9-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Remove compilation date to make package build reproducibly + + -- Dhole Sat, 13 Jun 2015 18:51:11 +0200 + abcm2ps (7.8.9-1) unstable; urgency=low * New upstream release (closes: #742296). diff -Nru abcm2ps-7.8.9/debian/patches/remove_compile_time abcm2ps-7.8.9/debian/patches/remove_compile_time --- abcm2ps-7.8.9/debian/patches/remove_compile_time1970-01-01 01:00:00.0 +0100 +++ abcm2ps-7.8.9/debian/patches/remove_compile_time2015-06-13 18:52:40.0 +0200 @@ -0,0 +1,22 @@ +Description: Remove compile time + . + abcm2ps (7.8.9-1.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Remove compilation date to make package build reproducibly +Author: Dhole + +--- + +--- abcm2ps-7.8.9.orig/abc2ps.c abcm2ps-7.8.9/abc2ps.c +@@ -321,8 +321,7 @@ static void display_version(int full) + fputs("abcm2ps-" VERSION " (" VDATE ")\n", stderr); + if (!full) + return; +- fputs("Compiled: " __DATE__ "\n" +- "Options:" ++ fputs("Options:" + #ifdef A4_FORMAT + " A4_FORMAT" + #endif diff -Nru abcm2ps-7.8.9/debian/patches/series abcm2ps-7.8.9/debian/patches/series --- abcm2ps-7.8.9/debian/patches/series 2014-10-18 18:38:51.0 +0200 +++ abcm2ps-7.8.9/debian/patches/series 2015-06-13 18:52:22.0 +0200 @@ -2,3 +2,4 @@ makefile-add-destdir makefile-install-ignore-docs non-resettable-pagenumber +remove_compile_time signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#788750: amideco: please make the build reproducible
Source: amideco Version: 0.31e-3.1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that amideco could not be built reproducibly. The attached patch removes extra timestamps from the build system. Specifically, the patch avoids the the usage of the __DATE__ and __TIME__ C macro which embed timestamps during the compilation and make the package build unreproducible. Once applied, amideco can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Dhole diff -u amideco-0.31e/debian/changelog amideco-0.31e/debian/changelog --- amideco-0.31e/debian/changelog +++ amideco-0.31e/debian/changelog @@ -1,3 +1,10 @@ +amideco (0.31e-4) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Remove timestamp from help to make package build reproducibly + + -- Dhole Sat, 13 Jun 2015 19:23:31 +0200 + amideco (0.31e-3.1) unstable; urgency=low * Non-maintainer upload. only in patch2: unchanged: --- amideco-0.31e.orig/src/amihelp.h +++ amideco-0.31e/src/amihelp.h @@ -29,7 +29,6 @@ "Compression schemes include: LZINT\n\n" "Modules marked with "IDSign" sign are compressed modules\n\n" "\tBug reports mailto: "SftEMail"\n" - "\t\tCompiled: %s, %s\n",__DATE__,__TIME__); #else printf( "\n"SftName" - Decompressor for AmiBIOSes only.\n" @@ -39,8 +38,8 @@ "Compression schemes include: LZINT\n\n" "Modules marked with "IDSign" sign are compressed modules\n\n" "\tBug reports mailto: "SftEMail"\n" - "\t\tCompiled: %s, %s with \n\t\t%s",__DATE__,__TIME__,__VERSION__); -#endif + "\t\tCompiled with \n\t\t%s",__VERSION__); +#endif printf("\n"); return( 0x20 ); signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#788751: amsynth: please make the build reproducible
Source: amsynth Version: 1.5.1-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that amsynth could not be built reproducibly. The attached patch removes extra timestamps from the build system. Specifically, the patch avoids the the usage of the __DATE__ and __TIME__ C macro which embed timestamps during the compilation and make the package build unreproducible. Once applied, amsynth can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Dhole diff -Nru amsynth-1.5.1/debian/changelog amsynth-1.5.1/debian/changelog --- amsynth-1.5.1/debian/changelog 2015-05-10 15:09:49.0 +0200 +++ amsynth-1.5.1/debian/changelog 2015-06-13 19:30:55.0 +0200 @@ -1,3 +1,10 @@ +amsynth (1.5.1-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Remove timestamp from help to make package build reproducibly + + -- Dhole Sat, 13 Jun 2015 19:29:52 +0200 + amsynth (1.5.1-1) unstable; urgency=medium * New upstream release. diff -Nru amsynth-1.5.1/debian/patches/remove_timestamp amsynth-1.5.1/debian/patches/remove_timestamp --- amsynth-1.5.1/debian/patches/remove_timestamp 1970-01-01 01:00:00.0 +0100 +++ amsynth-1.5.1/debian/patches/remove_timestamp 2015-06-13 19:31:20.0 +0200 @@ -0,0 +1,21 @@ +Description: Remove timestamp + . + amsynth (1.5.1-1.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Remove timestamp from help to make package build reproducibly +Author: Dhole + +--- + +--- amsynth-1.5.1.orig/src/main.cc amsynth-1.5.1/src/main.cc +@@ -324,7 +324,7 @@ int main( int argc, char *argv[] ) + while ((opt = getopt_long(argc, argv, "vhstdzxm:c:a:r:p:b:U:P:n:", longopts, &longindex)) != -1) { + switch (opt) { + case 'v': +- cout << PACKAGE_STRING << " -- compiled " << __DATE__ << " " << __TIME__ << endl; ++ cout << PACKAGE_STRING << endl; + return 0; + case 'h': + cout << help_text; diff -Nru amsynth-1.5.1/debian/patches/series amsynth-1.5.1/debian/patches/series --- amsynth-1.5.1/debian/patches/series 1970-01-01 01:00:00.0 +0100 +++ amsynth-1.5.1/debian/patches/series 2015-06-13 19:31:05.0 +0200 @@ -0,0 +1 @@ +remove_timestamp signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#788752: analog: please make the build reproducible
Source: analog Version: 2:6.0-20 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that analog could not be built reproducibly. The attached patch removes extra timestamps from the build system. Specifically, the patch avoids the the usage of the __DATE__ and __TIME__ C macro which embed timestamps during the compilation and make the package build unreproducible. Once applied, analog can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Dhole diff -u analog-6.0/debian/changelog analog-6.0/debian/changelog --- analog-6.0/debian/changelog +++ analog-6.0/debian/changelog @@ -1,3 +1,10 @@ +analog (2:6.0-22) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Remove timestamp from outxml.c to make package build reproducibly + + -- Dhole Sat, 13 Jun 2015 21:05:32 +0200 + analog (2:6.0-20) unstable; urgency=low * QA upload. only in patch2: unchanged: --- analog-6.0.orig/src/outxml.c +++ analog-6.0/src/outxml.c @@ -54,7 +54,6 @@ extern timecode_t starttimec; unsigned int year, month, day, i; - struct tm temptime; char *xmlversion = "1.0"; char *encoding = "UTF-8"; @@ -85,15 +84,10 @@ xml_defaults( opts ); // extract a build timestamp from __DATE__ and __TIME__ -- locale dependent?! need to force "C" locale ? - strptime( __DATE__" "__TIME__, "%b%n%d%n%Y%n%T", &temptime ); - - sprintf( buffer, "%04d%02d%02d%02d%02d", - temptime.tm_year+1900, temptime.tm_mon+1, temptime.tm_mday, temptime.tm_hour, temptime.tm_min ); code2date( starttimec/1440, &day, &month, &year); - + XML_OUT( XMLDBG "", VERSION ); - XML_OUT( XMLDBG "", buffer ); XML_OUT( XMLDBG " ", year, month+1, day, (int)((starttimec%1440)/60), (int)(starttimec%60) ); signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#788753: aolserver4-nsmysql: please make the build reproducible
Source: aolserver4-nsmysql Version: 0.6-9 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that aolserver4-nsmysql could not be built reproducibly. The attached patch removes extra timestamps from the build system. Specifically, the patch avoids the the usage of the __DATE__ and __TIME__ C macro which embed timestamps during the compilation and make the package build unreproducible. Once applied, aolserver4-nsmysql can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Dhole diff -u aolserver4-nsmysql-0.6/debian/changelog aolserver4-nsmysql-0.6/debian/changelog --- aolserver4-nsmysql-0.6/debian/changelog +++ aolserver4-nsmysql-0.6/debian/changelog @@ -1,3 +1,11 @@ +aolserver4-nsmysql (0.6-9.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Removed timestamp macro from source code to make package build +reproducibly + + -- Dhole Sat, 13 Jun 2015 22:45:06 +0200 + aolserver4-nsmysql (0.6-9) unstable; urgency=low [ Stefan Sobernig ] only in patch2: unchanged: --- aolserver4-nsmysql-0.6.orig/mysql.c +++ aolserver4-nsmysql-0.6/mysql.c @@ -87,8 +87,8 @@ return NS_ERROR; } -Ns_Log (Notice, "Ns_MySQL_DriverInit(%s): Loaded %s, built on %s at %s.", - hDriver, mysql_driver_version, __DATE__, __TIME__); +Ns_Log (Notice, "Ns_MySQL_DriverInit(%s): Loaded %s.", + hDriver, mysql_driver_version); return NS_OK; } signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#788756: aolserver4-nssqlite3: please make the build reproducible
Source: aolserver4-nssqlite3 Version: 0.9-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that aolserver4-nssqlite3 could not be built reproducibly. The attached patch removes extra timestamps from the build system. Specifically, the patch avoids the the usage of the __DATE__ and __TIME__ C macro which embed timestamps during the compilation and make the package build unreproducible. Once applied, aolserver4-nssqlite3 can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Dhole diff -u aolserver4-nssqlite3-0.9/debian/changelog aolserver4-nssqlite3-0.9/debian/changelog --- aolserver4-nssqlite3-0.9/debian/changelog +++ aolserver4-nssqlite3-0.9/debian/changelog @@ -1,3 +1,10 @@ +aolserver4-nssqlite3 (0.9-2.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Remove timestamp macro from source code to make package build reproducibly + + -- Dhole Sun, 14 Jun 2015 14:35:39 +0200 + aolserver4-nssqlite3 (0.9-2) unstable; urgency=low [ Stefan Sobernig ] only in patch2: unchanged: --- aolserver4-nssqlite3-0.9.orig/nssqlite3.c +++ aolserver4-nssqlite3-0.9/nssqlite3.c @@ -28,13 +28,13 @@ */ -/* +/* * nssqlite3.c -- * * This file implements the SQLite 3 database driver. */ -static const char *RCSID = "@(#) $Header: /cvsroot/aolserver/nssqlite3/nssqlite3.c,v 1.1.1.1 2005/03/07 04:36:22 dossy Exp $, compiled: " __DATE__ " " __TIME__; +static const char *RCSID = "@(#) $Header: /cvsroot/aolserver/nssqlite3/nssqlite3.c,v 1.1.1.1 2005/03/07 04:36:22 dossy Exp $"; #include "ns.h" #if NS_MAJOR_VERSION >= 4 @@ -130,8 +130,8 @@ driver); return NS_ERROR; } -Ns_Log(Notice, "nssqlite3: Loaded %s, version %s built on %s at %s.", -driver, DRIVER_VERSION, __DATE__, __TIME__); +Ns_Log(Notice, "nssqlite3: Loaded %s, version %s.", +driver, DRIVER_VERSION); return NS_OK; } signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#788754: antpm: please make the build reproducible
Source: antpm Version: 1.16-8 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that antpm could not be built reproducibly. The attached patch removes extra timestamps from the build system. Specifically, the patch avoids the the usage of the __DATE__ and __TIME__ C macro which embed timestamps during the compilation and make the package build unreproducible. Once applied, antpm can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Dhole diff -Nru antpm-1.16/debian/changelog antpm-1.16/debian/changelog --- antpm-1.16/debian/changelog 2014-08-17 08:38:28.0 +0200 +++ antpm-1.16/debian/changelog 2015-06-14 13:25:38.0 +0200 @@ -1,3 +1,10 @@ +antpm (1.16-8.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Remove timestamp macro from source code to make package build reproducibly + + -- Dhole Sun, 14 Jun 2015 13:19:46 +0200 + antpm (1.16-8) unstable; urgency=low * Team upload diff -Nru antpm-1.16/debian/patches/remove_timestamp antpm-1.16/debian/patches/remove_timestamp --- antpm-1.16/debian/patches/remove_timestamp 1970-01-01 01:00:00.0 +0100 +++ antpm-1.16/debian/patches/remove_timestamp 2015-06-14 13:26:42.0 +0200 @@ -0,0 +1,31 @@ +Description: Remove timestamp + . + antpm (1.16-8.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Remove timestamp macro from source code to make package build reproducibly +Author: Dhole + +--- + +--- antpm-1.16.orig/src/common.cpp antpm-1.16/src/common.cpp +@@ -296,8 +296,7 @@ getVersionString() + { + return std::string("") + APP_NAME + + " v" + std::string(BOOST_STRINGIZE(ANTPM_VERSION)) +- + " built " __DATE__ " " + __TIME__ + "" //+#ANTPM_SERIAL_IMPL +- + " under " ++ + " built under " + #ifdef __linux__ + # ifdef __LP64__ + "linux64" diff -Nru antpm-1.16/debian/patches/series antpm-1.16/debian/patches/series --- antpm-1.16/debian/patches/series2014-08-17 08:38:28.0 +0200 +++ antpm-1.16/debian/patches/series2015-06-14 13:25:55.0 +0200 @@ -5,3 +5,4 @@ 02-try-fixing-FTBFS-under-hurd-i386-kfreebsd-amd64-kfre 03-gant-try-fixing-FTBFS-under-hurd-i386 link-boost-atomic2.patch +remove_timestamp signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] GSoC 2015 Week 3: Move forward reproducible builds
Hi, During this third week I continued working on fixing timestamp related issues. Regarding the issue of timestamps captured by dpkg (packages not using dh_debbuild), Lunar has suggested a better approach for it. The current approach was add the following line in the build script (debian/rules), just before calling `dpkg --build` so that files created at build time get a fixed and known date: `find debian/tmp -newermt '$(BUILD_DATE)' -print0 | \ xargs -0r touch --no-dereference --date='$(BUILD_DATE)'` With the previous declaration of the `BUILD_DATE` variable: `BUILD_DATE := $(shell dpkg-parsechangelog --show-field Date)` Lunar's suggestion is to add a functionality as an option to the tar package (--clamp-mtime) which will change the stored timestamps in the metadata of the tar file, only of files which were newer than a given time. This approach gives the same result without being intrusive on the build script and without touching the filesystem (files mtimes are not touched, only the tar metadata is modified). With this, dpkg could call tar with this option and solve the reproducibility issue. Lunar sent this patch to tar upstream and is positive that they will accept it (eventhough right now they don't seem to be convinced). This week I have patched packages witch had these issues: - Timestamps embedded into compiled binaries from C/C++ source code due to the usage of the __DATE__ and __TIME__ macros [1] The packages I patched are the following: ## 14/06 - https://reproducible.debian.net/rb-pkg/unstable/amd64/0x.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788747 - https://reproducible.debian.net/rb-pkg/unstable/amd64/abcm2ps.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788748 - https://reproducible.debian.net/rb-pkg/unstable/amd64/amideco.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788750 - https://reproducible.debian.net/rb-pkg/unstable/amd64/amsynth.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788751 - https://reproducible.debian.net/rb-pkg/unstable/amd64/analog.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788752 - https://reproducible.debian.net/rb-pkg/unstable/amd64/aolserver4-nsmysql.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788753 - https://reproducible.debian.net/rb-pkg/unstable/amd64/antpm.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788754 - https://reproducible.debian.net/rb-pkg/unstable/amd64/aolserver4-nssqlite3.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788756 [1] https://wiki.debian.org/ReproducibleBuilds/TimestampsFromCPPMacros -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Re: [Reproducible-builds] Bug#788747: 0xffff: please make the build reproducible
Hi! The patch I submitted earlier removed the timestamp from the build system. After checking the new build I noticed that the man pages where not correct (the package version appeared where the date was supposed to appear). I've made an improvement on the patch. In this case no timestamp is removed: the build date in the man page can now be set externally, and specifically it is set to the last debian/changelog entry. -- Dhole diff -Nru 0x-0.6.1/debian/changelog 0x-0.6.1/debian/changelog --- 0x-0.6.1/debian/changelog 2015-05-27 17:45:22.0 +0200 +++ 0x-0.6.1/debian/changelog 2015-06-15 12:56:24.0 +0200 @@ -1,3 +1,12 @@ +0x (0.6.1-2.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Patch build system to allow the build date in the man entry to be set +externally, and set it to the latest debian/changelog entry for +reproducibility. + + -- Dhole Mon, 15 Jun 2015 12:56:06 +0200 + 0x (0.6.1-2) unstable; urgency=medium * Upload to unstable diff -Nru 0x-0.6.1/debian/patches/fix_build_date 0x-0.6.1/debian/patches/fix_build_date --- 0x-0.6.1/debian/patches/fix_build_date 1970-01-01 01:00:00.0 +0100 +++ 0x-0.6.1/debian/patches/fix_build_date 2015-06-15 12:56:56.0 +0200 @@ -0,0 +1,51 @@ +Description: Set build date externally + . + 0x (0.6.1-2.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Patch build system to allow the build date in the man entry to be set + externally, and set it to the latest debian/changelog entry for + reproducibility. +Author: Dhole + +--- + +--- 0x-0.6.1.orig/src/Makefile 0x-0.6.1/src/Makefile +@@ -3,11 +3,13 @@ include ../config.mk + PREFIX ?= /usr/local + INSTALL ?= install + ++BUILD_DATE ?= $(shell date '+%b %e %Y') ++ + CC = gcc + CROSS_CC = $(CROSS_COMPILE)$(CC) + HOST_CC = $(HOST_COMPILE)$(CC) + +-CPPFLAGS += -DVERSION=\"$(VERSION)\" -D_GNU_SOURCE ++CPPFLAGS += -DVERSION=\"$(VERSION)\" -DBUILD_DATE="\"$(BUILD_DATE)\"" -D_GNU_SOURCE + CFLAGS += -W -Wall -O2 -pedantic -std=c99 + LIBS += -lusb + +--- 0x-0.6.1.orig/src/mangen.c 0x-0.6.1/src/mangen.c +@@ -25,6 +25,10 @@ + #define INFO NAME " \\- Open Free Fiasco Firmware Flasher, version " VERSION + #define DESCRIPTION "0x is Open Free Fiasco Firmware Flasher for Maemo devices. It support generating and unpacking FIASCO images on local computer. Useful for editing Maemo firmware package for future flash. It support via USB flashing any image type to Maemo device and also \"cold\" flashing which means flashing dead device with erased bootloader. There is support for booting kernel via USB without flashing to NAND and also changing configuration of Maemo device (enable/disable R&D mode, changing HW revision strings, ...).\n\n0x is alternative tool to proprietary Nokia flasher-3.5 and fiasco-gen. 0x generate compatible FIASCO images and also accept FIASCO images generated by Nokia fiasco-gen." + ++#ifndef BUILD_DATE ++#define BUILD_DATE __DATE__ ++#endif ++ + int main() { + + FILE * pipe; +@@ -34,7 +38,7 @@ int main() { + if ( ! pipe ) + return 1; + +- puts(".TH " NAME " 1 \"" __DATE__ "\" \"" NAME " " VERSION "\""); ++ puts(".TH " NAME " 1 \"" BUILD_DATE "\" \"" NAME " " VERSION "\""); + puts(""); + + puts(".SH NAME"); diff -Nru 0x-0.6.1/debian/patches/series 0x-0.6.1/debian/patches/series --- 0x-0.6.1/debian/patches/series 1970-01-01 01:00:00.0 +0100 +++ 0x-0.6.1/debian/patches/series 2015-06-15 12:56:39.0 +0200 @@ -0,0 +1 @@ +fix_build_date diff -Nru 0x-0.6.1/debian/rules 0x-0.6.1/debian/rules --- 0x-0.6.1/debian/rules 2015-05-27 17:45:22.0 +0200 +++ 0x-0.6.1/debian/rules 2015-06-15 12:55:33.0 +0200 @@ -1,5 +1,7 @@ #!/usr/bin/make -f +export BUILD_DATE = $(shell LC_ALL=C date -u --date="`dpkg-parsechangelog -SDate`" +'%b %e %Y') + %: dh $@ signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Re: [Reproducible-builds] Bug#788752: analog: please make the build reproducible
Hi! The patch I submitted earlier removed the timestamp from the build system. Probably removing the `` field in the generated xml by outxml.c was not desirable, so I've improved the patch. In this case no timestamp is removed: the build date can now be set externally, and specifically it is set to the last debian/changelog entry. -- Dhole diff -u analog-6.0/debian/changelog analog-6.0/debian/changelog --- analog-6.0/debian/changelog +++ analog-6.0/debian/changelog @@ -1,3 +1,11 @@ +analog (2:6.0-21) UNRELEASED; urgency=medium + + * Patch build system to allow the build date to be set externally, +and set it to the latest debian/changelog entry for reproducibility. + + + -- Dhole Mon, 15 Jun 2015 13:08:11 +0200 + analog (2:6.0-20) unstable; urgency=low * QA upload. diff -u analog-6.0/debian/rules analog-6.0/debian/rules --- analog-6.0/debian/rules +++ analog-6.0/debian/rules @@ -2,6 +2,8 @@ include /usr/share/quilt/quilt.make +export BUILD_DATE = $(shell LC_ALL=C date -u --date="`dpkg-parsechangelog -SDate`" +'%b %e %Y %H:%M:%S') + clean: unpatch dh clean only in patch2: unchanged: --- analog-6.0.orig/src/Makefile +++ analog-6.0/src/Makefile @@ -47,6 +47,7 @@ # MPE/iX needs LIBS = -lsocket -lm # SVR4 needs LIBS = -lsocket -lnsl -lm # DYNIX/ptx needs LIBS = -L/usr/lib/bsd-socket -lsocket -lnsl -lm +BUILD_DATE ?= $(shell date '+%b %e %Y') # define in case it is not exported PROGRAM = analog TARGET = ../analog @@ -69,7 +70,7 @@ HEADERS = anlghead.h anlghea2.h anlghea3.h anlghea4.h macdir.h \ pcre/pcre.h libgd/gd.h libgd/gdfontf.h libgd/gdfonts.h unzip/unzip.h \ zlib/zlib.h bzip2/bzlib.h -ALLCFLAGS = $(CFLAGS) $(DEFS) -D$(OS) +ALLCFLAGS = $(CFLAGS) $(DEFS) -D$(OS) -DBUILD_DATE="\"$(BUILD_DATE)\"" ALLOBJS = $(OBJS) $(SUBDIROBJS) $(PROGRAM): $(OBJS) $(SUBDIRS) $(HEADERS) Makefile only in patch2: unchanged: --- analog-6.0.orig/src/outxml.c +++ analog-6.0/src/outxml.c @@ -16,6 +16,10 @@ #define NDEBUG +#ifndef BUILD_DATE +#define BUILD_DATE __DATE__ " " __TIME__ +#endif + #include #include #include @@ -85,7 +89,7 @@ xml_defaults( opts ); // extract a build timestamp from __DATE__ and __TIME__ -- locale dependent?! need to force "C" locale ? - strptime( __DATE__" "__TIME__, "%b%n%d%n%Y%n%T", &temptime ); + strptime( BUILD_DATE, "%b%n%d%n%Y%n%T", &temptime ); sprintf( buffer, "%04d%02d%02d%02d%02d", temptime.tm_year+1900, temptime.tm_mon+1, temptime.tm_mday, temptime.tm_hour, temptime.tm_min ); signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] GSoC 2015 Week 4: Move forward reproducible builds
Hi, On the beginning of the week I improved two patches I had sent on the previous week upon Lunar's suggestion. They are the following: - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788747 - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788752 On both cases the inital patch removed the usage of C __DATE__ and __TIME__ timestamps from the build. On one package this caused the manpages to be malformed. On the other one, it removed a field in a generated xml. The improved patches maintain the timestamps in the source code and allows them to be set to a fixed date, which in the case of the debian build is set to the last changelog date, making the packages build reproducibly. On Tuesday I attended the second bi-weekly irc meeting about reproducible builds in Debian. (I also attended the first one, but forgot to mention in my weekly report). The purpose of these meetings is to discuss the current state of the project, bring up issues and share what other members are working on. The result of the first meeting can be found here: - http://meetbot.debian.net/debian-reproducible/2015/debian-reproducible.2015-06-03-19.03.html The result of the second meeting can be found here: - http://meetbot.debian.net/debian-reproducible/2015/debian-reproducible.2015-06-16-17.01.html This week I had two final exams and I will have two presentations and one deliverable on Monday from my university course. Because of this I wasn't able to do much work this week. I'll be finished on Monday, so I'll be able to dedicate much more time to GSoC. For next week my plan is the following: - Add some information in the wiki regarding the 'C macro timestamp' issue (and maybe on the page regarding the issue 'packages not using dh_build') - Continue working on fixing packages with the 'C macro timestamp' issue - Start to discuss with my mentor and other members of the project on what can I focus now that I'll have more time to work on harder issues. Regards, -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#789648: apt-dater: please make the build reproducible
Source: apt-dater Version: 1.0.1+git20150119-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that apt-dater could not be built reproducibly. The attached patch allows the build date embedded in apt-dater.c (coming from the C macros __DATE__ and __TIME__) to be set externally with the BUILD_DATE define, and specifically it is set to the last debian/changelog entry. In case the BUILD_DATE define is not exported, the package can be built embedding a timestamp of the compilation time. Once applied, apt-dater can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Dhole diff -Nru apt-dater-1.0.1+git20150119/debian/changelog apt-dater-1.0.1+git20150119/debian/changelog --- apt-dater-1.0.1+git20150119/debian/changelog2015-01-19 19:14:38.0 +0100 +++ apt-dater-1.0.1+git20150119/debian/changelog2015-06-23 03:13:51.0 +0200 @@ -1,3 +1,11 @@ +apt-dater (1.0.1+git20150119-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Patch build system to allow the build date to be set externally, +and set it to the latest debian/changelog entry for reproducibility. + + -- Dhole Tue, 23 Jun 2015 03:13:30 +0200 + apt-dater (1.0.1+git20150119-1) unstable; urgency=low * New upstream git snapshot. diff -Nru apt-dater-1.0.1+git20150119/debian/patches/fix_build_date apt-dater-1.0.1+git20150119/debian/patches/fix_build_date --- apt-dater-1.0.1+git20150119/debian/patches/fix_build_date 1970-01-01 01:00:00.0 +0100 +++ apt-dater-1.0.1+git20150119/debian/patches/fix_build_date 2015-06-23 03:14:33.0 +0200 @@ -0,0 +1,45 @@ +Description: Set build date externally + . + apt-dater (1.0.1+git20150119-1.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Patch build system to allow the build date to be set externally, + and set it to the latest debian/changelog entry for reproducibility. +Author: Dhole + +--- + +--- apt-dater-1.0.1+git20150119.orig/src/Makefile.am apt-dater-1.0.1+git20150119/src/Makefile.am +@@ -1,5 +1,7 @@ + bin_PROGRAMS = apt-dater + ++# define in case BUILD_DATE is not exported ++BUILD_DATE ?= $(shell date '%b %e %Y %H:%M:%S') ++ + apt_dater_SOURCES = \ + adproto.h \ + apt-dater.c \ +@@ -38,7 +40,7 @@ apt_dater_SOURCES = \ + + apt_dater_LDADD = $(GLIB_LIBS) $(TCL_LIBS) $(LIBXML2_LIBS) $(LIBCONFIG_LIBS) + +-AM_CFLAGS = -Wall -DPKGLIBDIR='"'$(pkglibdir)'"' ++AM_CFLAGS = -Wall -DPKGLIBDIR='"'$(pkglibdir)'"' -DBUILD_DATE="\"$(BUILD_DATE)\"" + if LINUX + AM_LDFLAGS = -Wl,--as-needed + else +--- apt-dater-1.0.1+git20150119.orig/src/apt-dater.c apt-dater-1.0.1+git20150119/src/apt-dater.c +@@ -45,7 +45,11 @@ + #include "report.h" + #endif + +-#define VERSTEXT PACKAGE_STRING " - " __DATE__ " " __TIME__ "\n\n" \ ++#ifndef BUILD_DATE ++#define BUILD_DATE __DATE__ " " __TIME__ ++#endif ++ ++#define VERSTEXT PACKAGE_STRING " - " BUILD_DATE "\n\n" \ + "Copyright Holder: IBH IT-Service GmbH [https://www.ibh.net/]\n\n"; \ + "This program is free software; you can redistribute it and/or modify\n" \ + "it under the terms of the GNU General Public License as published by\n" \ diff -Nru apt-dater-1.0.1+git20150119/debian/patches/series apt-dater-1.0.1+git20150119/debian/patches/series --- apt-dater-1.0.1+git20150119/debian/patches/series 1970-01-01 01:00:00.0 +0100 +++ apt-dater-1.0.1+git20150119/debian/patches/series 2015-06-23 03:14:15.0 +0200 @@ -0,0 +1 @@ +fix_build_date diff -Nru apt-dater-1.0.1+git20150119/debian/rules apt-dater-1.0.1+git20150119/debian/rules --- apt-dater-1.0.1+git20150119/debian/rules2015-01-19 19:14:38.0 +0100 +++ apt-dater-1.0.1+git20150119/debian/rules2015-06-23 03:08:26.0 +0200 @@ -8,6 +8,10 @@ --enable-clusters \ --enable-debug +# Store a the last changelog date in the form of __DATE__ " " __DATE__ C macro +export BUILD_DATE = $(shell LC_ALL=C date -u \ + --date="`dpkg-parsechangelog -SDate`" +'%b %e %Y %H:%M:%S') + %: dh $@ signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#789963: qrfcview: please make the build reproducible
Source: qrfcview Version: 0.62-5.2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that qrfcview could not be built reproducibly. The attached patch removes the timestamps from the the generated png icon. Once applied, qrfcview can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Dhole diff -u qrfcview-0.62/debian/rules qrfcview-0.62/debian/rules --- qrfcview-0.62/debian/rules +++ qrfcview-0.62/debian/rules @@ -42,7 +42,7 @@ # Installation of icon and pixmap (hence imagemagick dependency). install -d -m 755 debian/qrfcview/usr/share/icons - convert -thumbnail 32x32 images/rfcview.png debian/qrfcview/usr/share/icons/qrfcview.png + convert -thumbnail 32x32 images/rfcview.png +set date:create +set date:modify -define png:exclude-chunk=time debian/qrfcview/usr/share/icons/qrfcview.png install -d -m 755 debian/qrfcview/usr/share/pixmaps convert -thumbnail 32x32 images/rfcview.png debian/qrfcview/usr/share/pixmaps/qrfcview.xpm diff -u qrfcview-0.62/debian/changelog qrfcview-0.62/debian/changelog --- qrfcview-0.62/debian/changelog +++ qrfcview-0.62/debian/changelog @@ -1,3 +1,10 @@ +qrfcview (0.62-6) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Remove timestamp from png to make package build reproducibly + + -- Dhole Thu, 25 Jun 2015 16:53:17 +0200 + qrfcview (0.62-5.2) unstable; urgency=low * Non-maintainer upload. signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#789964: xutils-dev: please make the build reproducible
Source: xutils-dev Version: 1:7.7+3 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that xutils-dev makes some packages not build reproducibly. The attached patch modifies the default GzipCmd used in Imake from 'gzip' to 'gzip -n' so that timestamps are not stored in packages that use functions depending on GzipCmd. Once applied, xtel (and maybe others) can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Dhole diff -Nru xutils-dev-7.7+3/debian/changelog xutils-dev-7.7+3.1/debian/changelog --- xutils-dev-7.7+3/debian/changelog 2014-05-21 21:46:36.0 +0200 +++ xutils-dev-7.7+3.1/debian/changelog 2015-06-25 18:12:12.0 +0200 @@ -1,3 +1,11 @@ +xutils-dev (1:7.7+3.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Change default GzipCmd to `gzip -n` so that packages depending on +xutils-dev can be built reproducibly + + -- Dhole Thu, 25 Jun 2015 18:11:15 +0200 + xutils-dev (1:7.7+3) unstable; urgency=medium * gccmakedep 1.0.3. diff -Nru xutils-dev-7.7+3/xorg-cf-files/Imake.tmpl xutils-dev-7.7+3.1/xorg-cf-files/Imake.tmpl --- xutils-dev-7.7+3/xorg-cf-files/Imake.tmpl 2014-05-21 21:01:41.0 +0200 +++ xutils-dev-7.7+3.1/xorg-cf-files/Imake.tmpl 2015-06-25 18:09:25.0 +0200 @@ -1190,7 +1190,7 @@ #define CompressCmd compress #endif #ifndef GzipCmd -#define GzipCmd gzip +#define GzipCmd gzip -n #endif #ifndef CppCmd #define CppCmd /LibDirName/cpp signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#789965: xtel: please make the build reproducible
Source: xtel Version: 3.3.0-17.1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that xtel could not be built reproducibly. The attached patch removes extra timestamps from compressed files by gzip and from the png icon. Once applied, and with a patched version of the dependency xutils-dev, xtel can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Dhole diff -u xtel-3.3.0/debian/changelog xtel-3.3.0/debian/changelog --- xtel-3.3.0/debian/changelog +++ xtel-3.3.0/debian/changelog @@ -1,3 +1,11 @@ +xtel (3.3.0-17.2) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Don't store timestamps when calling gzip and remove timestamps from png +to make package build reproducibly + + -- Dhole Thu, 25 Jun 2015 16:30:25 +0200 + xtel (3.3.0-17.1) unstable; urgency=medium * Non-maintainer upload. diff -u xtel-3.3.0/debian/rules xtel-3.3.0/debian/rules --- xtel-3.3.0/debian/rules +++ xtel-3.3.0/debian/rules @@ -20,7 +20,7 @@ xmkmf make Xtel # convert the mean gif file into a png file - convert xtel.gif xtel.png + convert xtel.gif +set date:create +set date:modify -define png:exclude-chunk=time xtel.png touch build-stamp clean: @@ -62,7 +62,7 @@ install -m 644 LISEZMOI.txt debian/xtel/usr/share/doc/LANG/fr/xtel/ install -m 644 FAQ.txt debian/xtel/usr/share/doc/LANG/fr/xtel/ install -m 644 README_IMINITEL.txt debian/xtel/usr/share/doc/LANG/fr/xtel/ - gzip -9v debian/xtel/usr/share/doc/LANG/fr/xtel/*.txt + gzip -9vn debian/xtel/usr/share/doc/LANG/fr/xtel/*.txt # Install png image example install -m 644 xtel.png debian/xtel/usr/share/doc/xtel/ # Create a symlink in /usr/share/doc/xtel to the french doc directory signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#790371: djvulibre: please make the build reproducible
Source: djvulibre Version: 3.5.27.1-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that djvulibre could not be built reproducibly. The attached patch removes extra timestamps from the gzip files. Once applied, djvulibre can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Dhole diff -Nru djvulibre-3.5.27.1/debian/changelog djvulibre-3.5.27.1/debian/changelog --- djvulibre-3.5.27.1/debian/changelog 2015-05-05 10:30:15.0 +0200 +++ djvulibre-3.5.27.1/debian/changelog 2015-06-25 19:40:13.0 +0200 @@ -1,3 +1,10 @@ +djvulibre (3.5.27.1-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Remove timestamp when calling gzip to make package build reproducibly + + -- Dhole Thu, 25 Jun 2015 19:39:52 +0200 + djvulibre (3.5.27.1-1) unstable; urgency=medium * freeze is over, can target to unstable once more diff -Nru djvulibre-3.5.27.1/debian/patches/remove_gzip_timestamp djvulibre-3.5.27.1/debian/patches/remove_gzip_timestamp --- djvulibre-3.5.27.1/debian/patches/remove_gzip_timestamp 1970-01-01 01:00:00.0 +0100 +++ djvulibre-3.5.27.1/debian/patches/remove_gzip_timestamp 2015-06-25 19:40:46.0 +0200 @@ -0,0 +1,21 @@ +Description: Remove gzip timestamp + . + djvulibre (3.5.27.1-1.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Remove timestamp when calling gzip to make package build reproducibly +Author: Dhole + +--- + +--- djvulibre-3.5.27.1.orig/desktopfiles/Makefile.am djvulibre-3.5.27.1/desktopfiles/Makefile.am +@@ -61,7 +61,7 @@ else + endif + + svg_process =\ +-cat $< | gzip >$@ ++cat $< | gzip -n >$@ + + svg_verbose = $(svg_verbose_@AM_V@) + svg_verbose_ = $(svg_verbose_@AM_DEFAULT_V@) diff -Nru djvulibre-3.5.27.1/debian/patches/series djvulibre-3.5.27.1/debian/patches/series --- djvulibre-3.5.27.1/debian/patches/series2015-05-05 10:31:09.0 +0200 +++ djvulibre-3.5.27.1/debian/patches/series2015-06-25 19:40:30.0 +0200 @@ -1 +1,2 @@ debian-changes +remove_gzip_timestamp signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#790374: oxygen-icons: please make the build reproducible
Source: oxygen-icons Version: 4:14.12.2-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps fileordering Hi! While working on the “reproducible builds” effort [1], we have noticed that oxygen-icons could not be built reproducibly. The attached patch removes the timestamps from the the generated png icons. oxygen-icons uses the script symlink_duplicates.sh to find duplicate files (with fdupes) and create symlinks before packing the files. The order in which duplicates are found can differ between runs making the symlinks undeterministic. The provided patch parses the output of fdupes to sort the groups of duplicated files, making the output deterministic. Once applied, oxygen-icons can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Dhole diff -Nru oxygen-icons-14.12.2/debian/changelog oxygen-icons-14.12.2/debian/changelog --- oxygen-icons-14.12.2/debian/changelog 2015-02-16 12:01:41.0 +0100 +++ oxygen-icons-14.12.2/debian/changelog 2015-06-26 13:22:21.0 +0200 @@ -1,3 +1,12 @@ +oxygen-icons (4:14.12.2-2) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Remove timestamps from png to make package build reproducibly + * symlink_duplicates.sh now symlinks files in a reproducible way (by sorting +the results of fdupes) + + -- Dhole Fri, 26 Jun 2015 13:21:16 +0200 + oxygen-icons (4:14.12.2-1) experimental; urgency=medium * Prepare Debian release. diff -Nru oxygen-icons-14.12.2/debian/patches/remove_png_timestamps oxygen-icons-14.12.2/debian/patches/remove_png_timestamps --- oxygen-icons-14.12.2/debian/patches/remove_png_timestamps 1970-01-01 01:00:00.0 +0100 +++ oxygen-icons-14.12.2/debian/patches/remove_png_timestamps 2015-06-25 18:22:02.0 +0200 @@ -0,0 +1,25 @@ +Description: Remove png timestamps + . + oxygen-icons (4:14.12.2-1.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Remove timestamps from png to make package build reproducibly +Author: Dhole + +--- + +--- oxygen-icons-14.12.2.orig/scalable/export_pngs.sh oxygen-icons-14.12.2/scalable/export_pngs.sh +@@ -31,10 +31,10 @@ for size in $sizes; do + inkscape --without-gui --export-png="../"${size}x${size}"/"$iconDir"/"$iconPngName --export-dpi=72 --export-background-opacity=0 --export-width=$size --export-height=$size $smallicon > /dev/null + + else +-convert -filter Sinc -resize ${size}x${size} $iconPngName "../"${size}x${size}"/"$iconDir"/"$iconPngName ++convert -filter Sinc -resize ${size}x${size} $iconPngName +set date:create +set date:modify -define png:exclude-chunk=time "../"${size}x${size}"/"$iconDir"/"$iconPngName + fi + else +- convert -filter Sinc -resize ${size}x${size} $iconPngName "../"${size}x${size}"/"$iconDir"/"$iconPngName ++ convert -filter Sinc -resize ${size}x${size} $iconPngName +set date:create +set date:modify -define png:exclude-chunk=time "../"${size}x${size}"/"$iconDir"/"$iconPngName + fi + echo "Converted the icon named "$( echo $iconName | cut -d . -f -1 )" to size: " $size + done diff -Nru oxygen-icons-14.12.2/debian/patches/series oxygen-icons-14.12.2/debian/patches/series --- oxygen-icons-14.12.2/debian/patches/series 1970-01-01 01:00:00.0 +0100 +++ oxygen-icons-14.12.2/debian/patches/series 2015-06-25 18:21:42.0 +0200 @@ -0,0 +1 @@ +remove_png_timestamps diff -Nru oxygen-icons-14.12.2/debian/rules oxygen-icons-14.12.2/debian/rules --- oxygen-icons-14.12.2/debian/rules 2015-02-16 12:01:41.0 +0100 +++ oxygen-icons-14.12.2/debian/rules 2015-06-25 18:15:39.0 +0200 @@ -7,7 +7,8 @@ override_dh_auto_build: convert 64x64/mimetypes/x-office-document.png \ - -scale "22x22" 22x22/mimetypes/x-office-document.png + -scale "22x22" +set date:create +set date:modify -define png:exclude-chunk=time \ + 22x22/mimetypes/x-office-document.png $(overridden_command) override_dh_install: diff -Nru oxygen-icons-14.12.2/debian/symlink_duplicates.sh oxygen-icons-14.12.2/debian/symlink_duplicates.sh --- oxygen-icons-14.12.2/debian/symlink_duplicates.sh 2015-02-16 12:01:41.0 +0100 +++ oxygen-icons-14.12.2/debian/symlink_duplicates.sh 2015-06-26 13:20:30.0 +0200 @@ -5,13 +5,27 @@ # $1 Root directory for absolute path calculation # $2 Directory for searching duplicate files +# Call fdupes and sort the filenames in the groups of duplicates in the output +function fdupes_sorted { + duplicates="" + fdupes ${*:2} | while read line; do + if [ -z "$line" ]; then + echo -n "$dup
[Reproducible-builds] GSoC 2015 Week 5: Move forward reproducible builds
Hi, This week I have continued working on some issues related to packages using C timestamp macros. I have sent one patch: - https://reproducible.debian.net/rb-pkg/unstable/amd64/apt-dater.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=789648 I have also written a patch for apache2 but it's on hold: - https://reproducible.debian.net/rb-pkg/unstable/amd64/apache2.html The reason I haven't submitted it is because of a discussion in irc. Currently there are 490 packages affected by timestamps from C macro. Patching them all one by one is a tedious and slow task, so we discussed on irc possible solutions. In the reproducible builds project there has been an idea for standardizing toolchain packages that deal with timestamps. The idea is to export a variable called SOURCE_DATE_EPOCH with the latests debian/changelog entry in Unix time. This variable can be seen by any package to modify its behavior: instead of embedding the current time/date, embed the exported date/time. A patch with this solution has already been written and accepted in help2man. There are many candidate packages that could benefit from this patch (for instances, documentation generation tools). So we talked about the idea of implementing this solution in GCC, so that when the variable SOURCE_DATE_EPOCH, the macros __DATE__, __TIME__ and __TIMESTAMP__ use the exported timestamp rather than local compilation time. I have started working on such patch. I have also worked on a package with the issue of timestamps in gzip headers: - https://reproducible.debian.net/rb-pkg/unstable/amd64/djvulibre.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=790371 And on packages that create or modify png files and embed a timestamp in them: - https://reproducible.debian.net/rb-pkg/unstable/amd64/qrfcview.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=789963 - https://reproducible.debian.net/rb-pkg/unstable/amd64/xtel.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=789965 (depends on fix in xutils-dev) - https://reproducible.debian.net/rb-pkg/unstable/amd64/oxygen-icons.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=790374 One of the previous packages embedded timestamps in gzip headers because it was using a tool that defined such behavior, I patched the tool as well: - https://reproducible.debian.net/rb-pkg/unstable/amd64/xutils-dev.html https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=789964 (fixes xtel) Finally, I have added some information in the reproducible builds wiki regarding the issue timestamps_from_cpp_macros and a possible solution that doesn't remove the timestamps macros: - https://wiki.debian.org/ReproducibleBuilds/TimestampsFromCPPMacros Regards, -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Suggestion: sort packages in rb.d.n in single issue pages by bugs/no bugs
Hi, This afternoon I was commenting on the channel that I'd find it useful if the list of packages in rb.d.n could be split into the ones that already have a submitted patch and the ones that don't. I'd find this useful when looking for new packages to patch, hopefully it can be useful to others. Mapreri offered himself to take a look at it, this mail is also a reminder for him as well :) Best regards, -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] GSoC 2015 Week 6: Move forward reproducible builds
Hi, This week I have been working on patching toolchain packages in relation to the proposed timestamp standardization. I have patched gcc to read the SOURCE_DATE_EPOCH environment variable and in case it is set, change the behavior of the macro __DATE__ and __TIME__ substitution: instead of writing the local date/time, the one provided by the env variable is used. I also wrote a patch to replace the behavior of the __TIMESTAMP__ macro (which embeds the source file mtime during the preprocessing step) to use the timestamp from SOURCE_DATE_EPOCH only if it is older than the file mtime (that is, clamping the timestamp). The later patch has not been sent yet as it feels more intrusive. I sent the patch for __DATE__ and __TIME__ to the gcc upstream mailing list (gcc-patches): https://gcc.gnu.org/ml/gcc-patches/2015-06/msg02210.html There's been some discussion and some ideas from the gcc people, but no maintainer has replied yet (only maintainers can decide if a patch gets accepted or not). Since other other people in the project are adopting the use of SOURCE_DATE_EPOCH to normalize timestamps, I wrote a patch for debhelper (a Debian package used during package builds) to export the SOURCE_DATE_EPOCH with the latests debian/changelog entry timestamp. I also added a change to debhelper to help reproducible builds which consists on setting TZ=UTC (that is setting the exported variable defining the timezone to UTC so that during bluilds a normalized timezone is found). The debhelper commit can be found here: https://anonscm.debian.org/cgit/reproducible/debhelper.git/commit/?h=pu/reproducible_builds&id=005841b88b715a29a2279265f2fc2b31d3389344 After committing the change, I built the package and uploaded it to the reproducible repository so that it can be used in our custom toolchain and test it on jenkins. I updated two wiki entries: - info about gcc patch regarding the C timestamp macro issue: https://wiki.debian.org/ReproducibleBuilds/TimestampsFromCPPMacros - info about debhelp update https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchain For next week I plan on continue looking at toolchain packages that could implement the use of SOURCE_DATE_EPOCH (mostly documentation generators such as docbook-xsl) and write patches for them Best regards, Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#791815: libxslt: please support timestamps from environment
Source: libxslt Version: 1.1.28-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: toolchain timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that libxslt embeds timestamps when generating documentation. We have a proposal for using a deterministic timestamp [2] (based on the latest debian/changelog entry) which is contained in the environment variable SOURCE_DATE_EPOCH (currently exported by debhelper in our experimental framework). The attached patch proposes a way to use this variable to get reproducible timestamps when generating docs, if the variable has been set (if not, it falls back to the old behavior). [1]: https://wiki.debian.org/ReproducibleBuilds [2]: https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal Regards, -- Dhole diff -Nru libxslt-1.1.28/debian/changelog libxslt-1.1.28/debian/changelog --- libxslt-1.1.28/debian/changelog 2015-07-01 12:00:21.0 +0200 +++ libxslt-1.1.28/debian/changelog 2015-07-08 15:19:03.0 +0200 @@ -1,9 +1,14 @@ -libxslt (1.1.28-2.0~reproducible3) UNRELEASED; urgency=low +libxslt (1.1.28-2.0~reproducible4) UNRELEASED; urgency=low + [ Jérémy Bobbio ] * Add a patch from Daniel Veillard to make generate-id() provide stable IDs to make its output reproducible. - -- Jérémy Bobbio Wed, 01 Jul 2015 11:49:58 +0200 + [ Eduard Sanou ] + * Add support for reproducible builds by using $SOURCE_DATE_EPOCH as the +date when processing docs (when using the var $date). + + -- Dhole Wed, 08 Jul 2015 15:05:07 +0200 libxslt (1.1.28-2) unstable; urgency=low diff -Nru libxslt-1.1.28/debian/patches/0010-Replace-timestamp-with-SOURCE_DATE_EPOCH libxslt-1.1.28/debian/patches/0010-Replace-timestamp-with-SOURCE_DATE_EPOCH --- libxslt-1.1.28/debian/patches/0010-Replace-timestamp-with-SOURCE_DATE_EPOCH 1970-01-01 01:00:00.0 +0100 +++ libxslt-1.1.28/debian/patches/0010-Replace-timestamp-with-SOURCE_DATE_EPOCH 2015-07-08 15:18:26.0 +0200 @@ -0,0 +1,65 @@ +Description: Replace date timestamp by SOURCE_DATE_EPOCH env var +Author: Dhole + +--- + +--- libxslt-1.1.28.orig/libexslt/date.c libxslt-1.1.28/libexslt/date.c +@@ -46,6 +46,7 @@ + #include "exslt.h" + + #include ++#include + + #ifdef HAVE_MATH_H + #include +@@ -747,21 +748,46 @@ static exsltDateValPtr + exsltDateCurrent (void) + { + struct tm localTm, gmTm; ++struct tm *tb = NULL; + time_t secs; + int local_s, gm_s; + exsltDateValPtr ret; ++char *source_date_epoch; + + ret = exsltDateCreateDate(XS_DATETIME); + if (ret == NULL) + return NULL; + +-/* get current time */ + secs= time(NULL); ++/* ++ * Allow the date and time to be set externally by an exported ++ * environment variable to enable reproducible builds. ++ */ ++source_date_epoch = getenv("SOURCE_DATE_EPOCH"); ++if (source_date_epoch) { ++ errno = 0; ++ secs = (time_t) strtol (source_date_epoch, NULL, 10); ++ if (errno == 0) { ++ tb = gmtime(&secs); ++ if (tb == NULL) { ++ /* SOURCE_DATE_EPOCH is not a valid date */ ++ return NULL; ++ } else { ++ localTm = *tb; ++ } ++ } else { ++ /* SOURCE_DATE_EPOCH is not a valid number */ ++ return NULL; ++ } ++} else { ++ /* get current time */ + #if HAVE_LOCALTIME_R +-localtime_r(&secs, &localTm); ++ localtime_r(&secs, &localTm); + #else +-localTm = *localtime(&secs); ++ localTm = *localtime(&secs); + #endif ++} ++ + + /* get real year, not years since 1900 */ + ret->value.date.year = localTm.tm_year + 1900; diff -Nru libxslt-1.1.28/debian/patches/series libxslt-1.1.28/debian/patches/series --- libxslt-1.1.28/debian/patches/series2015-07-01 12:00:21.0 +0200 +++ libxslt-1.1.28/debian/patches/series2015-07-08 15:13:19.0 +0200 @@ -7,3 +7,4 @@ 0007-EXSLT-function-str-replace-is-broken-as-is.patch 0008-Fix-quoting-of-xlocale-test-program-in-configure.in.patch 0009-Make-generate-id-deterministic.patch +0010-Replace-timestamp-with-SOURCE_DATE_EPOCH signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] debhelper: set SOURCE_DATE_EPOCH env var for reproducible builds
Source: debhelper Version: 9.20150628 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: toolchain timestamps Hi! While working on the “reproducible builds” effort [1] we have a proposal of using deterministic timestamps [2] (based on the latest debian/changelog entry) which is to be set in the environment variable SOURCE_DATE_EPOCH. The attached patch makes debhelper export the SOURCE_DATE_EPOCH env variable during the execution with the latest debian/changelog entry timestamp, so that packages running during the build process can read it and replace localtime date/times calls with the exported timestamp in order to have reproducible builds. Also, in order to help reproducible builds, a fixed timezone is exported (TZ=UTC). [1]: https://wiki.debian.org/ReproducibleBuilds [2]: https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal Regards, -- Dhole diff -Nru debhelper-9.20150628/debian/changelog debhelper-9.20150628+nmu1/debian/changelog --- debhelper-9.20150628/debian/changelog 2015-06-28 13:56:15.0 +0200 +++ debhelper-9.20150628+nmu1/debian/changelog 2015-07-08 19:35:19.0 +0200 @@ -1,3 +1,12 @@ +debhelper (9.20150628+nmu1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * export the env var SOURCE_DATE_EPOCH with the last debian/changelog +timestamp. + * set env TZ=UTC + + -- Dhole Wed, 08 Jul 2015 19:34:46 +0200 + debhelper (9.20150628) unstable; urgency=medium * Upload to unstable with ddebs support disabled by default. diff -Nru debhelper-9.20150628/Debian/Debhelper/Dh_Lib.pm debhelper-9.20150628+nmu1/Debian/Debhelper/Dh_Lib.pm --- debhelper-9.20150628/Debian/Debhelper/Dh_Lib.pm 2015-06-28 13:24:32.0 +0200 +++ debhelper-9.20150628+nmu1/Debian/Debhelper/Dh_Lib.pm2015-07-08 19:34:25.0 +0200 @@ -1144,12 +1144,44 @@ } } +# Read latest debian/changelog timestamp and export the environment variable +# SOURCE_DATE_EPOCH with its value, so that any package can read it and replace +# calls to localtime (or other undeterministic timestamps) with the exported +# timestamp to get reproducible builds. +sub set_source_date_epoch { + eval "use Dpkg::Changelog::Debian"; + if ($@) { + warning "unable to set SOURCE_DATE_EPOCH: $@"; + return; + } + eval "use Time::Piece"; + if ($@) { + warning "unable to set SOURCE_DATE_EPOCH: $@"; + return; + } + + my $changelog = Dpkg::Changelog::Debian->new(); + $changelog->load("debian/changelog"); + + my $tt = @{$changelog}[0]->get_timestamp(); + $tt =~ s/\s*\([^\)]+\)\s*$//; # Remove the optional timezone codename + my $timestamp = Time::Piece->strptime($tt, "%a, %d %b %Y %T %z"); + + $ENV{SOURCE_DATE_EPOCH} = $timestamp->epoch(); +} + # Sets environment variables from dpkg-buildflags. Avoids changing # any existing environment variables. sub set_buildflags { - return if $ENV{DH_INTERNAL_BUILDFLAGS} || compat(8); + return if $ENV{DH_INTERNAL_BUILDFLAGS}; $ENV{DH_INTERNAL_BUILDFLAGS}=1; + set_source_date_epoch(); + # Set env timezone to UTC to help packages build reproducibly + $ENV{TZ} = "UTC"; + + return if compat(8); + eval "use Dpkg::BuildFlags"; if ($@) { warning "unable to load build flags: $@"; signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Re: [Reproducible-builds] Bug#791815: libxslt: please support timestamps from environment
On 07/08/2015 06:44 PM, Dhole wrote: > Source: libxslt > Version: 1.1.28-2 > Severity: wishlist > Tags: patch > User: reproducible-builds@lists.alioth.debian.org > Usertags: toolchain timestamps > > Hi! > > While working on the “reproducible builds” effort [1], we have noticed > that libxslt embeds timestamps when generating documentation. > > We have a proposal for using a deterministic timestamp [2] (based on > the latest debian/changelog entry) which is contained in the environment > variable SOURCE_DATE_EPOCH (currently exported by debhelper in our > experimental framework). > > The attached patch proposes a way to use this variable to get > reproducible timestamps when generating docs, if the variable has been > set (if not, it falls back to the old behavior). > > > [1]: https://wiki.debian.org/ReproducibleBuilds > [2]: https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal > The submitted bug for the mentioned feature in debhelper can be found at: https://bugs.debian.org/791823 Regards, -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] GSoC 2015 Week 7: Move forward reproducible builds
Hi, This week I have continued working on the reproducible timestamp approach through the exported variable SOURCE_DATE_EPOCH. I submitted a bug for debhelper with last week's patch (I had already commited a fix exporting SOURCE_DATE_EPOCH in our local git repo, and uploaded the package in our local repo): http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=791823 I submitted bug to Debian for libxslt to honour SOURCE_DATE_EPOCH: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=791815 I also commited the fix to our git repo and puloaded the package our repo to perform tests: https://anonscm.debian.org/cgit/reproducible/libxslt.git/commit/?h=pu/reproducible_builds&id=571bb438df0b11288598c2b05010099d1861a8ed After the upload, test were performed on the packages affected by issues: 1- timestamps_generated_by_docbook_to_man (here some packages where miss tagged) - there where 79 unreproducible packages and 39 became reproducible 2- timestamps_in_manpages_generated_by_docbook_xsl - there where 89 unreproducible packages and 33 became reproducible. NOTE: there are still packages generating docs with libslt not reproducible. This is because the patch for dh to export SOURCE_DATE_EPOCH only works for calls to doc generation under dh. Some packages have the calls to generate docs directly in debian/rules so SOURCE_DATE_EPOCH is not set there. A solution needs to be found for that. I updated some info in the wiki/ExperimentalToolchain regarding packages using the SOURCE_DATE_EPOCH proposal. I tagged some packages affected by locale_in_documentation_generated_by_javadoc. I started working on the issue lc_messages_randomness: https://reproducible.debian.net/issues/unstable/lc_messages_randomness_issue.html I'll continue working on that next week. Best regards, Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#792593: lives: please make the build reproducible
Source: lives Version: 2.4.0~ds0-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps Hi! While working on the “reproducible builds” effort [1], we have noticed that lives could not be built reproducibly. During the building of the plugins from script files, the onchange entires appear in random ordering as they are stored in a hash and then iterated by the hash keys (who's order can differ between runs). The attached patch sorts the onchange entries when building plugins from scripts to make the package build reproducible. Once applied, lives can be built reproducibly in our current experimental framework. Please also consider forwarding this patch upstream. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru lives-2.4.0~ds0/debian/changelog lives-2.4.0~ds0/debian/changelog --- lives-2.4.0~ds0/debian/changelog2015-07-11 17:49:51.0 +0200 +++ lives-2.4.0~ds0/debian/changelog2015-07-15 17:36:30.0 +0200 @@ -1,3 +1,11 @@ +lives (2.4.0~ds0-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Sort the onchange entries when building plugins from scripts to +make the package build reproducible. + + -- Dhole Wed, 15 Jul 2015 17:36:10 +0200 + lives (2.4.0~ds0-1) unstable; urgency=medium [ Alessio Treglia ] diff -Nru lives-2.4.0~ds0/debian/patches/06-sort-onchanges-entries-in-plugins.patch lives-2.4.0~ds0/debian/patches/06-sort-onchanges-entries-in-plugins.patch --- lives-2.4.0~ds0/debian/patches/06-sort-onchanges-entries-in-plugins.patch 1970-01-01 01:00:00.0 +0100 +++ lives-2.4.0~ds0/debian/patches/06-sort-onchanges-entries-in-plugins.patch 2015-07-15 17:37:06.0 +0200 @@ -0,0 +1,22 @@ +Description: Sort onchange entries when generating plugins + . + lives (2.4.0~ds0-1.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Sort the onchange entries when building plugins from scripts to + make package build reproducible. +Author: Dhole + +--- + +--- lives-2.4.0~ds0.orig/build-lives-rfx-plugin lives-2.4.0~ds0/build-lives-rfx-plugin +@@ -655,7 +655,7 @@ sub gen_onchange { + } + + if ($pass==1) { +- foreach $which (keys %hash) { ++ foreach $which (sort keys %hash) { + print OUT "\nif (\$command eq \"onchange_$which\") {\n"; + + if (@requires&&$is_util&&$which eq "init") { diff -Nru lives-2.4.0~ds0/debian/patches/series lives-2.4.0~ds0/debian/patches/series --- lives-2.4.0~ds0/debian/patches/series 2015-07-05 16:27:05.0 +0200 +++ lives-2.4.0~ds0/debian/patches/series 2015-07-15 17:36:44.0 +0200 @@ -5,3 +5,4 @@ 05-gcc-5.patch parallel-build.patch 9990-buildsystem.patch +06-sort-onchanges-entries-in-plugins.patch signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#792598: libreoffice-canzeley-client: please make the build reproducible
Source: libreoffice-canzeley-client Version: 0.4.0-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that libreoffice-canzeley-client could not be built reproducibly. The attached patch removes timezone-varying timestamps from the files extracted with unzip. Once applied, libreoffice-canzeley-client can be built reproducibly in our reproducible toolchain. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru libreoffice-canzeley-client-0.4.0/debian/changelog libreoffice-canzeley-client-0.4.0/debian/changelog --- libreoffice-canzeley-client-0.4.0/debian/changelog 2014-10-25 02:03:57.0 +0200 +++ libreoffice-canzeley-client-0.4.0/debian/changelog 2015-07-15 19:22:27.0 +0200 @@ -1,3 +1,11 @@ +libreoffice-canzeley-client (0.4.0-2.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * add TZ=UTC before unzip in debian/rules to make the files mtime +invariant to timezone to make the package build reproducibly. + + -- Dhole Wed, 15 Jul 2015 19:22:19 +0200 + libreoffice-canzeley-client (0.4.0-2) unstable; urgency=low * Correct typo in control diff -Nru libreoffice-canzeley-client-0.4.0/debian/rules libreoffice-canzeley-client-0.4.0/debian/rules --- libreoffice-canzeley-client-0.4.0/debian/rules 2014-07-06 12:23:51.0 +0200 +++ libreoffice-canzeley-client-0.4.0/debian/rules 2015-07-15 19:22:12.0 +0200 @@ -26,7 +26,7 @@ dh_installdirs -A cd $(CURDIR)/debian/libreoffice-canzeley-client/usr/lib/libreoffice/share/extensions/canzeley-client && \ - unzip -o $(CURDIR)/Extension/canzeley_*.oxt + TZ=UTC unzip -o $(CURDIR)/Extension/canzeley_*.oxt mv $(CURDIR)/debian/libreoffice-canzeley-client/usr/lib/libreoffice/share/extensions/canzeley-client/icons $(CURDIR)/debian/libreoffice-canzeley-client/usr/share/libreoffice-canzeley-client/ dh_lintian signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#792599: openthesaurus: please make the build reproducible
Source: openthesaurus Version: 20120516-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that openthesaurus could not be built reproducibly. The attached patch removes timezone-varying timestamps from the files extracted with unzip. Once applied, openthesaurus can be built reproducibly in our reproducible toolchain. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru openthesaurus-20120516/debian/changelog openthesaurus-20120516/debian/changelog --- openthesaurus-20120516/debian/changelog 2012-12-18 17:25:04.0 +0100 +++ openthesaurus-20120516/debian/changelog 2015-07-15 19:36:11.0 +0200 @@ -1,3 +1,11 @@ +openthesaurus (20120516-2.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * add TZ=UTC before unzip in debian/rules to make the files mtime +invariant to timezone to make the package build reproducibly. + + -- Dhole Wed, 15 Jul 2015 19:34:49 +0200 + openthesaurus (20120516-2) unstable; urgency=low * fix sed in debian/rules for utf8-encoded dicts so that ß is correctly diff -Nru openthesaurus-20120516/debian/rules openthesaurus-20120516/debian/rules --- openthesaurus-20120516/debian/rules 2012-12-18 17:22:00.0 +0100 +++ openthesaurus-20120516/debian/rules 2015-07-15 19:34:30.0 +0200 @@ -51,7 +51,7 @@ mkdir -p $(CURDIR)/debian/openthesaurus-de-text/usr/share/openthesaurus-de/ cd $(CURDIR)/debian/openthesaurus-de-text/usr/share/openthesaurus-de && \ - unzip $(CURDIR)/text/OpenThesaurus-Textversion.zip openthesaurus.txt && \ + TZ=UTC unzip $(CURDIR)/text/OpenThesaurus-Textversion.zip openthesaurus.txt && \ ln -sf openthesaurus.txt thesaurus.txt install -D -m644 th_de_DE_v2.dat \ signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#792597: jsmath-fonts-sprite: please make the build reproducible
Source: jsmath-fonts-sprite Version: 1.0-3 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that jsmath-fonts-sprite could not be built reproducibly. The attached patch removes timezone-varying timestamps from the files extracted with unzip. Once applied, jsmath-fonts-sprite can be built reproducibly in our reproducible toolchain. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru jsmath-fonts-sprite-1.0/debian/changelog jsmath-fonts-sprite-1.0/debian/changelog --- jsmath-fonts-sprite-1.0/debian/changelog2014-03-23 21:25:14.0 +0100 +++ jsmath-fonts-sprite-1.0/debian/changelog2015-07-15 19:11:45.0 +0200 @@ -1,3 +1,11 @@ +jsmath-fonts-sprite (1.0-3.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * add TZ=UTC before unzip in debian/rules to make the files mtime +invariant to timezone to make the package build reproducibly. + + -- Dhole Wed, 15 Jul 2015 19:11:31 +0200 + jsmath-fonts-sprite (1.0-3) unstable; urgency=medium * Adopted the package. Closes: #621474 diff -Nru jsmath-fonts-sprite-1.0/debian/rules jsmath-fonts-sprite-1.0/debian/rules --- jsmath-fonts-sprite-1.0/debian/rules2014-03-23 21:28:14.0 +0100 +++ jsmath-fonts-sprite-1.0/debian/rules2015-07-15 19:09:56.0 +0200 @@ -16,7 +16,7 @@ dh $@ override_dh_auto_build: - unzip -q -d jsMath jsMath-*.zip + TZ=UTC unzip -q -d jsMath jsMath-*.zip override_dh_clean: dh_clean signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#792687: gettext: please support timestamps from environment
Source: gettext Version: 0.19.4-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: toolchain timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that the xgettext tool from gettext embeds timestamps on the creation of PO files. For the Reproducible Builds effort we are proposing an environment variable (SOURCE_DATE_EPOCH) [2] that will contain a deterministic epoch timestamp (based on the latest debian/changelog entry) that could be used, which should be automatically exported by debhelper in the future [3]. The attached patch proposes a way to use this variable to get reproducible timestamps in the PO files generated by xgettext, if the variable has been set (if not, it falls back to the old behavior). With the attached patch packages using xgettext would then automatically generate reproducible translation files. [1]: https://wiki.debian.org/ReproducibleBuilds [2]: https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal [3]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=791815 Regards, -- Dhole diff -Nru gettext-0.19.4/debian/changelog gettext-0.19.4/debian/changelog --- gettext-0.19.4/debian/changelog 2015-05-15 18:01:14.0 +0200 +++ gettext-0.19.4/debian/changelog 2015-07-17 15:47:54.0 +0200 @@ -1,3 +1,11 @@ +gettext (0.19.4-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Add support for reproducible builds by using $SOURCE_DATE_EPOCH as the +date on creation of PO files with xgettext. + + -- Dhole Fri, 17 Jul 2015 15:47:41 +0200 + gettext (0.19.4-1) unstable; urgency=low * New upstream release. diff -Nru gettext-0.19.4/debian/patches/03-Replace-timestamp-with-SOURCE_DATE_EPOCH gettext-0.19.4/debian/patches/03-Replace-timestamp-with-SOURCE_DATE_EPOCH --- gettext-0.19.4/debian/patches/03-Replace-timestamp-with-SOURCE_DATE_EPOCH 1970-01-01 01:00:00.0 +0100 +++ gettext-0.19.4/debian/patches/03-Replace-timestamp-with-SOURCE_DATE_EPOCH 2015-07-17 15:56:22.0 +0200 @@ -0,0 +1,47 @@ +Description: Replace date timestamp by SOURCE_DATE_EPOCH env var in xgettext + . + gettext (0.19.4-1.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Add support for reproducible builds by using $SOURCE_DATE_EPOCH as the + date on creation of PO files with xgettext. +Author: Dhole + +--- + +--- gettext-0.19.4.orig/gettext-tools/src/xgettext.c gettext-0.19.4/gettext-tools/src/xgettext.c +@@ -3410,6 +3410,7 @@ construct_header () + message_ty *mp; + char *msgstr; + char *comment; ++ char *source_date_epoch; + static lex_pos_ty pos = { __FILE__, __LINE__ }; + + if (package_name != NULL) +@@ -3431,7 +3432,24 @@ the MSGID_BUGS_ADDRESS variable there; o + specify an --msgid-bugs-address command line option.\n\ + "))); + +- time (&now); ++ /* Allow the date and time to be set externally by an exported ++ environment variable to enable reproducible builds. */ ++ source_date_epoch = getenv ("SOURCE_DATE_EPOCH"); ++ if (source_date_epoch) ++{ ++ errno = 0; ++ now = (time_t) strtol (source_date_epoch, NULL, 10); ++ if (errno != 0) ++error (EXIT_FAILURE, errno, _("\ ++SOURCE_DATE_EPOCH=\"%s\" is not a valid number"), source_date_epoch); ++ ++ /* The function po_strftime uses localtime() to parse the timestamp, so ++ we need to fix the environment timezone to get reproducible results */ ++ setenv("TZ", "UTC", 1); ++} ++ else ++time (&now); ++ + timestring = po_strftime (&now); + + msgstr = xasprintf ("\ diff -Nru gettext-0.19.4/debian/patches/series gettext-0.19.4/debian/patches/series --- gettext-0.19.4/debian/patches/series2015-05-15 17:19:58.0 +0200 +++ gettext-0.19.4/debian/patches/series2015-07-17 15:55:50.0 +0200 @@ -1,2 +1,3 @@ 01-do-not-use-java-in-urlget 02-msgfmt-default-little-endian +03-Replace-timestamp-with-SOURCE_DATE_EPOCH signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#792709: dict-jargon: please support timestamps from environment
Source: dict-jargon Version: 4.4.7-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that dict-jargon could not be built reproducibly. The attached patch removes timestamps from the build system. Once applied, dict-jargon can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -u dict-jargon-4.4.7/debian/jargon2dict.sh dict-jargon-4.4.7/debian/jargon2dict.sh --- dict-jargon-4.4.7/debian/jargon2dict.sh +++ dict-jargon-4.4.7/debian/jargon2dict.sh @@ -77,7 +77,8 @@ echo " [+] formatting dictionary database" - dictfmt -j -s "The Jargon File (version 4.4.7, 29 Dec 2003)" \ + dictfmt -j -s "The Jargon File (version 4.4.7, 29 Dec 2003)" --without-time \ -u "http://catb.org/~esr/jargon/jargsrc.tar.gz"; \ --utf8 --allchars --columns 79 'jargon' < 'extracted' echo " [+] compressing dictionary" + touch --date="$BUILD_DATE" jargon.dict dictzip 'jargon.dict' diff -u dict-jargon-4.4.7/debian/rules dict-jargon-4.4.7/debian/rules --- dict-jargon-4.4.7/debian/rules +++ dict-jargon-4.4.7/debian/rules @@ -1,5 +1,7 @@ #!/usr/bin/make -f +BUILD_DATE := $(shell dpkg-parsechangelog --show-field Date) +export BUILD_DATE DICTDIR=$(CURDIR)/debian/dict-jargon/usr/share/dictd include /usr/share/quilt/quilt.make diff -u dict-jargon-4.4.7/debian/changelog dict-jargon-4.4.7/debian/changelog --- dict-jargon-4.4.7/debian/changelog +++ dict-jargon-4.4.7/debian/changelog @@ -1,3 +1,12 @@ +dict-jargon (4.4.7-2.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Replace timestamps with the last debian/changelog entry timestamp +before calling dictzip and remove timestamps in call to dictfmt to +make the package build reproducibly. + + -- Dhole Fri, 17 Jul 2015 17:56:55 +0200 + dict-jargon (4.4.7-2) unstable; urgency=low * Add dict-server to Depends (Closes: #533717) signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] GSoC 2015 Week 8: Move forward reproducible builds
# 8th week Subject: GSoC 2015 Week 8: Move forward reproducible builds To: soc-coordinat...@lists.alioth.debian.org CC: reproducible-builds@lists.alioth.debian.org Hi, This week I have continued working on the reproducible timestamp approach through the exported variable SOURCE_DATE_EPOCH. I studied the issue lc_messages_randomness [1], which is caused by the tool xgettext in the package gettext. The packages affected have a timestamp embedde with the creation date of .po translation files, which is later transferred to .mo translation files. I wrote a patch for gettext so that xgettext replaces localtime timestamps with the date found in SOURCE_DATE_EPOCH in case it is set. The branch with the changes in the reproducible git repo can be found here: https://anonscm.debian.org/cgit/reproducible/gettext.git/log/?h=pu/reproducible_builds I also uploaded the gettext package with these changes and uploaded to the reproducible builds APT repository, to test on jenkins, which gave the following results: There were 42 unreproducible packages affected by this issue, of which 27 became reproducible. 15 packages are still not reproducible because the call to xgettext doesn't happen under dh. I also opened a bug in Debian providing the patch and updated the wiki about our experimental toolchain. https://bugs.debian.org/792687 I have also worked on individual packages affected by the issue timestamps_difference_by_unzip [2] where 11 packages are affected (9 unreproducible). Out of those 9, I wrote patches for 7 to make them reproducible: - fonts-stix https://bugs.debian.org/792602 - jsmath https://bugs.debian.org/792596 - jsmath-fonts-sprite https://bugs.debian.org/792597 - libreoffice-canzeley-client https://bugs.debian.org/792598 - openthesaurus https://bugs.debian.org/792599 There are 2 packages missing: pdf.js and torbutton, which don't become reproducible with the same procedure as the ohter ones. I'll study them. I also sent patches to two other packages: lives (process a Perl hash in stable order to make it reproducible) https://bugs.debian.org/792593 dict-jargon (affected by timestamps_in_dictionaries) https://bugs.debian.org/792709 For next week I plan to look further into pdf.js and torbutton, try to patch the remaining packages affected by timestamps_in_dictionaries, and work on the issue pdf_created_by_ghostscript [3]. [1] https://reproducible.debian.net/issues/unstable/lc_messages_randomness_issue.html [2] https://reproducible.debian.net/issues/unstable/timestamps_difference_by_unzip_issue.html [3] https://reproducible.debian.net/issues/pdf_created_by_ghostscript_issue.html Best regards, Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#793126: torbutton: please support timestamps from environment
Source: torbutton Version: 1.4.6.3-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that torbutton could not be built reproducibly. The attached patch removes timezone-varying timestamps from the files compressed with zip. Once applied, torbutton can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru torbutton-1.4.6.3/debian/changelog torbutton-1.4.6.3/debian/changelog --- torbutton-1.4.6.3/debian/changelog 2012-10-16 21:22:39.0 +0200 +++ torbutton-1.4.6.3/debian/changelog 2015-07-21 00:35:00.0 +0200 @@ -1,3 +1,11 @@ +torbutton (1.4.6.3-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * add TZ=UTC before zip in makexpi.sh to make the files mtime +invariant to timezone to make the package build reproducibly. + + -- Dhole Tue, 21 Jul 2015 00:34:36 +0200 + torbutton (1.4.6.3-1) unstable; urgency=high * New upstream release: diff -Nru torbutton-1.4.6.3/debian/patches/fix-timezone-in-zip torbutton-1.4.6.3/debian/patches/fix-timezone-in-zip --- torbutton-1.4.6.3/debian/patches/fix-timezone-in-zip1970-01-01 01:00:00.0 +0100 +++ torbutton-1.4.6.3/debian/patches/fix-timezone-in-zip2015-07-21 00:36:48.0 +0200 @@ -0,0 +1,18 @@ +Description: Fix timezone before calling zip +Author: Dhole + +--- + +--- torbutton-1.4.6.3.orig/makexpi.sh torbutton-1.4.6.3/makexpi.sh +@@ -18,8 +18,8 @@ cd ../.. + # create .xpi + echo -- create $APP_NAME.xpi -- + cd src +-echo zip -X -9r ../pkg/$XPI_NAME ./ -x "certDialogsOverride.js" -x "chrome/*" -x "*.diff" -x "*.svn/*" +-zip -X -9r ../pkg/$XPI_NAME ./ -x "components/certDialogsOverride.js" -x "*.svn/*" -x "*.diff" -x "components/torRefSpoofer.js" #-x "chrome/*" ++echo TZ=UTC zip -X -9r ../pkg/$XPI_NAME ./ -x "certDialogsOverride.js" -x "chrome/*" -x "*.diff" -x "*.svn/*" ++TZ=UTC zip -X -9r ../pkg/$XPI_NAME ./ -x "components/certDialogsOverride.js" -x "*.svn/*" -x "*.diff" -x "components/torRefSpoofer.js" #-x "chrome/*" + #mv ../$APP_NAME.jar ./chrome + #zip -9m ../pkg/$XPI_NAME chrome/$APP_NAME.jar + cd .. diff -Nru torbutton-1.4.6.3/debian/patches/series torbutton-1.4.6.3/debian/patches/series --- torbutton-1.4.6.3/debian/patches/series 2012-10-16 21:22:39.0 +0200 +++ torbutton-1.4.6.3/debian/patches/series 2015-07-21 00:36:30.0 +0200 @@ -1,3 +1,4 @@ localhost-proxy.patch restore-status-panel-on-ff4.patch disable-locked-mode.patch +fix-timezone-in-zip signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#793127: pdf.js: please support timestamps from environment
Source: pdf.js Version: 1.1.215+dfsg-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that pdf.js could not be built reproducibly. The attached patch removes timezone-varying timestamps from the files compressed with zip. Once applied, pdf.js can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru pdf.js-1.1.215+dfsg/debian/changelog pdf.js-1.1.215+dfsg/debian/changelog --- pdf.js-1.1.215+dfsg/debian/changelog2015-06-20 21:59:19.0 +0200 +++ pdf.js-1.1.215+dfsg/debian/changelog2015-07-21 16:12:20.0 +0200 @@ -1,3 +1,11 @@ +pdf.js (1.1.215+dfsg-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Set TZ=UTC before calls to zip in make.js to make package build +reproducibly. + + -- Dhole Tue, 21 Jul 2015 16:11:47 +0200 + pdf.js (1.1.215+dfsg-1) unstable; urgency=medium * Update upstream changelog diff -Nru pdf.js-1.1.215+dfsg/debian/patches/fix-timezone-in-zip pdf.js-1.1.215+dfsg/debian/patches/fix-timezone-in-zip --- pdf.js-1.1.215+dfsg/debian/patches/fix-timezone-in-zip 1970-01-01 01:00:00.0 +0100 +++ pdf.js-1.1.215+dfsg/debian/patches/fix-timezone-in-zip 2015-07-21 16:13:08.0 +0200 @@ -0,0 +1,23 @@ +Description: Fix timezone in zip calls + . + pdf.js (1.1.215+dfsg-1.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Set TZ=UTC before calls to zip in make.js to make package build + reproducibly. +Author: Dhole + +--- + +--- pdf.js-1.1.215+dfsg.orig/make.js pdf.js-1.1.215+dfsg/make.js +@@ -831,6 +831,9 @@ target.firefox = function() { + sed('-i', /.*PDFJS_SUPPORTED_LOCALES.*\n/, chromeManifest, + FIREFOX_BUILD_DIR + '/chrome.manifest'); + ++ // Set timezone to UTC before calling zip to get reproducible results. ++ process.env.TZ = 'UTC'; ++ + // Create the xpi + cd(FIREFOX_BUILD_DIR); + exec('zip -r ' + FIREFOX_EXTENSION_NAME + ' ' + diff -Nru pdf.js-1.1.215+dfsg/debian/patches/series pdf.js-1.1.215+dfsg/debian/patches/series --- pdf.js-1.1.215+dfsg/debian/patches/series 2015-06-20 21:24:40.0 +0200 +++ pdf.js-1.1.215+dfsg/debian/patches/series 2015-07-21 16:12:43.0 +0200 @@ -2,3 +2,4 @@ 0002-Fix-build-versions-in-generated-file.patch 0003-Add-adobe-CMaps.patch 0012-Revert-Remove-ShellJS-copy-and-use-the-NPM-version.patch +fix-timezone-in-zip signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] retitle my last two bugs
retitle 793126 torbutton: please make the build reproducible retitle 793127 pdf.js: please make the build reproducible thanks -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#793300: deejayd: please make the build reproducible
Source: deejayd Version: 0.10.0-6 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that deejayd could not be built reproducibly. The attached patch removes timezone-varying timestamps from the files compressed with zip. Once applied, deejayd can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru deejayd-0.10.0/debian/changelog deejayd-0.10.0/debian/changelog --- deejayd-0.10.0/debian/changelog 2014-05-06 07:34:18.0 +0200 +++ deejayd-0.10.0/debian/changelog 2015-07-22 16:55:19.0 +0200 @@ -1,3 +1,10 @@ +deejayd (0.10.0-6.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Fix timezone before creating zip file to make package build reproducible. + + -- Dhole Wed, 22 Jul 2015 16:54:50 +0200 + deejayd (0.10.0-6) unstable; urgency=medium * Depend on libxine2-x (Closes: #747099). diff -Nru deejayd-0.10.0/debian/patches/fix_timezone deejayd-0.10.0/debian/patches/fix_timezone --- deejayd-0.10.0/debian/patches/fix_timezone 1970-01-01 01:00:00.0 +0100 +++ deejayd-0.10.0/debian/patches/fix_timezone 2015-07-22 16:56:04.0 +0200 @@ -0,0 +1,21 @@ +Description: Fix timezone before creating zip + . + deejayd (0.10.0-6.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Fix timezone before creating zip file to make package build reproducible. +Author: Dhole + +--- + +--- deejayd-0.10.0.orig/setup.py deejayd-0.10.0/setup.py +@@ -62,6 +62,8 @@ class build_extension(Command): + + # first remove old zip file + self.clean() ++# Fix timezone to get reproducible results when adding files to zip ++os.environ['TZ'] = 'UTC' + ext_file = ZipFile(self.ext_path, 'w') + for root, dirs, files in os.walk(self.ext_dir): + for f in files: diff -Nru deejayd-0.10.0/debian/patches/series deejayd-0.10.0/debian/patches/series --- deejayd-0.10.0/debian/patches/series2014-05-06 07:27:53.0 +0200 +++ deejayd-0.10.0/debian/patches/series2015-07-22 16:55:44.0 +0200 @@ -7,3 +7,4 @@ mobileuifix xul-webui-firefox-version inotifyfixes +fix_timezone signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] GSoC 2015 Week 9: Move forward reproducible builds
Hi, This week I have patched the two remaining packages tagged by the issue timestamps_difference_by_unzip [1], plus another one also affected by this issue which wasn't tagged: - torbutton https://bugs.debian.org/793126 - pdf.js https://bugs.debian.org/793127 - deejayd https://bugs.debian.org/793300 I have been looking at a package affected by timestamps in zip (moin). I managed to get rid of some of the unreproducibility issues: the timestamps in the metadata shown by zipinfo, out of which some are files mtimes that differ by timezone (solved by settings TZ=UTC before zip/unzip calls), and others are localtime timestamps (solved by replacing timestamps with SOURCE_DATE_EPOCH). After this, some differences still appear, now not seen by zipinfo but in the file treated in binary form. This package adds files to zip through a python script during the build. It requieres further study. I have also studied the issue pdf_created_by_ghostscript [2] which has 18 unreproducible affected packages. There was a tentative patch for ghostcript in our git repository from January, but it had never been submited. The patch allowed the embedded timestamps to be replaced by an exported variable, originally DEB_BUILD_TIMESTAMP, which I changed to SOURCE_DATE_EPOCH to follow our current normalized timestamp proposal. I have also added code to normalize the timezone to UTC in case SOURCE_DATE_EPOCH is used, so that the results are timezone invariant. The commit with the patch can be found at: https://anonscm.debian.org/cgit/reproducible/ghostscript.git/commit/?h=pu/reproducible_builds I have also uploaded the package in our APT repository. I have tested this patched ghostscript with some of the packages affected by pdf_created_by_ghostscript. Unluckily none of them become reproducible without any change. This is because the commands to generate the documentation that use ghostscript don't happen under dh, which currently is the only place where SOURCE_DATE_ECPOH is automatically exported. Upon exporting this variable manually in debian/rules, I obtained the following results: - glosstex (becomes reproducible) - kimwitu++ (timestamp differences from ghostscript disappear. Remaining timestamps come from pdflatex due to timezone variation, akira is working on that) - autoconf (timestamp differences from ghostscript disappear. Remaining timestamps come from other places, further inspection requiered) - cvs (same results obtained, it seems this package was misstagged and actually uses latex to produce pdfs) - proxy-suite (becomes reproducible) - lprng-doc (becomes reproducible) - gstreamer1.0 (timestamp differences from ghostscript disappear. Variable timestamps in .ps files remain, further inspection requiered) - transfig (timestamp differences from ghostscript disappear. Remaining timestamps come from pdflatex due to timezone variation, akira is working on that) For next week I plan to send the ghostscript patches to debian and probably upstream. I'll look further at the remaining issues from the packages I studied this week (the ones affected by pdf_created_by_ghostscript). I may continue looking into moin. [1] https://reproducible.debian.net/issues/unstable/timestamps_difference_by_unzip_issue.html [2] https://reproducible.debian.net/issues/pdf_created_by_ghostscript_issue.html Best regards, Dhole pgpEZnyRJinWQ.pgp Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#794004: ghostscript: please support timestamps from environment
Source: ghostscript Version: 9.15~dfsg-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: toolchain timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that the ghostscript embeds timestamps on the creation of pdf files. For the Reproducible Builds effort we are proposing an environment variable (SOURCE_DATE_EPOCH) [2] that will contain a deterministic epoch timestamp (based on the latest debian/changelog entry) that could be used, which should be automatically exported by debhelper in the future [3]. The attached patch proposes a way to use this variable to get reproducible timestamps in the pdf files generated by ghostscript, if the variable has been set (if not, it falls back to the old behavior). With the attached patch packages using ghostscript would then automatically generate reproducible pdf files. [1]: https://wiki.debian.org/ReproducibleBuilds [2]: https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal [3]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=791815 Regards, -- Dhole diff -Nru ghostscript-9.15~dfsg/debian/changelog ghostscript-9.15~dfsg/debian/changelog --- ghostscript-9.15~dfsg/debian/changelog 2015-07-26 20:17:32.0 +0200 +++ ghostscript-9.15~dfsg/debian/changelog 2015-07-28 18:48:03.0 +0200 @@ -1,3 +1,12 @@ +ghostscript (9.15~dfsg-1.0~reproducible1) UNRELEASED; urgency=medium + + [ Peter De Wachter, Eduard Sanou ] + * Add patch to allow the build timestamp to be set through the environment +variable SOURCE_DATE_EPOCH, and set TZ=UTC in case the external timestamp +is used. This is needed for reproducible builds. + + -- Eduard Sanou Tue, 28 Jul 2015 16:26:20 +0200 + ghostscript (9.15~dfsg-1) unstable; urgency=medium [ upstream ] diff -Nru ghostscript-9.15~dfsg/debian/patches/2010_add_build_timestamp_setting.patch ghostscript-9.15~dfsg/debian/patches/2010_add_build_timestamp_setting.patch --- ghostscript-9.15~dfsg/debian/patches/2010_add_build_timestamp_setting.patch 1970-01-01 01:00:00.0 +0100 +++ ghostscript-9.15~dfsg/debian/patches/2010_add_build_timestamp_setting.patch 2015-07-29 15:59:49.0 +0200 @@ -0,0 +1,122 @@ +Description: Allow the build timestamp to be externally set + In order to make Ghostscript output reproducible, we need a way to + set the build timestamp to other values than the current time. + We now consistently use gp_get_realtime() instead of directly calling + time() or gp_get_usertime() and make gp_get_realtime() use the value + found in the SOURCE_DATE_EPOCH environment variable if set. Also, + environment timezone is fixed to UTC if SOURCE_DATE_EPOCH is used to + avoid variations. +Author: Peter De Wachter , Eduard Sanou + +Index: ghostscript-9.15~dfsg-1.0~reproducible1/base/gp_unix.c +=== +--- ghostscript-9.15~dfsg-1.0~reproducible1.orig/base/gp_unix.c ghostscript-9.15~dfsg-1.0~reproducible1/base/gp_unix.c +@@ -16,6 +16,7 @@ + + /* Unix-specific routines for Ghostscript */ + ++#include "errno_.h" + #include "pipe_.h" + #include "string_.h" + #include "time_.h" +@@ -145,6 +146,7 @@ void + gp_get_realtime(long *pdt) + { + struct timeval tp; ++const char *env; + + #if gettimeofday_no_timezone/* older versions of SVR4 */ + { +@@ -164,6 +166,26 @@ gp_get_realtime(long *pdt) + } + #endif + ++env = getenv("SOURCE_DATE_EPOCH"); ++if (env) { ++char *end; ++long timestamp; ++ ++errno = 0; ++timestamp = strtol(env, &end, 10); ++if (env == end || *end || errno != 0) { ++lprintf("Ghostscript: SOURCE_DATE_EPOCH is not a number!\n"); ++timestamp = 0; ++} ++ ++tp.tv_sec = timestamp; ++tp.tv_usec = 0; ++ ++/* We need to fix the environment timezone to get reproducible */ ++/* results when parsing the result of gp_get_realtime. */ ++setenv("TZ", "UTC", 1); ++} ++ + /* tp.tv_sec is #secs since Jan 1, 1970 */ + pdt[0] = tp.tv_sec; + +Index: ghostscript-9.15~dfsg-1.0~reproducible1/devices/vector/gdevpdf.c +=== +--- ghostscript-9.15~dfsg-1.0~reproducible1.orig/devices/vector/gdevpdf.c ghostscript-9.15~dfsg-1.0~reproducible1/devices/vector/gdevpdf.c +@@ -389,12 +389,14 @@ pdf_initialize_ids(gx_device_pdf * pdev) + */ + { + struct tm tms; ++long secs_ns[2]; + time_t t; + char buf[1+2+4+2+2+2+2+2+1+2+1+2+1+1+1]; /* (D:mmddhhmmssZhh'mm')\0 */ + int timeoffset; + char timesign; + +-time(&t); ++gp_get_realtime(secs_ns); ++t = secs_ns[0]; + tms = *gmtime(&t); + tms
[Reproducible-builds] Bug#794014: moin: please make the build reproducible
Source: moin Version: 1.9.8-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that moin could not be built reproducibly. The attached patch normalizes the timezone and fixes timestamps from the files compressed with zip to a known value (timestamp from the last debian/changelg entry). Once applied, moin can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru moin-1.9.8/debian/changelog moin-1.9.8/debian/changelog --- moin-1.9.8/debian/changelog 2014-10-19 02:40:50.0 +0200 +++ moin-1.9.8/debian/changelog 2015-07-29 16:43:54.0 +0200 @@ -1,3 +1,10 @@ +moin (1.9.8-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Fix timestamps to make package build reproducibly. + + -- Eduard Sanou Wed, 29 Jul 2015 16:43:35 +0200 + moin (1.9.8-1) unstable; urgency=medium * New upstream release, lots of bug fixes diff -Nru moin-1.9.8/debian/process_language_pages moin-1.9.8/debian/process_language_pages --- moin-1.9.8/debian/process_language_pages2014-10-19 01:09:03.0 +0200 +++ moin-1.9.8/debian/process_language_pages2015-07-29 21:48:18.0 +0200 @@ -24,7 +24,7 @@ echo "Cleaning comments in $f" tmp=`mktemp -d --tmpdir=$BASE` || exit 2 cd $tmp - unzip -q $f + TZ=UTC unzip -q $f chmod a+rw ./* egrep -r -l -Z '^## ' * \ | xargs -r -0 -n 1 \ @@ -32,8 +32,11 @@ # ^^ search and drop notes in the 8 first lines. chmod a-w ./* chmod a+w MOIN_PACKAGE + # Fix files mtime before compressing to get reproducible results. + find . -newermt "$(date -u -d @$SOURCE_DATE_EPOCH)" -print0 | \ + xargs -0r touch --no-dereference --date="$(date -u -d @$SOURCE_DATE_EPOCH)" rm $f - zip -q $f * + TZ=UTC zip -X -q $f * cd $BASE rm -Rf $tmp COUNT=$(($COUNT + 1)) diff -Nru moin-1.9.8/debian/rules moin-1.9.8/debian/rules --- moin-1.9.8/debian/rules 2014-10-19 01:09:03.0 +0200 +++ moin-1.9.8/debian/rules 2015-07-29 19:00:17.0 +0200 @@ -8,6 +8,8 @@ staticpath := $(shell sed -n -e "s|^\s*release_short\s*=\s*'\([^']*\)'.*|/moin_static\1|p" MoinMoin/version.py) $(if $(staticpath),,$(error Failed to resolve staticpath)) +export SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog --count 1 -SDate)" +%s) + build-arch build-indep: build-stamp build-stamp: dh_testdir signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#794247: whizzytex: please make the build reproducible
Source: whizzytex Version: 1.3.2-1.3 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that whizzytex could not be built reproducibly. The attached patch removes timestamps from the documentation. Once applied, whizzytex can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru whizzytex-1.3.2/debian/changelog whizzytex-1.3.2/debian/changelog --- whizzytex-1.3.2/debian/changelog2014-09-15 04:44:18.0 +0200 +++ whizzytex-1.3.2/debian/changelog2015-07-31 16:10:39.0 +0200 @@ -1,3 +1,10 @@ +whizzytex (1.3.2-1.4) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Timestamp removed from docs to make package build reproducibly. + + -- Eduard Sanou Fri, 31 Jul 2015 16:10:22 +0200 + whizzytex (1.3.2-1.3) unstable; urgency=medium * Non-maintainer upload. diff -Nru whizzytex-1.3.2/debian/patches/remove_docs_timestamp.patch whizzytex-1.3.2/debian/patches/remove_docs_timestamp.patch --- whizzytex-1.3.2/debian/patches/remove_docs_timestamp.patch 1970-01-01 01:00:00.0 +0100 +++ whizzytex-1.3.2/debian/patches/remove_docs_timestamp.patch 2015-07-31 16:11:06.0 +0200 @@ -0,0 +1,21 @@ +Description: Remove timestamp from docs + . + whizzytex (1.3.2-1.4) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Timestamp removed from docs to make package build reproducibly. +Author: Eduard Sanou + +--- + +--- whizzytex-1.3.2.orig/doc/manual.tex whizzytex-1.3.2/doc/manual.tex +@@ -43,7 +43,7 @@ + \end{rawhtml} + \pagestyle {empty} + \author {\rightline {Didier R{\'e}my}} +-\date {\hfill Version {\version}, \today} ++\date {\hfill Version {\version}} + \begingroup + \let \@\relax + \title { diff -Nru whizzytex-1.3.2/debian/patches/series whizzytex-1.3.2/debian/patches/series --- whizzytex-1.3.2/debian/patches/series 2013-10-06 09:16:11.0 +0200 +++ whizzytex-1.3.2/debian/patches/series 2015-07-31 16:10:51.0 +0200 @@ -1,3 +1,4 @@ 07_bash_makefile.patch 09_compat_config.patch 11_boxsep_boolean.patch +remove_docs_timestamp.patch signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#794248: cortado: please make the build reproducible
Source: cortado Version: 0.6.0-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that cortado could not be built reproducibly. The attached patch replaces the build date found in several .class files (generated by ant) by the timestamp of the latest debian/changelog entry. Once applied, cortado can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru cortado-0.6.0/debian/changelog cortado-0.6.0/debian/changelog --- cortado-0.6.0/debian/changelog 2013-09-24 05:47:39.0 +0200 +++ cortado-0.6.0/debian/changelog 2015-07-31 17:12:51.0 +0200 @@ -1,3 +1,11 @@ +cortado (0.6.0-2.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Replace build date with last entry timestamp from debian/changelog +to make the package build reproduciblu. + + -- Eduard Sanou Fri, 31 Jul 2015 17:12:28 +0200 + cortado (0.6.0-2) unstable; urgency=low * Team upload. diff -Nru cortado-0.6.0/debian/patches/replace_timestamp.patch cortado-0.6.0/debian/patches/replace_timestamp.patch --- cortado-0.6.0/debian/patches/replace_timestamp.patch1970-01-01 01:00:00.0 +0100 +++ cortado-0.6.0/debian/patches/replace_timestamp.patch2015-07-31 17:13:15.0 +0200 @@ -0,0 +1,53 @@ +Description: Replace timestamp + . + cortado (0.6.0-2.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Replace build date with last entry timestamp from debian/changelog + to make the package build reproduciblu. +Author: Eduard Sanou + +--- + +--- cortado-0.6.0.orig/build.xml cortado-0.6.0/build.xml +@@ -83,7 +83,7 @@ Cortado ANT build file + + + +- ++ + + + +@@ -94,15 +94,18 @@ Cortado ANT build file + + + +- ++ ++ ++ + package com.fluendo.player; + + class Configure + { +- public String buildInfo = "Built on ${DATE} GMT (version ${real_version}) in ${build.type} mode."; ++ public String buildInfo = "Built on ${env.BUILD_DATE} UTC (version ${real_version}) in ${build.type} mode."; + +- public String buildDate = "${DATE} GMT"; ++ public String buildDate = "${env.BUILD_DATE} UTC"; + public String buildVersion = "${real_version}"; + public String buildType = "${build.type}"; + public String revision = "${REVISION}"; +@@ -113,7 +116,7 @@ class Configure + } + + Built on ${DATE} (version ${real_version}) in ${build.type} mode. ++>Built on ${env.BUILD_DATE} (version ${real_version}) in ${build.type} mode. + + + diff -Nru cortado-0.6.0/debian/patches/series cortado-0.6.0/debian/patches/series --- cortado-0.6.0/debian/patches/series 2013-09-24 05:47:39.0 +0200 +++ cortado-0.6.0/debian/patches/series 2015-07-31 17:13:01.0 +0200 @@ -1 +1,2 @@ 01_fix_build.diff +replace_timestamp.patch diff -Nru cortado-0.6.0/debian/rules cortado-0.6.0/debian/rules --- cortado-0.6.0/debian/rules 2013-09-24 05:47:39.0 +0200 +++ cortado-0.6.0/debian/rules 2015-07-31 17:12:20.0 +0200 @@ -3,6 +3,9 @@ include /usr/share/cdbs/1/class/ant.mk include /usr/share/cdbs/1/rules/debhelper.mk +export SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog --count 1 -SDate)" +%s) +export BUILD_DATE = $(shell date -u -d @$(SOURCE_DATE_EPOCH) +"%Y-%m-%d %H:%M:%S") + JAVA_HOME = /usr/lib/jvm/default-java DEB_ANT_INSTALL_TARGET = install_applet signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] GSoC 2015 Week 10: Move forward reproducible builds
Hi, This week I finished my work on ghostscript: I updated the ghostscript patch I was working on last week to match newest version (9.15~dfsg-1). In the version update, some patched files where moved and now the Document ID generated by ghostscript uses localtime so I replaced the function by gp_get_realtime which honours SOURCE_DATE_EPOCH in order to get a reproducible ID. I tested the new patch against some packages I tried last week (with the old version) to check that everything worked properly. I pushed the patch updated to our git repo: https://anonscm.debian.org/cgit/reproducible/ghostscript.git/commit/?h=pu/reproducible_builds&id=d6adec96b93f3ed15474d0e967009c14cd21bb48 I also uploaded the package to our APT repository and sent a bug to Debian: https://bugs.debian.org/794004 I have updated the experimental toolchain section in the wiki with the ghostscript patch. I patched moin to make it build reproducible, after a few headaches :P. It turned out that zip was adding timestamp metadata not shown by zipinfo. After normalizing the files mtime, there were still differences in the zip file not shown by zipinfo: it was the last access time metadata. Adding -X to zip solved the issue :D. Patch submitted: https://bugs.debian.org/794014 I started working on qhelpgenerator to honour SOURCE_DATE_EPOCH. The patch is written, the build takes quite some time (5+ hours on the machine I was working on initially, which run out of space, so I prepared another machine with more space). I have it built and will proceed with testing next week I also tagged some packages without notes that were affected by several issues I can recognize easily now that I've been looking at many packages for the past two months. From those packages I patched two: - whizzytex (remove timestamp) https://bugs.debian.org/794247 - cortado (replace timestamp with debian/changelog) https://bugs.debian.org/794248 Best regards, -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#794681: qt4-x11: please support timestamps from environment
Source: qt4-x11 Version: 4:4.8.7+dfsg-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: toolchain timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that the qhelpgenerator tool from qt4-x11 embeds timestamps on the creation of qch files. For the Reproducible Builds effort we are proposing an environment variable (SOURCE_DATE_EPOCH) [2] that will contain a deterministic epoch timestamp (based on the latest debian/changelog entry) that could be used, which should be automatically exported by debhelper in the future [3]. The attached patch proposes a way to use this variable to get reproducible timestamps in the qch files generated by qhelpgenerator, if the variable has been set (if not, it falls back to the old behavior). With the attached patch packages using qhelpgenerator would then automatically embed reproducible timestamps in qch files. [1]: https://wiki.debian.org/ReproducibleBuilds [2]: https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal [3]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=791815 Regards, -- Dhole diff -Nru qt4-x11-4.8.7+dfsg/debian/changelog qt4-x11-4.8.7+dfsg/debian/changelog --- qt4-x11-4.8.7+dfsg/debian/changelog 2015-08-02 22:01:18.0 +0200 +++ qt4-x11-4.8.7+dfsg/debian/changelog 2015-08-04 15:19:05.0 +0200 @@ -1,3 +1,11 @@ +qt4-x11 (4:4.8.7+dfsg-2.0~reproducible1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Add support for reproducible builds by using $SOURCE_DATE_EPOCH as the +embedded timestamps in qch files generated with qhelpgenerator. + + -- Eduard Sanou Tue, 04 Aug 2015 15:17:35 +0200 + qt4-x11 (4:4.8.7+dfsg-2) experimental; urgency=medium * Add Daniel Schepler's QtScript_x32_config.diff and x32.diff to let Qt4 diff -Nru qt4-x11-4.8.7+dfsg/debian/patches/Replace_timestamp_with_SOURCE_DATE_EPOCH_in_qhelpgenerator.patch qt4-x11-4.8.7+dfsg/debian/patches/Replace_timestamp_with_SOURCE_DATE_EPOCH_in_qhelpgenerator.patch --- qt4-x11-4.8.7+dfsg/debian/patches/Replace_timestamp_with_SOURCE_DATE_EPOCH_in_qhelpgenerator.patch 1970-01-01 01:00:00.0 +0100 +++ qt4-x11-4.8.7+dfsg/debian/patches/Replace_timestamp_with_SOURCE_DATE_EPOCH_in_qhelpgenerator.patch 2015-08-04 15:41:15.0 +0200 @@ -0,0 +1,102 @@ +Description: Allow the timestamps from qhelpgenerator to be externally set + In order to make qhelpgenerator output reproducible, we need a way to + set the embedded timestamps to other values than the current time. + We define a new method for QDateTime (reproducibleDateTime) that returns + a deterministic datetime object when the SOURCE_DATE_EPOCH environment + variable is set with a unix epoch timestamp, containing the datetime + defined by SOURCE_DATE_EPOCH in UTC. We replace some instances of + QDateTime::currentDateTime() by QDateTime::reproducibleDateTime() in the + sources of qhelpgenerator to make the output reproducible. +Author: Eduard Sanou + +--- qt4-x11-4.8.7+dfsg.orig/src/corelib/tools/qdatetime.cpp qt4-x11-4.8.7+dfsg/src/corelib/tools/qdatetime.cpp +@@ -2892,6 +2892,15 @@ bool QDateTime::operator<(const QDateTim + */ + + /*! ++\fn QDateTime QDateTime::reproducibleDateTime() ++If the environment variable SOURCE_DATE_EPOCH containing a unix epoch date ++is set, returns the datetime in SOURCE_DATE_EPOCH, in UTC. ++If SOURCE_DATE_EPOCH is not set, behaves as QDateTime::currentDateTime(). ++ ++\sa currentDateTimeUtc(), QDate::currentDate(), QTime::currentTime(), toTimeSpec() ++*/ ++ ++/*! + \fn QDateTime QDateTime::currentDateTimeUtc() + \since 4.7 + Returns the current datetime, as reported by the system clock, in +@@ -3120,6 +3129,29 @@ QDateTime QDateTime::currentDateTime() + return dt; + } + ++QDateTime QDateTime::reproducibleDateTime() ++{ ++QByteArray env_date; ++QDateTime date; ++bool env_date_ok; ++long timestamp; ++ ++env_date = qgetenv("SOURCE_DATE_EPOCH"); ++if (env_date.length() != 0) { ++timestamp = env_date.toLong(&env_date_ok, 10); ++if (!env_date_ok) { ++// "SOURCE_DATE_EPOCH is not a number! ++timestamp = 0; ++} ++date = QDateTime::fromTime_t(timestamp).toUTC(); ++} else { ++date = QDateTime::currentDateTime(); ++} ++ ++return date; ++} ++ ++ + QDateTime QDateTime::currentDateTimeUtc() + { + // posix compliant system +--- qt4-x11-4.8.7+dfsg.orig/src/corelib/tools/qdatetime.h qt4-x11-4.8.7+dfsg/src/corelib/tools/qdatetime.h +@@ -264,6 +264,7 @@ public: + int utcOffset() const; + + static QDateTime currentDateTime(); ++static QDateTime reproducibleDateTime(); + static QDateTime currentDateTimeUtc(); + #ifndef QT_NO_DATESTRING + static QDateTime fromString(const QString &s, Qt::DateFormat f = Qt::TextDate); +--- qt
Re: [Reproducible-builds] Bug#792687: gettext: please support timestamps from environment
On 07/17/2015 04:08 PM, Dhole wrote: > Source: gettext > Version: 0.19.4-1 > Severity: wishlist > Tags: patch > User: reproducible-builds@lists.alioth.debian.org > Usertags: toolchain timestamps > X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org > > Hi, > > While working on the "reproducible builds" effort [1], we have noticed > that the xgettext tool from gettext embeds timestamps on the creation of > PO files. > > For the Reproducible Builds effort we are proposing an environment > variable (SOURCE_DATE_EPOCH) [2] that will contain a deterministic epoch > timestamp (based on the latest debian/changelog entry) that could be > used, which should be automatically exported by debhelper in the future [3]. > > The attached patch proposes a way to use this variable to get > reproducible timestamps in the PO files generated by xgettext, if the > variable has been set (if not, it falls back to the old behavior). > With the attached patch packages using xgettext would then automatically > generate reproducible translation files. > > > [1]: https://wiki.debian.org/ReproducibleBuilds > [2]: https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal > [3]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=791815 > > Regards, > > > > ___ > Reproducible-builds mailing list > Reproducible-builds@lists.alioth.debian.org > http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds > Hi I'm attaching an update of the submitted patch targeting the latest gettext version from Debian: 0.19.5.1-1 Regards, -- Dhole diff -Nru gettext-0.19.5.1/debian/changelog gettext-0.19.5.1/debian/changelog --- gettext-0.19.5.1/debian/changelog 2015-08-02 21:41:33.0 +0200 +++ gettext-0.19.5.1/debian/changelog 2015-08-04 18:44:31.0 +0200 @@ -1,3 +1,11 @@ +gettext (0.19.5.1-1.0~reproducible1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Add support for reproducible builds by using $SOURCE_DATE_EPOCH as the +date on creation of PO files with xgettext. + + -- Eduard Sanou Tue, 04 Aug 2015 18:43:52 +0200 + gettext (0.19.5.1-1) unstable; urgency=medium * New upstream release. diff -Nru gettext-0.19.5.1/debian/patches/04-Replace-timestamp-with-SOURCE_DATE_EPOCH gettext-0.19.5.1/debian/patches/04-Replace-timestamp-with-SOURCE_DATE_EPOCH --- gettext-0.19.5.1/debian/patches/04-Replace-timestamp-with-SOURCE_DATE_EPOCH 1970-01-01 01:00:00.0 +0100 +++ gettext-0.19.5.1/debian/patches/04-Replace-timestamp-with-SOURCE_DATE_EPOCH 2015-08-04 18:46:17.0 +0200 @@ -0,0 +1,45 @@ +Description: Replace date timestamp by SOURCE_DATE_EPOCH env var in xgettext + . + gettext (0.19.5.1-1.0~reproducible1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Add support for reproducible builds by using $SOURCE_DATE_EPOCH as the + date on creation of PO files with xgettext. +Author: Eduard Sanou + +--- gettext-0.19.5.1.orig/gettext-tools/src/xgettext.c gettext-0.19.5.1/gettext-tools/src/xgettext.c +@@ -3516,6 +3516,7 @@ construct_header () + message_ty *mp; + char *msgstr; + char *comment; ++ char *source_date_epoch; + static lex_pos_ty pos = { __FILE__, __LINE__ }; + + if (package_name != NULL) +@@ -3537,7 +3538,24 @@ the MSGID_BUGS_ADDRESS variable there; o + specify an --msgid-bugs-address command line option.\n\ + "))); + +- time (&now); ++ /* Allow the date and time to be set externally by an exported ++ environment variable to enable reproducible builds. */ ++ source_date_epoch = getenv ("SOURCE_DATE_EPOCH"); ++ if (source_date_epoch) ++{ ++ errno = 0; ++ now = (time_t) strtol (source_date_epoch, NULL, 10); ++ if (errno != 0) ++error (EXIT_FAILURE, errno, _("\ ++SOURCE_DATE_EPOCH=\"%s\" is not a valid number"), source_date_epoch); ++ ++ /* The function po_strftime uses localtime() to parse the timestamp, so ++ we need to fix the environment timezone to get reproducible results */ ++ setenv("TZ", "UTC", 1); ++} ++ else ++time (&now); ++ + timestring = po_strftime (&now); + + msgstr = xasprintf ("\ diff -Nru gettext-0.19.5.1/debian/patches/series gettext-0.19.5.1/debian/patches/series --- gettext-0.19.5.1/debian/patches/series 2015-08-02 20:37:20.0 +0200 +++ gettext-0.19.5.1/debian/patches/series 2015-08-04 18:45:51.0 +0200 @@ -1,3 +1,4 @@ 01-do-not-use-java-in-urlget 02-msgfmt-default-little-endian 03-fix-gettextize-version +04-Replace-timestamp-with-SOURCE_DATE_EPOCH signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#794779: foxyproxy: please make the build reproducible
Source: foxyproxy Version: 3.4-1.1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that foxyproxy could not be built reproducibly. The attached patch removes timezone-varying timestamps from the files compressed with zip. Once applied, foxyproxy can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -u foxyproxy-3.4/debian/rules foxyproxy-3.4/debian/rules --- foxyproxy-3.4/debian/rules +++ foxyproxy-3.4/debian/rules @@ -18,7 +18,7 @@ rm -rf get-orig-source override_dh_auto_build: - cd src; ant build-foxyproxy-standard + cd src; TZ=UTC ant build-foxyproxy-standard mv targets/foxyproxy-standard*.xpi . rmdir targets/ diff -u foxyproxy-3.4/debian/changelog foxyproxy-3.4/debian/changelog --- foxyproxy-3.4/debian/changelog +++ foxyproxy-3.4/debian/changelog @@ -1,3 +1,11 @@ +foxyproxy (3.4-1.2) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Set TZ=UTC before calling ant to normalize timezones and make the package +build reproducibly. + + -- Eduard Sanou Wed, 05 Aug 2015 18:54:11 +0200 + foxyproxy (3.4-1.1) unstable; urgency=low * Non-maintainer upload. signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#794781: xul-ext-monkeysphere: please make the build reproducible
Source: xul-ext-monkeysphere Version: 0.8-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that xul-ext-monkeysphere could not be built reproducibly. The attached patch removes timezone-varying timestamps from the files compressed with zip. Once applied, xul-ext-monkeysphere can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru xul-ext-monkeysphere-0.8/debian/changelog xul-ext-monkeysphere-0.8/debian/changelog --- xul-ext-monkeysphere-0.8/debian/changelog 2013-09-20 07:34:11.0 +0200 +++ xul-ext-monkeysphere-0.8/debian/changelog 2015-08-05 19:22:42.0 +0200 @@ -1,3 +1,11 @@ +xul-ext-monkeysphere (0.8-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * add TZ=UTC before zip in Makefile to make the files mtime +invariant to timezone to make the package build reproducibly. + + -- Eduard Sanou Wed, 05 Aug 2015 19:21:53 +0200 + xul-ext-monkeysphere (0.8-1) unstable; urgency=low * New Upstream Release (Closes: #720600) thanks Kristian Fiskerstrand! diff -Nru xul-ext-monkeysphere-0.8/debian/patches/fix_timezone.patch xul-ext-monkeysphere-0.8/debian/patches/fix_timezone.patch --- xul-ext-monkeysphere-0.8/debian/patches/fix_timezone.patch 1970-01-01 01:00:00.0 +0100 +++ xul-ext-monkeysphere-0.8/debian/patches/fix_timezone.patch 2015-08-05 19:23:23.0 +0200 @@ -0,0 +1,22 @@ +Description: Fix timezone in zip + . + xul-ext-monkeysphere (0.8-1.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * add TZ=UTC before zip in Makefile to make the files mtime + invariant to timezone to make the package build reproducibly. +Author: Eduard Sanou + +--- + +--- xul-ext-monkeysphere-0.8.orig/Makefile xul-ext-monkeysphere-0.8/Makefile +@@ -12,7 +12,7 @@ ICONS = $(addprefix chrome/content/, bro + VERSION = $(shell head -n1 Changelog | sed -e 's/^.*(//' -e 's/).*$$//') + + monkeysphere.xpi: $(XPI_CONTENTS) $(ICONS) +- zip $@ $(XPI_CONTENTS) $(ICONS) ++ TZ=UTC zip $@ $(XPI_CONTENTS) $(ICONS) + + install.rdf: install.rdf.template Changelog + sed 's/__VERSION__/$(VERSION)/' < $< > $@ diff -Nru xul-ext-monkeysphere-0.8/debian/patches/series xul-ext-monkeysphere-0.8/debian/patches/series --- xul-ext-monkeysphere-0.8/debian/patches/series 1970-01-01 01:00:00.0 +0100 +++ xul-ext-monkeysphere-0.8/debian/patches/series 2015-08-05 19:22:56.0 +0200 @@ -0,0 +1 @@ +fix_timezone.patch signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#794792: freeipmi: please make the build reproducible
Source: freeipmi Version: 1.4.9-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that freeipmi could not be built reproducibly. The attached patch replaces the timestamp in the docs with the latest debian/changelog entry timestamp. Once applied, freeipmi can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru freeipmi-1.4.9/debian/changelog freeipmi-1.4.9/debian/changelog --- freeipmi-1.4.9/debian/changelog 2015-07-01 16:09:12.0 +0200 +++ freeipmi-1.4.9/debian/changelog 2015-08-06 17:17:47.0 +0200 @@ -1,3 +1,12 @@ +freeipmi (1.4.9-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Replace man pages dates with the timestamp from the latest +debian/changelog entry using the variable SOURCE_DATE_EPOCH to make the +package build reproducibly. + + -- Eduard Sanou Thu, 06 Aug 2015 17:16:40 +0200 + freeipmi (1.4.9-1) unstable; urgency=medium * Fresh upstream release diff -Nru freeipmi-1.4.9/debian/patches/honour-SOURCE_DATE_EPOCH.patch freeipmi-1.4.9/debian/patches/honour-SOURCE_DATE_EPOCH.patch --- freeipmi-1.4.9/debian/patches/honour-SOURCE_DATE_EPOCH.patch 1970-01-01 01:00:00.0 +0100 +++ freeipmi-1.4.9/debian/patches/honour-SOURCE_DATE_EPOCH.patch 2015-08-06 17:18:43.0 +0200 @@ -0,0 +1,21 @@ +Description: Honour SOURCE_DATE_EPOCH in manpages + . + freeipmi (1.4.9-1.1) UNRELEASED; urgency=medium + . + * Non-maintainer upload. + * Replace man pages dates with the timestamp from the latest + debian/changelog entry using the variable SOURCE_DATE_EPOCH to make the + package build reproducibly. +Author: Eduard Sanou + +--- freeipmi-1.4.9.orig/configure freeipmi-1.4.9/configure +@@ -2723,7 +2723,7 @@ ac_config_headers="$ac_config_headers co + ac_config_files="$ac_config_files freeipmi.spec Makefile bmc-device/Makefile bmc-info/Makefile bmc-watchdog/Makefile common/Makefile common/debugutil/Makefile common/miscutil/Makefile common/parsecommon/Makefile common/pingtool/Makefile common/portability/Makefile common/toolcommon/Makefile contrib/Makefile doc/Makefile etc/Makefile ipmi-chassis/Makefile ipmi-config/Makefile ipmi-dcmi/Makefile ipmi-fru/Makefile ipmi-locate/Makefile ipmi-oem/Makefile ipmi-pet/Makefile ipmi-raw/Makefile ipmi-sel/Makefile ipmi-sensors/Makefile ipmiconsole/Makefile ipmidetect/Makefile ipmidetectd/Makefile ipmiping/Makefile ipmipower/Makefile ipmiseld/Makefile libfreeipmi/Makefile libfreeipmi/libfreeipmi.pc libfreeipmi/include/Makefile libfreeipmi/include/freeipmi/freeipmi.h libipmiconsole/Makefile libipmiconsole/ipmiconsole.h libipmiconsole/libipmiconsole.pc libipmidetect/Makefile libipmidetect/ipmidetect.h libipmidetect/libipmidetect.pc libipmimonitoring/Makefile libipmimonitoring/ipmi_monitoring.h libipmimonitoring/libipmimonitoring.pc man/Makefile man/bmc-device.8.pre man/bmc-info.8.pre man/bmc-watchdog.8.pre man/freeipmi.conf.5.pre man/freeipmi.7.pre man/ipmi-chassis.8.pre man/ipmi-config.8.pre man/ipmi-config.conf.5.pre man/ipmi-dcmi.8.pre man/ipmi-fru.8.pre man/ipmi-locate.8.pre man/ipmi-oem.8.pre man/ipmi-pet.8.pre man/ipmi-raw.8.pre man/ipmi-sel.8.pre man/ipmi-sensors.8.pre man/ipmiconsole.8.pre man/ipmidetect.8.pre man/ipmidetect.conf.5.pre man/ipmidetectd.8.pre man/ipmidetectd.conf.5.pre man/ipmiping.8.pre man/ipmipower.8.pre man/ipmiseld.8.pre man/ipmiseld.conf.5.pre man/libfreeipmi.3.pre man/freeipmi_interpret_sensor.conf.5.pre man/freeipmi_interpret_sel.conf.5.pre man/libipmiconsole.3.pre man/libipmiconsole.conf.5.pre man/libipmidetect.3.pre man/libipmimonitoring.3.pre man/rmcpping.8.pre rmcpping/Makefile" + + +-ISODATE=`date +%Y-%m-%d` ++ISODATE=`date -u -d @$SOURCE_DATE_EPOCH +%Y-%m-%d` + + + # libfreeipmi libtool versioning diff -Nru freeipmi-1.4.9/debian/patches/series freeipmi-1.4.9/debian/patches/series --- freeipmi-1.4.9/debian/patches/series2015-07-01 16:09:12.0 +0200 +++ freeipmi-1.4.9/debian/patches/series2015-08-06 17:18:17.0 +0200 @@ -1 +1,2 @@ deb_bmc-watchdog_noRUN +honour-SOURCE_DATE_EPOCH.patch diff -Nru freeipmi-1.4.9/debian/rules freeipmi-1.4.9/debian/rules --- freeipmi-1.4.9/debian/rules 2015-07-01 16:09:12.0 +0200 +++ freeipmi-1.4.9/debian/rules 2015-08-06 17:12:52.0 +0200 @@ -1,6 +1,8 @@ #!/usr/bin/make -f # -*- makefile -*- +export SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog --count 1 -SDate)" +%s) + # --fail-missing for dh_install # --link-doc for dh_installdocs %: signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org
[Reproducible-builds] Bug#794793: doc-base: please make the build reproducible
Source: doc-base Version: 0.10.6 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that doc-base could not be built reproducibly. The attached patch sets the timeznoe to UTC for the timestamps in the docs. Once applied, doc-base can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru doc-base-0.10.6/common.mk doc-base-0.10.6+nmu1/common.mk --- doc-base-0.10.6/common.mk 2014-08-24 22:15:11.0 +0200 +++ doc-base-0.10.6+nmu1/common.mk 2015-08-06 17:50:25.0 +0200 @@ -35,7 +35,7 @@ DATE := $(shell LC_ALL=C dpkg-parsechangelog -l$(CHANGELOGFILE) \ | sed -n 's/^Date: *//p') # pretty-print the date; I wish this was dynamic like the top-level makefile but oh well - DATE_EN := $(shell LC_ALL=C date --date="$(DATE)" '+%d %B, %Y') + DATE_EN := $(shell LC_ALL=C date -u --date="$(DATE)" '+%d %B, %Y') export VERSION DATE DATE_EN unexport CDPATH diff -Nru doc-base-0.10.6/debian/changelog doc-base-0.10.6+nmu1/debian/changelog --- doc-base-0.10.6/debian/changelog2014-08-24 22:15:11.0 +0200 +++ doc-base-0.10.6+nmu1/debian/changelog 2015-08-06 17:00:50.0 +0200 @@ -1,3 +1,10 @@ +doc-base (0.10.6+nmu1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Set UTC date when generating docs to get reproducible results. + + -- Eduard Sanou Thu, 06 Aug 2015 17:00:34 +0200 + doc-base (0.10.6) unstable; urgency=medium * Fix `Possible precedence issue with control flow operator' signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#794795: debiandoc-sgml-doc: please make the build reproducible
Source: debiandoc-sgml-doc Version: 1.1.23 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that debiandoc-sgml-doc could not be built reproducibly. The attached patch removes timestamps from the documentation (I didn't find a way to pass an external variable/date to the debiandoc tools to replace the tag). Once applied, debiandoc-sgml-doc can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru debiandoc-sgml-doc-1.1.23/debian/changelog debiandoc-sgml-doc-1.1.23+nmu1/debian/changelog --- debiandoc-sgml-doc-1.1.23/debian/changelog 2014-10-19 10:25:41.0 +0200 +++ debiandoc-sgml-doc-1.1.23+nmu1/debian/changelog 2015-08-06 18:16:10.0 +0200 @@ -1,3 +1,11 @@ +debiandoc-sgml-doc (1.1.23+nmu1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Remove timestamp from the documentation to make the package build +reproducibly. + + -- Eduard Sanou Thu, 06 Aug 2015 18:15:47 +0200 + debiandoc-sgml-doc (1.1.23) unstable; urgency=medium * Update git URL and policy. diff -Nru debiandoc-sgml-doc-1.1.23/en/titletoc.sgml debiandoc-sgml-doc-1.1.23+nmu1/en/titletoc.sgml --- debiandoc-sgml-doc-1.1.23/en/titletoc.sgml 2011-11-07 12:34:50.0 +0100 +++ debiandoc-sgml-doc-1.1.23+nmu1/en/titletoc.sgml 2015-08-06 18:15:33.0 +0200 @@ -16,8 +16,6 @@ I consider them to be trivial and donated my work to the public. This is the reason why I do not put my name here. --> - - This is the manual of the DebianDoc-SGML DTD and tools. signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Re: [Reproducible-builds] Bug#794795: debiandoc-sgml-doc: please make the build reproducible
On 08/07/2015 03:39 PM, Osamu Aoki wrote: > I noticed many people are fixing this issue in this way. That may fix > some itch for small group of highly technically minded people but does > disservice to many end-users. > > We should better as DD than the one proposed. >> - > > That's very rough approach. > > Let's promote to use the last changelog entry date for this kind of > BUILD_DATE for reproducible build. > > I think something like the following to set it: > > # short date of this Debian package (debian/changelog) > BUILD_DATE ?= $(shell { date +'%Y-%m-%d' -d"`dpkg-parsechangelog -SDate`" || > date +'(No changelog) %Y-%m-%d' ; }) > > Patch should be more like > >> - >> + &builddate; > > Then set the date via entity. > > Osamu > Hi Osamu, I understand your concern about keeping the date on the generated docs. As per your suggested solution: replacing the timestamp with the date from latests debian/changelog entry is something we are usually doing in the reproducible builds team to fix issues like this one. In this case, I didn't find a nice way to pass an external variable to the sgml files. That's why my first approach was to plainly remove the timestamp (It happens in many packages that the timestamp is not really needed). But I understand that in debiandoc-sgml-doc the date should be kept. I've searched through the documentation of debiandoc, but I didn't find how to pass external values. How do you define an entity (&builddate in your example) so that it can be filled externally? I can provide a patch like that once I learn how to pass external variables to the docs :) Thanks! -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Re: [Reproducible-builds] Bug#794792: freeipmi: please make the build reproducible
On 08/07/2015 06:45 AM, Johannes Schauer wrote: > Hi, > > just some (hopefully helpful) comments about your freeipmi patch. Not CC-ing > the bug so that it's completely up to you whether you want to address my > comments or not. > > Quoting Dhole (2015-08-06 19:13:22) >> The attached patch replaces the timestamp in the docs with the latest >> debian/changelog entry timestamp. Once applied, freeipmi can be built >> reproducibly in our current experimental framework. >> >> [...] >> >> --- freeipmi-1.4.9/debian/patches/honour-SOURCE_DATE_EPOCH.patch >> 1970-01-01 01:00:00.0 +0100 >> +++ freeipmi-1.4.9/debian/patches/honour-SOURCE_DATE_EPOCH.patch >> 2015-08-06 17:18:43.0 +0200 >> @@ -0,0 +1,21 @@ >> +Description: Honour SOURCE_DATE_EPOCH in manpages >> + . >> + freeipmi (1.4.9-1.1) UNRELEASED; urgency=medium >> + . >> + * Non-maintainer upload. >> + * Replace man pages dates with the timestamp from the latest >> + debian/changelog entry using the variable SOURCE_DATE_EPOCH to make the >> + package build reproducibly. >> +Author: Eduard Sanou > > Usually, you would not put the debian/changelog entry as a patch Description. > See here for samples of how to describe patches best and which headers you can > and/or should use: http://dep.debian.net/deps/dep3/ > I just took the lazy approach to leave the template message generated by `dpkg-source --commit`. I've written a properly formatted description now. >> +--- freeipmi-1.4.9.orig/configure >> freeipmi-1.4.9/configure >> +@@ -2723,7 +2723,7 @@ ac_config_headers="$ac_config_headers co >> + ac_config_files="$ac_config_files freeipmi.spec Makefile >> bmc-device/Makefile bmc-info/Makefile bmc-watchdog/Makefile common/Makefile >> common/debugutil/Makefile common/miscutil/Makefile >> common/parsecommon/Makefile common/pingtool/Makefile >> common/portability/Makefile common/toolcommon/Makefile contrib/Makefile >> doc/Makefile etc/Makefile ipmi-chassis/Makefile ipmi-config/Makefile >> ipmi-dcmi/Makefile ipmi-fru/Makefile ipmi-locate/Makefile ipmi-oem/Makefile >> ipmi-pet/Makefile ipmi-raw/Makefile ipmi-sel/Makefile ipmi-sensors/Makefile >> ipmiconsole/Makefile ipmidetect/Makefile ipmidetectd/Makefile >> ipmiping/Makefile ipmipower/Makefile ipmiseld/Makefile libfreeipmi/Makefile >> libfreeipmi/libfreeipmi.pc libfreeipmi/include/Makefile >> libfreeipmi/include/freeipmi/freeipmi.h libipmiconsole/Makefile >> libipmiconsole/ipmiconsole.h libipmiconsole/libipmiconsole.pc >> libipmidetect/Makefile libipmidetect/ipmidetect.h >> libipmidetect/libipmidetect.pc libipmimonitoring/Makefile >> libipmimonitoring/ipmi_monitoring.h libipmimonitoring/libipmimonitoring.pc man/Makefile man/bmc-device.8.pre man/bmc-info.8.pre man/bmc-watchdog.8.pre man/freeipmi.conf.5.pre man/freeipmi.7.pre man/ipmi-chassis.8.pre man/ipmi-config.8.pre man/ipmi-config.conf.5.pre man/ipmi-dcmi.8.pre man/ipmi-fru.8.pre man/ipmi-locate.8.pre man/ipmi-oem.8.pre man/ipmi-pet.8.pre man/ipmi-raw.8.pre man/ipmi-sel.8.pre man/ipmi-sensors.8.pre man/ipmiconsole.8.pre man/ipmidetect.8.pre man/ipmidetect.conf.5.pre man/ipmidetectd.8.pre man/ipmidetectd.conf.5.pre man/ipmiping.8.pre man/ipmipower.8.pre man/ipmiseld.8.pre man/ipmiseld.conf.5.pre man/libfreeipmi.3.pre man/freeipmi_interpret_sensor.conf.5.pre man/freeipmi_interpret_sel.conf.5.pre man/libipmiconsole.3.pre man/libipmiconsole.conf.5.pre man/libipmidetect.3.pre man/libipmimonitoring.3.pre man/rmcpping.8.pre rmcpping/Makefile" >> + >> + >> +-ISODATE=`date +%Y-%m-%d` >> ++ISODATE=`date -u -d @$SOURCE_DATE_EPOCH +%Y-%m-%d` >> + >> + >> + # libfreeipmi libtool versioning > > The file you are patching here, ./configure, is autogenerated from another > file > called ./configure.ac in the freeimpi sources. Maintainers are encouraged to > rebuild their ./configure file from ./configure.ac at build time for various > reasons but even if the freeimpi maintainer does not decide to do that in the > near future, your changes will probably be overwritten by the next upstream > release which changes the ./configure.ac and thus regenerates ./configure. It > is thus better to patch the source of ./configure in ./configure.ac about > here: > http://sources.debian.net/src/freeipmi/1.4.9-1/configure.ac/#L109 and suggest > to upstream to call dh with `--with --autoreconf` instead of their current > `--with autotools_dev` in debian/rules. > I actually missed the configure.ac! Thanks for noticing. I've written the patch targeting configure.ac now, and changed the dh from autotools to autoreconf (Otherwise only aut
[Reproducible-builds] GSoC 2015 Week 11: Move forward reproducible builds
Hi, This week I have updated my patch for gettext to target the new version uploaded to Debian unstable (0.19.5.1-1). I pushed the updated patch to our git repo: https://anonscm.debian.org/cgit/reproducible/gettext.git/commit/?h=pu/reproducible_builds&id=b6e972eab1f04f3fbd368433b496f1f4a6b372a3 I have also uploaded the new build to our custom APT repository, and attached the patch to the open bug: https://bugs.debian.org/792687 I have written a patch for the qthelpgenerator tool from qt4-x11 to honour SOURCE_DATE_EPOCH when embedding timestamps in the generated qch files (see issue timestamps_in_qch [1]). The tool qthelpgenerator embeds timestamps in different places, so in order to find a general solution I added the method reproducibleDateTime in the class QDateTime which returns a deterministic date honouring SOURCE_DATE_EPOCH in case the variable is set. Then I replaced the instances of QDateTime::currentDateTime() with QDateTime::reproducibleDateTime() where needed. I have pushed the patch to our git repo: https://anonscm.debian.org/cgit/reproducible/qt4-x11.git/commit/?h=pu/reproducible_builds&id=ee300f6185ce82eb932dbe1b2dca2113b88afb56 I have also uploaded the build to our custom APT repository, and opened a bug with the patch in Debian: https://bugs.debian.org/794681 And I have also updated the wiki accordingly. After patching qt4-x11, 3 packages became reproducible in my machine: - ktikz - qmf - linkchecker qmf didn't become reproducible in Jenkins: there is a weird issue with having different files in build 1 and 2 (apparently files are missing in both builds). This may be caused by parallelism issues and needs further investigation. There are still 12 packages that where tagged with timestamps_in_qch that didn't become reproducible. They are affected by randomness_in_qdoc [2]. Also some of them show variations in qch files (it seems to be a history of SQL commands that differ between builds). I have fixed some individual packages without notes: Affected by timestamps in zip metadata (timestamps_in_zip issue) - foxyproxy https://bugs.debian.org/794779 - xul-ext-monkeysphere https://bugs.debian.org/794781 Embedding of dates: - freeipmi https://bugs.debian.org/794792 - doc-base https://bugs.debian.org/794793 - debiandoc-sgml-doc https://bugs.debian.org/794795 For next week I'll probably look at the randomness_in_qdoc [2] issue. [1] https://reproducible.debian.net/issues/unstable/timestamps_in_qch_issue.html [2] https://reproducible.debian.net/issues/unstable/randomness_in_qdoc_issue.html Best regards, -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Re: [Reproducible-builds] [Soc-coordination] GSoC 2015 Week 11: Move forward reproducible builds
I forgot to add that I wrote a second blog post at https://dhole.github.io/post/reproducible_builds_debian_gsoc2015_update_1/ describing my experiences of these two months of work in the reproducible builds project. I also wrote about my impressions on the project and in working on a free software project. Thanks h01ger for reminding me about this! -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Re: [Reproducible-builds] Bug#794681: qt4-x11: please support timestamps from environment
On 08/05/2015 06:03 PM, Dhole wrote: > Source: qt4-x11 > Version: 4:4.8.7+dfsg-2 > Severity: wishlist > Tags: patch > User: reproducible-builds@lists.alioth.debian.org > Usertags: toolchain timestamps > X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org > > Hi, > > While working on the "reproducible builds" effort [1], we have noticed > that the qhelpgenerator tool from qt4-x11 embeds timestamps on the > creation of qch files. > > For the Reproducible Builds effort we are proposing an environment > variable (SOURCE_DATE_EPOCH) [2] that will contain a deterministic epoch > timestamp (based on the latest debian/changelog entry) that could be > used, which should be automatically exported by debhelper in the future [3]. > > The attached patch proposes a way to use this variable to get > reproducible timestamps in the qch files generated by qhelpgenerator, if > the variable has been set (if not, it falls back to the old behavior). > With the attached patch packages using qhelpgenerator would then > automatically embed reproducible timestamps in qch files. > > > [1]: https://wiki.debian.org/ReproducibleBuilds > [2]: https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal > [3]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=791815 > > Regards, > > > > ___ > Reproducible-builds mailing list > Reproducible-builds@lists.alioth.debian.org > http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds > Hi I'm attaching an update of the submitted patch targeting the latest qt4-x11 version from Debian: 4:4.8.7+dfsg-3 Regards, -- Dhole diff -Nru qt4-x11-4.8.7+dfsg/debian/changelog qt4-x11-4.8.7+dfsg/debian/changelog --- qt4-x11-4.8.7+dfsg/debian/changelog 2015-08-04 23:13:58.0 +0200 +++ qt4-x11-4.8.7+dfsg/debian/changelog 2015-08-10 19:35:51.0 +0200 @@ -1,3 +1,11 @@ +qt4-x11 (4:4.8.7+dfsg-3.0~reproducible1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Add support for reproducible builds by using $SOURCE_DATE_EPOCH as the +embedded timestamps in qch files generated with qhelpgenerator. + + -- Eduard Sanou Mon, 10 Aug 2015 19:35:09 +0200 + qt4-x11 (4:4.8.7+dfsg-3) unstable; urgency=medium * Update symbols files with buildds' logs. diff -Nru qt4-x11-4.8.7+dfsg/debian/patches/Replace_timestamp_with_SOURCE_DATE_EPOCH_in_qhelpgenerator.patch qt4-x11-4.8.7+dfsg/debian/patches/Replace_timestamp_with_SOURCE_DATE_EPOCH_in_qhelpgenerator.patch --- qt4-x11-4.8.7+dfsg/debian/patches/Replace_timestamp_with_SOURCE_DATE_EPOCH_in_qhelpgenerator.patch 1970-01-01 01:00:00.0 +0100 +++ qt4-x11-4.8.7+dfsg/debian/patches/Replace_timestamp_with_SOURCE_DATE_EPOCH_in_qhelpgenerator.patch 2015-08-10 19:39:59.0 +0200 @@ -0,0 +1,102 @@ +Description: Allow the timestamps from qhelpgenerator to be externally set + In order to make qhelpgenerator output reproducible, we need a way to + set the embedded timestamps to other values than the current time. + We define a new method for QDateTime (reproducibleDateTime) that returns + a deterministic datetime object when the SOURCE_DATE_EPOCH environment + variable is set with a unix epoch timestamp, containing the datetime + defined by SOURCE_DATE_EPOCH in UTC. We replace some instances of + QDateTime::currentDateTime() by QDateTime::reproducibleDateTime() in the + sources of qhelpgenerator to make the output reproducible. +Author: Eduard Sanou + +--- qt4-x11-4.8.7+dfsg.orig/src/corelib/tools/qdatetime.cpp qt4-x11-4.8.7+dfsg/src/corelib/tools/qdatetime.cpp +@@ -2892,6 +2892,15 @@ bool QDateTime::operator<(const QDateTim + */ + + /*! ++\fn QDateTime QDateTime::reproducibleDateTime() ++If the environment variable SOURCE_DATE_EPOCH containing a unix epoch date ++is set, returns the datetime in SOURCE_DATE_EPOCH, in UTC. ++If SOURCE_DATE_EPOCH is not set, behaves as QDateTime::currentDateTime(). ++ ++\sa currentDateTimeUtc(), QDate::currentDate(), QTime::currentTime(), toTimeSpec() ++*/ ++ ++/*! + \fn QDateTime QDateTime::currentDateTimeUtc() + \since 4.7 + Returns the current datetime, as reported by the system clock, in +@@ -3120,6 +3129,29 @@ QDateTime QDateTime::currentDateTime() + return dt; + } + ++QDateTime QDateTime::reproducibleDateTime() ++{ ++QByteArray env_date; ++QDateTime date; ++bool env_date_ok; ++long timestamp; ++ ++env_date = qgetenv("SOURCE_DATE_EPOCH"); ++if (env_date.length() != 0) { ++timestamp = env_date.toLong(&env_date_ok, 10); ++if (!env_date_ok) { ++// "SOURCE_DATE_EPOCH is not a number! ++timestamp = 0; ++} ++date = QDateTime::fromTime_t(timestamp).toUTC(); ++} else { ++date = QDateTime::currentDateTime(); ++} ++ ++re
[Reproducible-builds] Bug#795203: xlsx2csv: please make the build reproducible
Source: xlsx2csv Version: 0.20+20121013+gitfa44ba6-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that xlsx2csv could not be built reproducibly. The attached patch replaces the timestamp in the docs with the latest debian/changelog entry timestamp. Once applied, xlsx2csv can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru xlsx2csv-0.20+20121013+gitfa44ba6/debian/changelog xlsx2csv-0.20+20121013+gitfa44ba6/debian/changelog --- xlsx2csv-0.20+20121013+gitfa44ba6/debian/changelog 2013-06-06 06:43:15.0 +0200 +++ xlsx2csv-0.20+20121013+gitfa44ba6/debian/changelog 2015-08-10 23:39:03.0 +0200 @@ -1,3 +1,11 @@ +xlsx2csv (0.20+20121013+gitfa44ba6-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Replace man timestamp by the latest debian/changelog entry timestamp +to make the package build reproducible. + + -- Eduard Sanou Mon, 10 Aug 2015 23:38:31 +0200 + xlsx2csv (0.20+20121013+gitfa44ba6-1) unstable; urgency=low * Initial release (Closes: #690354). diff -Nru xlsx2csv-0.20+20121013+gitfa44ba6/debian/patches/honour-SOURCE_DATE_EPOCH.patch xlsx2csv-0.20+20121013+gitfa44ba6/debian/patches/honour-SOURCE_DATE_EPOCH.patch --- xlsx2csv-0.20+20121013+gitfa44ba6/debian/patches/honour-SOURCE_DATE_EPOCH.patch 1970-01-01 01:00:00.0 +0100 +++ xlsx2csv-0.20+20121013+gitfa44ba6/debian/patches/honour-SOURCE_DATE_EPOCH.patch 2015-08-10 23:40:17.0 +0200 @@ -0,0 +1,20 @@ +Description: Fix man timestamp + Replace man timestamp with the latest debian/changelog timestamp entry to + make the man pages reproducible. +Author: Eduard Sanou + +--- xlsx2csv-0.20+20121013+gitfa44ba6.orig/man/pod2man.mk xlsx2csv-0.20+20121013+gitfa44ba6/man/pod2man.mk +@@ -40,7 +40,11 @@ PACKAGE ?= package + # Optional variables to set + MANSECT ?= 1 + PODCENTER ?= User Commands +-PODDATE ?= $$(date "+%Y-%m-%d") ++ifdef SOURCE_DATE_EPOCH ++PODDATE ?= $$(date -u -d @${SOURCE_DATE_EPOCH} "+%Y-%m-%d") ++else ++PODDATE ?= $$(date "+%Y-%m-%d") ++endif + + # Directories + MANSRC?= diff -Nru xlsx2csv-0.20+20121013+gitfa44ba6/debian/patches/series xlsx2csv-0.20+20121013+gitfa44ba6/debian/patches/series --- xlsx2csv-0.20+20121013+gitfa44ba6/debian/patches/series 2013-06-06 06:43:15.0 +0200 +++ xlsx2csv-0.20+20121013+gitfa44ba6/debian/patches/series 2015-08-10 23:39:23.0 +0200 @@ -1 +1,2 @@ 10-eol-handler.patch +honour-SOURCE_DATE_EPOCH.patch diff -Nru xlsx2csv-0.20+20121013+gitfa44ba6/debian/rules xlsx2csv-0.20+20121013+gitfa44ba6/debian/rules --- xlsx2csv-0.20+20121013+gitfa44ba6/debian/rules 2013-06-06 06:43:15.0 +0200 +++ xlsx2csv-0.20+20121013+gitfa44ba6/debian/rules 2015-08-10 23:34:29.0 +0200 @@ -4,6 +4,8 @@ URL= git://github.com/dilshod/xlsx2csv.git UPSTREAMDIR= ../upstream.git +export SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog --count 1 -SDate)" +%s) + man: $(MAKE) -C man -f pod2man.mk PACKAGE=$(PACKAGE) makeman signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Re: [Reproducible-builds] Bug#794792: freeipmi: please make the build reproducible
On 08/06/2015 07:13 PM, Dhole wrote: > Source: freeipmi > Version: 1.4.9-1 > Severity: wishlist > Tags: patch > User: reproducible-builds@lists.alioth.debian.org > Usertags: timestamps > X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org > > Hi, > > While working on the "reproducible builds" effort [1], we have noticed > that freeipmi could not be built reproducibly. > > The attached patch replaces the timestamp in the docs with the latest > debian/changelog entry timestamp. Once applied, freeipmi can be built > reproducibly in our current experimental framework. > > [1]: https://wiki.debian.org/ReproducibleBuilds > > > Regards, > > > > ___ > Reproducible-builds mailing list > Reproducible-builds@lists.alioth.debian.org > http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds > Hi, A member of the reproducible builds team (Josh) noticed that the patch I sent could be improved and gave me some suggestions. I'm attaching an updated patch with the suggestions addressed, making the patch better. The modifications are the following: - In my original patch I was patching `configure` to set a different ISODATE, but the package freeipmi uses `configure.ac` to generate the `configure` file. My improved patch now modifies `configure.ac`. For it to take effect, I have modified how dh is called in debian/rules, to use autoreconf instead of autotools_dev, so that the `configure` file is generated during the build from the `configure.ac` file. I suggest you accept this change as well. - I have now set the declaration of ISODATE using SOURCE_DATE_EPOCH conditional, falling back to the old behavior if SOURDE_DATE_EPOCH is not defined. This way the patch can be sent upstream without breaking anything. - Finally, I removed the line to export SOURCE_DATE_EPOCH in debian/rules since debhelper already exports this variable in our current experimental framework. Regards, -- Dhole diff -Nru freeipmi-1.4.9/debian/changelog freeipmi-1.4.9/debian/changelog --- freeipmi-1.4.9/debian/changelog 2015-07-01 16:09:12.0 +0200 +++ freeipmi-1.4.9/debian/changelog 2015-08-07 17:06:34.0 +0200 @@ -1,3 +1,12 @@ +freeipmi (1.4.9-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Replace man pages dates with the timestamp from the latest +debian/changelog entry using the variable SOURCE_DATE_EPOCH to make the +package build reproducibly. + + -- Eduard Sanou Fri, 07 Aug 2015 17:06:03 +0200 + freeipmi (1.4.9-1) unstable; urgency=medium * Fresh upstream release diff -Nru freeipmi-1.4.9/debian/control freeipmi-1.4.9/debian/control --- freeipmi-1.4.9/debian/control 2015-07-01 16:09:12.0 +0200 +++ freeipmi-1.4.9/debian/control 2015-08-07 17:32:01.0 +0200 @@ -4,7 +4,7 @@ Maintainer: Debian FreeIPMI Maintainers Uploaders: Yaroslav Halchenko , Ferenc Wágner , Bernd Zeimetz Build-Depends: debhelper (>= 9), - autotools-dev (>= 20100122.1~), + dh-autoreconf, libgcrypt11-dev, chrpath Standards-Version: 3.9.3 diff -Nru freeipmi-1.4.9/debian/patches/0002-Honour-SOURCE_DATE_EPOCH.patch freeipmi-1.4.9/debian/patches/0002-Honour-SOURCE_DATE_EPOCH.patch --- freeipmi-1.4.9/debian/patches/0002-Honour-SOURCE_DATE_EPOCH.patch 1970-01-01 01:00:00.0 +0100 +++ freeipmi-1.4.9/debian/patches/0002-Honour-SOURCE_DATE_EPOCH.patch 2015-08-07 18:07:12.0 +0200 @@ -0,0 +1,23 @@ +Description: Honour SOURCE_DATE_EPOCH in manpages + Replace man pages dates with the timestamp from the latest + debian/changelog entry using the variable SOURCE_DATE_EPOCH to make the + package build reproducibly. +Author: Eduard Sanou + +Index: freeipmi-1.4.9/configure.ac +=== +--- freeipmi-1.4.9.orig/configure.ac freeipmi-1.4.9/configure.ac +@@ -106,7 +106,11 @@ AC_CONFIG_FILES([ + man/rmcpping.8.pre + rmcpping/Makefile]) + +-ISODATE=`date +%Y-%m-%d` ++if test -z "${SOURCE_DATE_EPOCH}"; then ++ ISODATE=`date +%Y-%m-%d` ++else ++ ISODATE=`date -u -d @$SOURCE_DATE_EPOCH +%Y-%m-%d` ++fi + AC_SUBST([ISODATE]) + + # libfreeipmi libtool versioning diff -Nru freeipmi-1.4.9/debian/patches/series freeipmi-1.4.9/debian/patches/series --- freeipmi-1.4.9/debian/patches/series2015-07-01 16:09:12.0 +0200 +++ freeipmi-1.4.9/debian/patches/series2015-08-07 17:08:36.0 +0200 @@ -1 +1,2 @@ deb_bmc-watchdog_noRUN +0002-Honour-SOURCE_DATE_EPOCH.patch diff -Nru freeipmi-1.4.9/debian/rules freeipmi-1.4.9/debian/rules --- freeipmi-1.4.9/debian/rules 2015-07-01 16:09:12.0 +0200 +++ freeipmi-1.4.9/debian/rules 2015-08-07 17:27:03.0 +0200 @@ -4,7 +4,7 @@ # --fail-missing for dh_install # --link-doc for dh_installdocs %: - dh $@ --with autotools_d
[Reproducible-builds] Bug#795394: libitpp: please make the build reproducible
Source: libitpp Version: 4.3.1-4 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that libitpp could not be built reproducibly. The attached patch replaces the timestamp in the docs with the latest debian/changelog entry timestamp. Once applied, libitpp can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru libitpp-4.3.1/debian/changelog libitpp-4.3.1/debian/changelog --- libitpp-4.3.1/debian/changelog 2015-03-01 02:59:24.0 +0100 +++ libitpp-4.3.1/debian/changelog 2015-08-12 23:45:14.0 +0200 @@ -1,3 +1,11 @@ +libitpp (4.3.1-4.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Replace man timestamp by SOURCE_DATE_EPOCH to make the package build +reproducibly. + + -- Eduard Sanou Wed, 12 Aug 2015 23:44:45 +0200 + libitpp (4.3.1-4) experimental; urgency=medium * debian/patches: diff -Nru libitpp-4.3.1/debian/patches/honour-SOURCE_DATE_EPOCH.diff libitpp-4.3.1/debian/patches/honour-SOURCE_DATE_EPOCH.diff --- libitpp-4.3.1/debian/patches/honour-SOURCE_DATE_EPOCH.diff 1970-01-01 01:00:00.0 +0100 +++ libitpp-4.3.1/debian/patches/honour-SOURCE_DATE_EPOCH.diff 2015-08-12 23:46:53.0 +0200 @@ -0,0 +1,20 @@ +Description: Honour SOURCE_DATE_EPOCH in man pages + Replace manpage timestamp with SOURCE_DATE_EPOCH only if the variable is + defined, to make the man pages reproducible. +Author: Eduard Sanou + +--- libitpp-4.3.1.orig/CMakeLists.txt libitpp-4.3.1/CMakeLists.txt +@@ -155,7 +155,11 @@ set (PACKAGE_STRING "${PACKAGE_NAME} ${P + set (PACKAGE_TARNAME ${PACKAGE}) + set (PACKAGE_URL "") + if (UNIX) +- EXECUTE_PROCESS(COMMAND "date" "+%d/%m/%Y" OUTPUT_VARIABLE PACKAGE_DATE) ++ if (DEFINED ENV{SOURCE_DATE_EPOCH}) ++EXECUTE_PROCESS(COMMAND "date" "-u" "-d @${SOURCE_DATE_EPOCH}" "+%d/%m/%Y" OUTPUT_VARIABLE PACKAGE_DATE) ++ else() ++EXECUTE_PROCESS(COMMAND "date" "+%d/%m/%Y" OUTPUT_VARIABLE PACKAGE_DATE) ++ endif() + string(REGEX REPLACE "(..)/(..)/..(..).*" "\\1/\\2/\\3" PACKAGE_DATE "${PACKAGE_DATE}") + else() + set(PACKAGE_DATE "") diff -Nru libitpp-4.3.1/debian/patches/series libitpp-4.3.1/debian/patches/series --- libitpp-4.3.1/debian/patches/series 2015-02-28 02:31:01.0 +0100 +++ libitpp-4.3.1/debian/patches/series 2015-08-12 23:46:00.0 +0200 @@ -1,3 +1,4 @@ 741814-FTBFS-fix.diff itpp-pc-fix.diff delete-sflogo.diff +honour-SOURCE_DATE_EPOCH.diff signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#795395: adblock-plus: please make the build reproducible
Source: adblock-plus Version: 2.6.9.1+dfsg+4real-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that adblock-plus could not be built reproducibly. The attached patch sets the timezone to UTC before calling the build.py script to avoid timezone differences in zip metadata. Once applied, adblock-plus can be builtreproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru adblock-plus-2.6.9.1+dfsg+4real/debian/changelog adblock-plus-2.6.9.1+dfsg+4real/debian/changelog --- adblock-plus-2.6.9.1+dfsg+4real/debian/changelog2015-06-09 20:00:48.0 +0200 +++ adblock-plus-2.6.9.1+dfsg+4real/debian/changelog2015-08-12 21:00:42.0 +0200 @@ -1,3 +1,10 @@ +adblock-plus (2.6.9.1+dfsg+4real-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Fix timezone when running build.py to make the package build reproducibly. + + -- Eduard Sanou Wed, 12 Aug 2015 21:00:15 +0200 + adblock-plus (2.6.9.1+dfsg+4real-1) unstable; urgency=medium * Restore buildtools as of 2.6.9 (Closes: #788225) diff -Nru adblock-plus-2.6.9.1+dfsg+4real/debian/rules adblock-plus-2.6.9.1+dfsg+4real/debian/rules --- adblock-plus-2.6.9.1+dfsg+4real/debian/rules2015-06-08 22:17:58.0 +0200 +++ adblock-plus-2.6.9.1+dfsg+4real/debian/rules2015-08-12 20:59:43.0 +0200 @@ -4,7 +4,7 @@ dh $@ --with xul-ext override_dh_auto_build: - python build.py build --release + TZ=UTC python build.py build --release override_dh_auto_install: install-xpi adblockplus*.xpi signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#795392: blkreplay: please make the build reproducible
Source: blkreplay Version: 1.0-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that blkreplay could not be built reproducibly. The attached patch fixes the timezone in the date from the man pages to UTC. Once applied, blkreplay can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru blkreplay-1.0/debian/changelog blkreplay-1.0/debian/changelog --- blkreplay-1.0/debian/changelog 2015-06-29 18:54:10.0 +0200 +++ blkreplay-1.0/debian/changelog 2015-08-12 21:18:44.0 +0200 @@ -1,3 +1,10 @@ +blkreplay (1.0-2.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Set date timezone in man pages to UTC to make package build reproducibly. + + -- Eduard Sanou Wed, 12 Aug 2015 21:18:21 +0200 + blkreplay (1.0-2) unstable; urgency=medium * Fix lib.sh so it doesn't try to create downloads directory. diff -Nru blkreplay-1.0/debian/rules blkreplay-1.0/debian/rules --- blkreplay-1.0/debian/rules 2015-06-22 11:00:38.0 +0200 +++ blkreplay-1.0/debian/rules 2015-08-12 21:18:16.0 +0200 @@ -4,7 +4,7 @@ dh $@ --with autoreconf %.1: %.pod - pod2man -c "" -d $$(date -d "$$(dpkg-parsechangelog -S Date)" +%F) -r "" $< > $@ + pod2man -c "" -d $$(date -u -d "$$(dpkg-parsechangelog -S Date)" +%F) -r "" $< > $@ override_dh_auto_build: debian/blkreplay.1 dh_auto_build signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] GSoC 2015 Week 12: Move forward reproducible builds
-- Hi, This week I have updated the patch for qt4-x11 that honours SOURCE_DATE_EPOCH when embedding dates with the qthelpgenerator tool to target the newest version in Debian (the patched files didn't change in the update though). I have pushed the changes in our git repository, I have uploaded the updated patched package to our custom APT, and I have attached the updated patch to the bug entry.(git, APT, bug). I have also improved the freeipmi patch I sent last week applying all the suggestions Josch made on the mailing list. I sent the patch to the already opened bug entry: https://bugs.debian.org/794792 I have fixed some individual packages that were affected by different issues that didn't have notes yet. I have also added them in the notes with the bugs and related issues. timestamps_in_documentation_generated_by_podman - xlsx2csv https://bugs.debian.org/795203 timezone difference in metadata timestamps in zip files - adblock-plus https://bugs.debian.org/795395 embedded dates (build time) in man pages - blkreplay https://bugs.debian.org/795392 - libitpp https://bugs.debian.org/795394 This Friday I flew to Germany to attend the DebConf15 in Heidelberg, where I'll meet some of the reproducible builds folks :) (I've already met 3 of them!). I'll attend the conference until it finishes (22nd of August). Best regards, Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#795975: unoconv: please make the build reproducible
Source: unoconv Version: 0.6-6 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that unoconv could not be built reproducibly. The attached patch sets the timezone to UTC before calling asciidoc to avoid timezone differences in the generated docs. Once applied, unoconv can be builtreproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru unoconv-0.6/debian/changelog unoconv-0.6/debian/changelog --- unoconv-0.6/debian/changelog2014-01-11 20:02:32.0 +0100 +++ unoconv-0.6/debian/changelog2015-08-17 12:22:44.0 +0200 @@ -1,3 +1,11 @@ +unoconv (0.6-6.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Set TZ=UTC in asciidoc to make the embedded dates invariant to timezones +in order to make the package build reproducibly. + + -- Eduard Sanou Mon, 17 Aug 2015 12:22:05 +0200 + unoconv (0.6-6) unstable; urgency=low * Add support for Microsoft Works and Microsoft Excel 2007 XML. diff -Nru unoconv-0.6/debian/patches/fix-timezone-asciidoc.patch unoconv-0.6/debian/patches/fix-timezone-asciidoc.patch --- unoconv-0.6/debian/patches/fix-timezone-asciidoc.patch 1970-01-01 01:00:00.0 +0100 +++ unoconv-0.6/debian/patches/fix-timezone-asciidoc.patch 2015-08-17 12:24:30.0 +0200 @@ -0,0 +1,16 @@ +Description: Fix timezone in asciidoc + Set TZ=UTC before calling asciidoc to make the embedded dates invariant + to timezone so that the package can be build reproducibly. +Author: Eduard Sanou + +--- unoconv-0.6.orig/doc/Makefile unoconv-0.6/doc/Makefile +@@ -20,7 +20,7 @@ clean: + rm -f unconv.1 *.html *.xml + + %.1.html: %.1.txt +- asciidoc -d manpage $< ++ TZ=UTC asciidoc -d manpage $< + + %.1: %.1.xml + xmlto man $< diff -Nru unoconv-0.6/debian/patches/series unoconv-0.6/debian/patches/series --- unoconv-0.6/debian/patches/series 2014-01-11 20:02:32.0 +0100 +++ unoconv-0.6/debian/patches/series 2015-08-17 12:23:40.0 +0200 @@ -4,3 +4,4 @@ python3-stdout-fix.patch support-for-wps.patch support-for-xlsx.patch +fix-timezone-asciidoc.patch signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#795977: dahdi-tools: please make the build reproducible
Source: dahdi-tools Version: 1:2.10.2-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that dahdi-tools could not be built reproducibly. The attached patch sets the timezone to UTC before calling asciidoc to avoid timezone differences in the generated docs. Once applied, dahdi-tools can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru dahdi-tools-2.10.2/debian/changelog dahdi-tools-2.10.2/debian/changelog --- dahdi-tools-2.10.2/debian/changelog 2015-06-28 22:08:29.0 +0200 +++ dahdi-tools-2.10.2/debian/changelog 2015-08-17 12:46:16.0 +0200 @@ -1,3 +1,11 @@ +dahdi-tools (1:2.10.2-2.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Set TZ=UTC before calling asciidoc to make the embedded dates invariant to +timezones in order to make the package build reproducibly. + + -- Eduard Sanou Mon, 17 Aug 2015 12:44:19 +0200 + dahdi-tools (1:2.10.2-2) unstable; urgency=medium * gcc5.patch (Closes: #777829). diff -Nru dahdi-tools-2.10.2/debian/patches/fix-timezone-asciidoc.patch dahdi-tools-2.10.2/debian/patches/fix-timezone-asciidoc.patch --- dahdi-tools-2.10.2/debian/patches/fix-timezone-asciidoc.patch 1970-01-01 01:00:00.0 +0100 +++ dahdi-tools-2.10.2/debian/patches/fix-timezone-asciidoc.patch 2015-08-17 12:47:13.0 +0200 @@ -0,0 +1,20 @@ +Description: Fix timezone in asciidoc + Set TZ=UTC before calling asciidoc to make the embedded dates invariant + to timezone so that the package can be build reproducibly. +Author: Eduard Sanou + +--- dahdi-tools-2.10.2.orig/Makefile dahdi-tools-2.10.2/Makefile +@@ -209,10 +209,10 @@ genconf_parameters.sample: xpp/genconf_p + README.html: README system.conf.asciidoc init.conf.asciidoc tonezones.txt \ + UPGRADE.txt genconf_parameters.asciidoc assigned-spans.conf.asciidoc \ + span-types.conf.asciidoc +- $(ASCIIDOC) -n -a toc -a toclevels=4 $< ++ TZ=UTC $(ASCIIDOC) -n -a toc -a toclevels=4 $< + + README.Astribank.html: xpp/README.Astribank +- $(ASCIIDOC) -o $@ -n -a toc -a toclevels=4 $< ++ TZ=UTC $(ASCIIDOC) -o $@ -n -a toc -a toclevels=4 $< + + # on Debian: this requires the full groff, not just groff-base. + %.8.html: %.8 diff -Nru dahdi-tools-2.10.2/debian/patches/series dahdi-tools-2.10.2/debian/patches/series --- dahdi-tools-2.10.2/debian/patches/series2015-06-28 07:16:50.0 +0200 +++ dahdi-tools-2.10.2/debian/patches/series2015-08-17 12:46:44.0 +0200 @@ -4,3 +4,4 @@ remove_dahdi_speed debian-cflags.patch gcc5.patch +fix-timezone-asciidoc.patch signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#795981: x11proto-input: please make the build reproducible
Source: x11proto-input Version: 2.3.1-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that x11proto-input could not be built reproducibly. The attached patch sets the timezone to UTC before calling asciidoc to avoid timezone differences in the generated docs. Once applied, x11proto-input can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -u x11proto-input-2.3.1/debian/changelog x11proto-input-2.3.1/debian/changelog --- x11proto-input-2.3.1/debian/changelog +++ x11proto-input-2.3.1/debian/changelog @@ -1,3 +1,11 @@ +x11proto-input (2.3.1-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Set TZ=UTC before calling asciidoc to make the embedded dates invariant to +timezones in order to make the package build reproducibly. + + -- Eduard Sanou Mon, 17 Aug 2015 16:22:00 +0200 + x11proto-input (2.3.1-1) unstable; urgency=medium * New upstream release. only in patch2: unchanged: --- x11proto-input-2.3.1.orig/specs/Makefile.am +++ x11proto-input-2.3.1/specs/Makefile.am @@ -6,7 +6,7 @@ dist_doc_DATA = XI2proto.txt XIproto.txt %.html: %.txt - $(AM_V_GEN)$(ASCIIDOC) -o $@ $< + TZ=UTC $(AM_V_GEN)$(ASCIIDOC) -o $@ $< CLEANFILES = $(doc_DATA) signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#795984: postgresql-plproxy: please make the build reproducible
Source: postgresql-plproxy Version: 2.5-5 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that postgresql-plproxy could not be built reproducibly. The attached patch sets the timezone to UTC before calling asciidoc to avoid timezone differences in the generated docs. Once applied, postgresql-plproxy can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru postgresql-plproxy-2.5/debian/changelog postgresql-plproxy-2.5/debian/changelog --- postgresql-plproxy-2.5/debian/changelog 2014-07-27 11:44:25.0 +0200 +++ postgresql-plproxy-2.5/debian/changelog 2015-08-17 16:29:06.0 +0200 @@ -1,3 +1,11 @@ +postgresql-plproxy (2.5-5.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Set TZ=UTC before calling asciidoc to make the embedded dates invariant to +timezones in order to make the package build reproducibly. + + -- Eduard Sanou Mon, 17 Aug 2015 16:28:54 +0200 + postgresql-plproxy (2.5-5) unstable; urgency=medium * Rebuild against PostgreSQL 9.4. diff -Nru postgresql-plproxy-2.5/debian/patches/fix-timezone-asciidoc.patch postgresql-plproxy-2.5/debian/patches/fix-timezone-asciidoc.patch --- postgresql-plproxy-2.5/debian/patches/fix-timezone-asciidoc.patch 1970-01-01 01:00:00.0 +0100 +++ postgresql-plproxy-2.5/debian/patches/fix-timezone-asciidoc.patch 2015-08-17 16:31:06.0 +0200 @@ -0,0 +1,14 @@ +Description: Fix timezone in asciidoc + Set TZ=UTC before calling asciidoc to make the embedded dates invariant + to timezone so that the package can be build reproducibly. +Author: Eduard Sanou + +--- postgresql-plproxy-2.5.orig/doc/Makefile postgresql-plproxy-2.5/doc/Makefile +@@ -16,5 +16,5 @@ web: $(HTML) + rsync -avz $(HTML) $(web)/doc/ + + %.html: %.txt +- $(ASCIIDOC) -a toc $< ++ TZ=UTC $(ASCIIDOC) -a toc $< + diff -Nru postgresql-plproxy-2.5/debian/patches/series postgresql-plproxy-2.5/debian/patches/series --- postgresql-plproxy-2.5/debian/patches/series2013-08-16 22:33:28.0 +0200 +++ postgresql-plproxy-2.5/debian/patches/series2015-08-17 16:30:54.0 +0200 @@ -1,2 +1,3 @@ makefile plproxy.h +fix-timezone-asciidoc.patch signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#795985: xorg: please make the build reproducible
Source: xorg Version: 1:7.7+9 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that xorg could not be built reproducibly. The attached patch sets the timezone to UTC before calling asciidoc to avoid timezone differences in the generated docs. Once applied, xorg can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru xorg-7.7+9/debian/changelog xorg-7.7+9.1/debian/changelog --- xorg-7.7+9/debian/changelog 2015-05-11 14:53:51.0 +0200 +++ xorg-7.7+9.1/debian/changelog 2015-08-17 16:38:13.0 +0200 @@ -1,3 +1,11 @@ +xorg (1:7.7+9.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Set TZ=UTC before calling asciidoc to make the embedded dates invariant to +timezones in order to make the package build reproducibly. + + -- Eduard Sanou Mon, 17 Aug 2015 16:37:50 +0200 + xorg (1:7.7+9) unstable; urgency=medium * Remove the siliconmotion driver from xserver-xorg-video-all. diff -Nru xorg-7.7+9/xsf-docs/Makefile xorg-7.7+9.1/xsf-docs/Makefile --- xorg-7.7+9/xsf-docs/Makefile2013-09-26 01:24:29.0 +0200 +++ xorg-7.7+9.1/xsf-docs/Makefile 2015-08-17 16:44:17.0 +0200 @@ -6,7 +6,7 @@ pdf_files = $(patsubst %.txt,%.pdf,$(txt_files)) -TXT_TO_HTML = asciidoc -a linkcss +TXT_TO_HTML = TZ=UTC asciidoc -a linkcss HTML_TO_PDF = wkhtmltopdf CSS_FILE = xsf.css ADOC_CSS_FILE= asciidoc-xhtml11.css signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#795983: dbusada: please make the build reproducible
Source: dbusada Version: 0.3-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that dbusada could not be built reproducibly. The attached patch sets the timezone to UTC before calling asciidoc to avoid timezone differences in the generated docs. Once applied, dbusada can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru dbusada-0.3/debian/changelog dbusada-0.3/debian/changelog --- dbusada-0.3/debian/changelog2014-08-14 16:39:43.0 +0200 +++ dbusada-0.3/debian/changelog2015-08-17 13:25:10.0 +0200 @@ -1,3 +1,13 @@ +dbusada (0.3-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Set TZ=UTC before calling asciidoc to make the embedded dates invariant to +timezones in order to make the package build reproducibly. + + + + -- Eduard Sanou Mon, 17 Aug 2015 13:24:33 +0200 + dbusada (0.3-1) unstable; urgency=medium * Update gbp.conf settings diff -Nru dbusada-0.3/debian/patches/fix-timezone-asciidoc.patch dbusada-0.3/debian/patches/fix-timezone-asciidoc.patch --- dbusada-0.3/debian/patches/fix-timezone-asciidoc.patch 1970-01-01 01:00:00.0 +0100 +++ dbusada-0.3/debian/patches/fix-timezone-asciidoc.patch 2015-08-17 13:26:01.0 +0200 @@ -0,0 +1,16 @@ +Description: Fix timezone in asciidoc + Set TZ=UTC before calling asciidoc to make the embedded dates invariant + to timezone so that the package can be build reproducibly. +Author: Eduard Sanou + +--- dbusada-0.3.orig/doc/Makefile dbusada-0.3/doc/Makefile +@@ -16,7 +16,7 @@ $(DESTDIR)/asciidoc.css: asciidoc.css + cp $< $@ + + $(DESTDIR)/index.html: index page.conf ../README +- asciidoc $(ASCIIDOC_OPTS) $< > $@ ++ TZ=UTC asciidoc $(ASCIIDOC_OPTS) $< > $@ + + clean: + rm -f $(DESTDIR)/* diff -Nru dbusada-0.3/debian/patches/series dbusada-0.3/debian/patches/series --- dbusada-0.3/debian/patches/series 1970-01-01 01:00:00.0 +0100 +++ dbusada-0.3/debian/patches/series 2015-08-17 13:25:39.0 +0200 @@ -0,0 +1 @@ +fix-timezone-asciidoc.patch signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#795987: pngcheck: please make the build reproducible
Source: pngcheck Version: 2.3.0-7 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that pngcheck could not be built reproducibly. The attached patch sets the embedded date in the man pages generated by podman to the latest debian/changelog entry timestamp instead of local date. Once applied, pngcheck can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru pngcheck-2.3.0/debian/changelog pngcheck-2.3.0/debian/changelog --- pngcheck-2.3.0/debian/changelog 2013-06-26 11:28:27.0 +0200 +++ pngcheck-2.3.0/debian/changelog 2015-08-17 11:59:26.0 +0200 @@ -1,3 +1,11 @@ +pngcheck (2.3.0-7.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Replace man timestamp by SOURCE_DATE_EPOCH to make the package build +reproducibly. + + -- Eduard Sanou Mon, 17 Aug 2015 11:59:03 +0200 + pngcheck (2.3.0-7) unstable; urgency=low * debian/control diff -Nru pngcheck-2.3.0/debian/pod2man.mk pngcheck-2.3.0/debian/pod2man.mk --- pngcheck-2.3.0/debian/pod2man.mk2013-06-26 11:28:27.0 +0200 +++ pngcheck-2.3.0/debian/pod2man.mk2015-08-17 12:07:46.0 +0200 @@ -36,7 +36,11 @@ # Optional variables to set MANSECT?= 1 -PODCENTER ?= $$(date "+%Y-%m-%d") +ifdef SOURCE_DATE_EPOCH +PODCENTER ?= $$(date -u -d @${SOURCE_DATE_EPOCH} "+%Y-%m-%d") +else +PODCENTER ?= $$(date "+%Y-%m-%d") +endif # Directories MANSRC = diff -Nru pngcheck-2.3.0/debian/rules pngcheck-2.3.0/debian/rules --- pngcheck-2.3.0/debian/rules 2013-06-26 11:28:27.0 +0200 +++ pngcheck-2.3.0/debian/rules 2015-08-17 11:56:05.0 +0200 @@ -6,6 +6,7 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=+all export DEB_CXXFLAGS_MAINT_APPEND = -Wall -pedantic -DUSE_ZLIB export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed +export SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog --count 1 -SDate)" +%s) LIBS = -lz signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#796375: wcd: please make the build reproducible
Source: wcd Version: 5.2.5-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that wcd could not be built reproducibly. The attached patch sets the embedded date in the man pages generated by podman to the latest debian/changelog entry timestamp instead of local date. Once applied, wcd can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru wcd-5.2.5/debian/changelog wcd-5.2.5/debian/changelog --- wcd-5.2.5/debian/changelog 2014-06-13 04:35:22.0 +0200 +++ wcd-5.2.5/debian/changelog 2015-08-21 17:13:05.0 +0200 @@ -1,3 +1,11 @@ +wcd (5.2.5-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Replace date embedded in man page by the latest debian/changelog entry +timestamp to make the package build reproducibly. + + -- Eduard Sanou Fri, 21 Aug 2015 16:58:37 +0200 + wcd (5.2.5-1) unstable; urgency=low * New upstream release. diff -Nru wcd-5.2.5/debian/patches/fix-timestamp-man.patch wcd-5.2.5/debian/patches/fix-timestamp-man.patch --- wcd-5.2.5/debian/patches/fix-timestamp-man.patch1970-01-01 01:00:00.0 +0100 +++ wcd-5.2.5/debian/patches/fix-timestamp-man.patch2015-08-21 17:14:29.0 +0200 @@ -0,0 +1,20 @@ +Description: Fix timestamp in man pages + Replace the embedded timestamp in man pages by the latest debian/changelog + entry timestamp to make the man pages reproducible. +Author: Eduard Sanou + +--- wcd-5.2.5.orig/src/man/man1/Makefile wcd-5.2.5/src/man/man1/Makefile +@@ -33,7 +33,11 @@ PACKAGE ?= wcd + + # Optional variables to set + MANSECT ?= 1 +-PODCENTER ?= $$(date "+%Y-%m-%d") ++ifdef SOURCE_DATE_EPOCH ++PODCENTER ?= $$(date -u -d @${SOURCE_DATE_EPOCH} "+%Y-%m-%d") ++else ++PODCENTER ?= $$(date "+%Y-%m-%d") ++endif + + # Directories + MANSRC= diff -Nru wcd-5.2.5/debian/patches/series wcd-5.2.5/debian/patches/series --- wcd-5.2.5/debian/patches/series 1970-01-01 01:00:00.0 +0100 +++ wcd-5.2.5/debian/patches/series 2015-08-21 17:13:34.0 +0200 @@ -0,0 +1 @@ +fix-timestamp-man.patch signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#796376: mapivi: please make the build reproducible
Source: mapivi Version: 0.9.7-1.1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that mapivi could not be built reproducibly. The attached patch sets the embedded date in the man pages generated by podman to the latest debian/changelog entry timestamp instead of local date. Once applied, mapivi can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -u mapivi-0.9.7/debian/changelog mapivi-0.9.7/debian/changelog --- mapivi-0.9.7/debian/changelog +++ mapivi-0.9.7/debian/changelog @@ -1,3 +1,12 @@ +mapivi (0.9.7-1.2) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Export POD_MAN_DATE with the latest debian/changelog entry timestamp +so that the man pages get a deterministic date to make the package build +reproducibly. + + -- Eduard Sanou Fri, 21 Aug 2015 17:06:06 +0200 + mapivi (0.9.7-1.1) unstable; urgency=low * Non-maintainer upload. diff -u mapivi-0.9.7/debian/rules mapivi-0.9.7/debian/rules --- mapivi-0.9.7/debian/rules +++ mapivi-0.9.7/debian/rules @@ -9,7 +9,8 @@ # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 - +export SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog --count 1 -SDate)" +%s) +export POD_MAN_DATE = $(shell date -u +"%Y-%m-%d" --date="@$(SOURCE_DATE_EPOCH)") CFLAGS = -Wall -g signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#796527: vserver-debiantools: please make the build reproducible
Source: vserver-debiantools Version: 0.8.1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that vserver-debiantools could not be built reproducibly. The attached patch sets the embedded date in the man pages generated by podman to the latest debian/changelog entry timestamp instead of local date. Once applied, vserver-debiantools can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru vserver-debiantools-0.8.1/debian/changelog vserver-debiantools-0.8.1+nmu1/debian/changelog --- vserver-debiantools-0.8.1/debian/changelog 2011-08-02 08:00:05.0 +0200 +++ vserver-debiantools-0.8.1+nmu1/debian/changelog 2015-08-21 17:35:47.0 +0200 @@ -1,3 +1,11 @@ +vserver-debiantools (0.8.1+nmu1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Replace date embedded in man pages by the latest debian/changelog entry +timestamp to make the package build reproducibly. + + -- Eduard Sanou Fri, 21 Aug 2015 17:35:14 +0200 + vserver-debiantools (0.8.1) unstable; urgency=low * Debian is spelled with a capital D. Closes: #627624. diff -Nru vserver-debiantools-0.8.1/debian/rules vserver-debiantools-0.8.1+nmu1/debian/rules --- vserver-debiantools-0.8.1/debian/rules 2009-04-21 06:52:32.0 +0200 +++ vserver-debiantools-0.8.1+nmu1/debian/rules 2015-08-21 17:35:01.0 +0200 @@ -6,7 +6,7 @@ # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 - +export SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog --count 1 -SDate)" +%s) CFLAGS = -Wall -g diff -Nru vserver-debiantools-0.8.1/Makefile vserver-debiantools-0.8.1+nmu1/Makefile --- vserver-debiantools-0.8.1/Makefile 2009-04-21 06:52:32.0 +0200 +++ vserver-debiantools-0.8.1+nmu1/Makefile 2015-08-21 17:34:29.0 +0200 @@ -1,5 +1,11 @@ MANFILES=newvserver.1 newnfsvserver.1 dupvserver.1 stripserver.1 +ifdef SOURCE_DATE_EPOCH +POD_DATE ?= $$(date -u -d @${SOURCE_DATE_EPOCH}) +else +POD_DATE ?= $$(LANG=C date") +endif + all: build-man build-man: $(MANFILES) @@ -7,25 +13,25 @@ newvserver.1: newvserver.pod pod2man --section=1 \ --release="Vserver " \ ---date="`LANG=C date`" \ +--date="$(POD_DATE)" \ $^ > $@ newnfsvserver.1: newnfsvserver.pod pod2man --section=1 \ --release="Vserver " \ ---date="`LANG=C date`" \ +--date="$(POD_DATE)" \ $^ > $@ dupvserver.1: dupvserver.pod pod2man --section=1 \ --release="Vserver " \ ---date="`LANG=C date`" \ +--date="$(POD_DATE)" \ $^ > $@ stripserver.1: stripserver.pod pod2man --section=1 \ --release="Vserver " \ ---date="`LANG=C date`" \ +--date="$(POD_DATE)" \ $^ > $@ install: install-sbin install-man install-conf install-var signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Re: [Reproducible-builds] Bug#792687: gettext: please support timestamps from environment
On 09/01/2015 12:36 AM, Santiago Vila wrote: > On Tue, Sep 01, 2015 at 12:01:45AM +0200, Chris Lamb wrote: >>> As a proof of concept, I've fixed "pppconfig" the way I think this >>> kind of bugs should be fixed: By not running "po/update.sh" each and >>> every time. >> >> https://gist.github.com/be5b243cfcaaa27819f0 is the diff for anyone >> interested > > Well, that includes some cleanup I also did because the package was > orphaned (like removing "source and diff are obsolete" warning message > which is 15 years old at least). > > The size of "not running po/update.sh" is really a single line removal. > >>> Would be possible to drop the forked gettext and try to fix this in >>> the affected packages? >> >> Seems reasonable, especially as it's only ~40 packages. Would you guess >> most of them are fixable under debian/ or require upstream patches? > > I would bet that most of them are fixable by changing debian/* only > (but I really don't know). > As I understand it, the changes in debian/* would be to disable the call to po/update.sh. But then there's also changes needed inside po/ because the maintainer would need to run update.sh (which would modify files in po/) before packaging right? I don't find it clear if the update.sh should be run by the Debian maintainer or by upstream. > It's funny that the current gettext fork in alioth did not seem to > help about 8 of them: > > https://reproducible.debian.net/issues/unstable/lc_messages_randomness_issue.html > > (There are 12 unreproducible, but only 8 suffer currently from this issue) > The reason why 8 of them are not reproducible even with the patched gettext is because the calls to xgettext in those packages don't happen under dh, which is one of the current patched toolchains that export SOURCE_DATE_EPOCH. Since that variable is not exported, xgettext embeds the current date. But that happens to other packages as well with other issues (where the toolchain has already been patched to honour SOURCE_DATE_EPOCH). -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] GCC patch to honour SOURCE_DATE_EPOCH, comments?
Hi Matthias and everyone, During DebConf we talked about a patch for GCC to honour the SOURCE_DATE_EPOCH env var when using the __DATE__ and __TIME__ macros. I sent a patch that did this from libcpp/macro.c in the gcc-patches mailing list. There was a reply from Joseph Myers suggesting that it may be better to put the patch in some file in the gcc/ directory [0]. I checked the call trace until reaching the macro processing for both gcc and g++ and found a common function in gcc/c-family/c-lex.c, so I moved part of the patch there. Now the patch consists on the following: - the struct cpp_reader (defined in libcpp/internal.h) now has a new field: source_date_epoch, with a default value of -1 - the function c_lex_with_flags from gcc/c-family/c-lex.c will check if SOURCE_DATE_EPOCH is defined in the environment and if so, store the value in the cpp_reader struct (parse_in), to pass it around the other functions - the function _cpp_builtin_macro_text from _cpp_builtin_macro_text will use the source_date_epoch field from the cpp_reader struct instead of the value returned by time(NULL) and use gmtime to get a representation of the timestamp, if source_date_epoch != -1 (that is, it has been defined) This way, the getenv call happens in the gcc/ directory. There is one thing that I haven't managed to get nice, as I'm not that familiar with the gcc source code: the ouptut of the error handling when parsing SOURCE_DATE_EPOCH in gcc/c-family/c-lex.c doesn't look too good: """ $ export SOURCE_DATE_EPOCH="1234a" $../gcc_build/bin/gcc test_c.c -o test_c In file included from :0:0: /usr/include/stdc-predef.h:1:0: error: Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: a /* Copyright (C) 1991-2014 Free Software Foundation, Inc. ^ """ The error function prints the line of the file it was parsing when the error happened. What do you think about this patch? I would like you to take a look at it before sending it to the gcc-patches mailing list. Do you think it's good to read the SOURCE_DATE_EPOCH env var in gcc/c-family/c-lex.c and pass it to the macro processing function through the cpp_reader struct? Or do you think there's a better place? As a reminder, we now have a spec describing the usage of SOURCE_DATE_EPOCH as a distribution-agnostic standard for build systems to exchange a timestamp [1], I'll add the link when sending the patch to the gcc-patches mailing list. [0] https://gcc.gnu.org/ml/gcc-patches/2015-06/msg02270.html [1] https://reproducible-builds.org/specs/source-date-epoch/ Regards, -- Dhole diff --git a/gcc/c-family/c-lex.c b/gcc/c-family/c-lex.c index bb55be8..265195f 100644 --- a/gcc/c-family/c-lex.c +++ b/gcc/c-family/c-lex.c @@ -44,6 +44,9 @@ along with GCC; see the file COPYING3. If not see #include "debug.h" #include "target.h" #include "wide-int.h" +#include "../libcpp/internal.h" +#include /* For parsing SOURCE_DATE_EPOCH */ +#include /* For parsing SOURCE_DATE_EPOCH */ #include "attribs.h" @@ -388,6 +391,53 @@ c_common_has_attribute (cpp_reader *pfile) return result; } + +/* Read SOURCE_DATE_EPOCH from environment to have a deterministic + timestamp to replace embedded current dates to get reproducible + results. Returns -1 if SOURCE_DATE_EPOCH is not defined. */ +long long +get_source_date_epoch() +{ + char *source_date_epoch; + unsigned long long epoch; + char *endptr; + + source_date_epoch = getenv ("SOURCE_DATE_EPOCH"); + if (source_date_epoch) +{ + errno = 0; + epoch = strtoull (source_date_epoch, &endptr, 10); + if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0)) + || (errno != 0 && epoch == 0)) + { + error ("Environment variable $SOURCE_DATE_EPOCH: strtoull: \ +%s\n", xstrerror(errno)); + exit (EXIT_FAILURE); + } + if (endptr == source_date_epoch) + { + error ("Environment variable $SOURCE_DATE_EPOCH: \ +No digits were found: %s\n", endptr); + exit (EXIT_FAILURE); + } + if (*endptr != '\0') + { + error ("Environment variable $SOURCE_DATE_EPOCH: \ +Trailing garbage: %s\n", endptr); + exit (EXIT_FAILURE); +} + if (epoch > ULONG_MAX) + { + error ("Environment variable $SOURCE_DATE_EPOCH: \ +value must be smaller than or equal to: %lu but was found to be: \ +%llu \n", ULONG_MAX, epoch); + exit (EXIT_FAILURE); + } + return (long long) epoch; +} + else +return -1; +} /* Read a token and return its type. Fill *VALUE with its value, if applicable. Fill *CPP_FLAGS with the token's flags, if it is @@ -403,6 +453,7 @@ c_lex_with_flags (tree *value, location_t *loc, unsigned char *cpp_flags, unsigned char add_flags = 0; enum overf
Re: [Reproducible-builds] Bug#792687: gettext: please support timestamps from environment
On 08/31/2015 09:32 PM, Santiago Vila wrote: > Would be possible to drop the forked gettext and try to fix this in > the affected packages? Hi Santiago, I saw that you have been working on the packages affected by the POT creation date timestamps in gettext mo files today so maybe you know this already, but just to be sure: The patched gettext has been dropped from our reproducible APT repository, and all the affected packages by the issue different_pot_creation_date_in_gettext_mo_files (formerly lc_messages_randomness) have been rebuilt in our jenkins setup, using the gettext version from Debian unstable: https://reproducible.debian.net/issues/unstable/different_pot_creation_date_in_gettext_mo_files_issue.html Regards, -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#798557: libapache-dbi-perl: please make the build reproducible
Source: libapache-dbi-perl Version: 1.12-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that libapache-dbi-perl could not be built reproducibly. The attached patch sets the embedded date in the man pages generated by podman to the latest debian/changelog entry timestamp instead of local date. Once applied, libapache-dbi-perl can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru libapache-dbi-perl-1.12/debian/changelog libapache-dbi-perl-1.12/debian/changelog --- libapache-dbi-perl-1.12/debian/changelog2013-06-12 18:17:37.0 +0200 +++ libapache-dbi-perl-1.12/debian/changelog2015-09-10 00:24:04.0 +0200 @@ -1,3 +1,11 @@ +libapache-dbi-perl (1.12-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Replace timestamp in man pages to latest debian/changelog entry timestamp +to make the package build reproducibly. + + -- Eduard Sanou Thu, 10 Sep 2015 00:23:31 +0200 + libapache-dbi-perl (1.12-1) unstable; urgency=low [ Salvatore Bonaccorso ] diff -Nru libapache-dbi-perl-1.12/debian/rules libapache-dbi-perl-1.12/debian/rules --- libapache-dbi-perl-1.12/debian/rules2013-06-12 18:02:44.0 +0200 +++ libapache-dbi-perl-1.12/debian/rules2015-09-10 00:33:54.0 +0200 @@ -1,3 +1,7 @@ #!/usr/bin/make -f + +SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog -SDate)" +%s) +export POD_MAN_DATE = $(shell date -u +"%Y-%m-%d" --date="@$(SOURCE_DATE_EPOCH)") + %: dh $@ signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#798558: libapache-authznetldap-perl: please make the build reproducible
Source: libapache-authznetldap-perl Version: 0.07-5 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that libapache-authznetldap-perl could not be built reproducibly. The attached patch sets the embedded date in the man pages generated by podman to the latest debian/changelog entry timestamp instead of local date. Once applied, libapache-authznetldap-perl can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru libapache-authznetldap-perl-0.07/debian/changelog libapache-authznetldap-perl-0.07/debian/changelog --- libapache-authznetldap-perl-0.07/debian/changelog 2013-08-20 16:46:19.0 +0200 +++ libapache-authznetldap-perl-0.07/debian/changelog 2015-09-10 15:49:27.0 +0200 @@ -1,3 +1,12 @@ +libapache-authznetldap-perl (0.07-5.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Replace timestamp in man pages to latest debian/changelog entry timestamp +to make the package build reproducibly. + + + -- Eduard Sanou Thu, 10 Sep 2015 15:49:08 +0200 + libapache-authznetldap-perl (0.07-5) unstable; urgency=low * Team upload. diff -Nru libapache-authznetldap-perl-0.07/debian/rules libapache-authznetldap-perl-0.07/debian/rules --- libapache-authznetldap-perl-0.07/debian/rules 2013-08-20 16:46:19.0 +0200 +++ libapache-authznetldap-perl-0.07/debian/rules 2015-09-10 15:48:55.0 +0200 @@ -1,4 +1,7 @@ #!/usr/bin/make -f +SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog -SDate)" +%s) +export POD_MAN_DATE = $(shell date -u +"%Y-%m-%d" --date="@$(SOURCE_DATE_EPOCH)") + %: dh $@ signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Re: [Reproducible-builds] Bug#798557: libapache-dbi-perl: please make the build reproducible
On 09/10/2015 06:10 PM, Niko Tyni wrote: > This is a toolchain issue that potentially affects hundreds of packages > and should IMO be fixed centrally, at least for those packages that use > these debhelper short form dh rules. > After thinking about it, I agree too; a toolchain fix would be more appropriate for this podman issue. What do you think would be a better solution? - Make debhelper export POD_MAN_DATE - Patch podman to honour SOURCE_DATE_EPOCH (with this option, podman would replace embedded timestamp either by the env var POD_MAN_DATE, or by SOURCE_DATE_EPOCH. The later would need formatting the timestamp to "%Y-%m-%d") > The reason only a handful show up in the current reproducible.debian.net > CI setup is that it only triggers when the two builds happen on different > sides of midnight UTC. Once we start testing builds on different dates, > I expect the number of those to explode. > The difference that shows up in the affected packages in reproducible.debian.net show a difference in the day within the timestamp, because we use two different timezones between builds that have a 26h difference. That makes the embedded timestamp to have a different day whenever the package is built. I don't understand why when we start testing builds on different dates you expect this to explode. Am I missing anything? Maybe you are referring to timestamps in general, and not only to this podman embedding timestamps issue? (in which case, I'd agree that the number of issues like this will explode) Regards, -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Re: [Reproducible-builds] [Debian Wiki] Update of "ReproducibleBuilds/TimestampsProposal" by BenBoeckel
On 09/17/2015 09:47 AM, Jérémy Bobbio wrote: > Daniel Kahn Gillmor: >> Wiki page: >>> - EXECUTE_PROCESS(COMMAND "date" "-u" "-d @${SOURCE_DATE_EPOCH}" >>> "+%d/%m/%Y" OUTPUT_VARIABLE BUILD_DATE) >> […] >> Is there a reason above that this example code to translate from >> SOURCE_DATE_EPOCH to a build date doesn't produce ISO-8601-compliant >> date strings in the BUILD_DATE variable? > > I assume it's because it was initially in a piece of software that used > the above format. I'd say feel free to replace by a ISO-8601 format > string if you feel it matters. Indeed. I took that example from a package I patched that was just using that date format. I'd also say feel free to replace it by ISO-8601 format. -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] GCC patch reviewed. Proposed mail for gcc-patches mailing list
Hi all! Back in summer I worked on a patch for GCC to honor the SOURCE_DATE_EPOCH env variable when embedding timestamps with the C/C++ macros __DATE__ and __TIME__. I sent the patch to the gcc-patches mailing list, and after some replies with suggestions and opinions it didn't reach further. In this year's DebConf I got in touch with doko (Debian gcc package maintainer) and he offered to help me with the patch. I have addressed a comment made by a gcc contributor in the original patch email thread, I have organized it better and improved the style based on doko advices and reviews. Before sending the patch to the gcc mailing list I'm copying the message I intend to write here, in case anyone has comments and/or improvements. Finally I'll wait for doko's approval before sending it to the gcc-patches ML. Cheers, Dhole --- Hi! A while back I submitted a patch to the gcc-patches mailing list to allow the embedded timestamps by C/C++ macros to be set externally [0]. The attached patch adresses a comment from Joseph Myers : move the getenv calls into the gcc/ directory; and it also provides better organization and style following the advice and comments of the current Debian gcc package maintainer Matthias Klose (I'm sending the patch with him as co-author). As a reminder for the motivation behind this patch, we are working on the reproducible builds project which aims to provide users with a way to reproduce bit-for-bit identical binary packages from the source and build environment. The project involves Debian as well as several other free software projects. See <https://reproducible-builds.org/> for more information. Quoting from the original email: > In order to do this, we need to make the build processes deterministic. > As you can imagine, gcc is quite involved in producing Debian packages. > One issue we encounter in many packages that fail to build reproducibly > is the use of the __DATE__, __TIME__ C macros [1], right now we have 456 > affected packages that would need patching (either removing the macros, > or passing a known date externally). > A solution for toolchain packages that embed timestamps during the build > process has been proposed for anyone interested and it consists of the > following: > The build environment can export an environment variable called > SOURCE_DATE_EPOCH with a known timestamp in Unix epoch format (In our > case, we use the last date of the package's debian changelog). The > toolchain package running during the build can check if the exported > variable is set and if so, instead of embedding the local date/time, > embed the date/time from SOURCE_DATE_EPOCH. The proposal to use SOURCE_DATE_EPOCH has now been gathered in a more formal specification [2], so that any project can adhere to it to achieve reproducible builds when dealing with timestamps. > It would be very beneficial to our project (and other free software > projects working on reproducible builds) if gcc supported this feature. I'm attaching a patch for gcc-5.2.0 that enables this feature: it modifies the behavior of the macros __DATE__ and __TIME__ when SOURCE_DATE_EPOCH is exported. Any comments, suggestions or other ideas to improve this patch are mostly welcomed. I'm willing to extend the documentation if the patch feels appropriate. Thanks for your attention! PD: Implementation details: The error output in gcc/c-family/c-common.c (get_source_date_epoch) is handled by an fprintf() to stderr followed by an exit (EXIT_FAILURE). I am not sure this is the right approach for error handling, as I have found many usages of the error() function in the code. If implemented with error(), the output looks like this: """ $ SOURCE_DATE_EPOCH=123a123 g++ test_cpp.cpp -o test_cpp In file included from :0:0: /usr/include/stdc-predef.h:1:0: error: Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: a123 /* Copyright (C) 1991-2014 Free Software Foundation, Inc. ^ """ For this reason I used fprintf(stderr, "error message") to report the errors. [0] https://gcc.gnu.org/ml/gcc-patches/2015-06/msg02210.html [1] https://wiki.debian.org/ReproducibleBuilds/TimestampsFromCPPMacros [2] https://reproducible-builds.org/specs/source-date-epoch/ Best regards, Dhole gcc/c-family/ChangeLog: 2015-10-10 Matthias Klose Eduard Sanou * gcc/c-family/c-common.c (get_source_date_epoch): New function, gets the environment variable SOURCE_DATE_EPOCH and parses it as long long with error handling. * gcc/c-family/c-common.h (get_source_date_epoch): Prototype. * gcc/c-family/c-lex.c (c_lex_with_flags): set parse_in->source_date_epoch. libcpp/ChangeLog: 2015-10-10 Matthias Klose Eduard Sanou * libcpp/include/cpplib.h (cpp_init_source_date_epoch): Prototype. * libcpp/init.
Re: [Reproducible-builds] GCC patch reviewed. Proposed mail for gcc-patches mailing list
Hi Chris :) On 11/09/2015 12:11 PM, Chris Lamb wrote: > Just a few quick comment on the patch itself: > > + source_date_epoch = getenv ("SOURCE_DATE_EPOCH"); > + if (source_date_epoch) > +{ > + errno = 0; > + [..] > + return (long long) epoch; > +} > + else > +return -1; > +} > > If you are copying the surrounding code style (I don't have the context > in front of me) then feel free to ignore this, but generally I find > something like this much cleaner: > > + source_date_epoch = getenv ("SOURCE_DATE_EPOCH"); > + if (!source_date_epoch) > +return -1 > + > + errno = 0; > + [..] > + return (long long) epoch; > +} > > IMHO removing indentation levels isn't for the aesthetics; it actually > removes cognitive load on a human reading it as they don't have to > manage/remember/push state in their mind. That does look much cleaner, thanks for the advice! I've modified the patch following your suggestion. -- Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] [PATCH] Allow embedded timestamps by C/C++ macros to be set externally (2)
Hi! A while back I submitted a patch to the gcc-patches mailing list to allow the embedded timestamps by C/C++ macros to be set externally [0]. The attached patch addresses a comment from Joseph Myers : move the getenv calls into the gcc/ directory; and it also provides better organization and style following the advice and comments of the current Debian gcc package maintainer Matthias Klose (I'm sending the patch with him as co-author). As a reminder for the motivation behind this patch, we are working on the reproducible builds project which aims to provide users with a way to reproduce bit-for-bit identical binary packages from the source and build environment. The project involves Debian as well as several other free software projects. See <https://reproducible-builds.org/> for more information. Quoting from the original email: > In order to do this, we need to make the build processes deterministic. > As you can imagine, gcc is quite involved in producing Debian packages. > One issue we encounter in many packages that fail to build reproducibly > is the use of the __DATE__, __TIME__ C macros [1], right now we have 456 > affected packages that would need patching (either removing the macros, > or passing a known date externally). > A solution for toolchain packages that embed timestamps during the build > process has been proposed for anyone interested and it consists of the > following: > The build environment can export an environment variable called > SOURCE_DATE_EPOCH with a known timestamp in Unix epoch format (In our > case, we use the last date of the package's debian changelog). The > toolchain package running during the build can check if the exported > variable is set and if so, instead of embedding the local date/time, > embed the date/time from SOURCE_DATE_EPOCH. The proposal to use SOURCE_DATE_EPOCH has now been gathered in a more formal specification [2], so that any project can adhere to it to achieve reproducible builds when dealing with timestamps. > It would be very beneficial to our project (and other free software > projects working on reproducible builds) if gcc supported this feature. I'm attaching a patch for gcc-5.2.0 that enables this feature: it modifies the behavior of the macros __DATE__ and __TIME__ when SOURCE_DATE_EPOCH is exported. Any comments, suggestions or other ideas to improve this patch are mostly welcomed. I'm willing to extend the documentation if the patch feels appropriate. Thanks for your attention! PD: Implementation details: The error output in gcc/c-family/c-common.c (get_source_date_epoch) is handled by an fprintf() to stderr followed by an exit (EXIT_FAILURE). I am not sure this is the right approach for error handling, as I have found many usages of the error() function in the code. If implemented with error(), the output looks like this: """ $ SOURCE_DATE_EPOCH=123a123 g++ test_cpp.cpp -o test_cpp In file included from :0:0: /usr/include/stdc-predef.h:1:0: error: Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: a123 /* Copyright (C) 1991-2014 Free Software Foundation, Inc. ^ """ For this reason I used fprintf(stderr, "error message") to report the errors. [0] https://gcc.gnu.org/ml/gcc-patches/2015-06/msg02210.html [1] https://wiki.debian.org/ReproducibleBuilds/TimestampsFromCPPMacros [2] https://reproducible-builds.org/specs/source-date-epoch/ Best regards, Dhole gcc/c-family/ChangeLog: 2015-10-10 Eduard Sanou Matthias Klose * gcc/c-family/c-common.c (get_source_date_epoch): New function, gets the environment variable SOURCE_DATE_EPOCH and parses it as long long with error handling. * gcc/c-family/c-common.h (get_source_date_epoch): Prototype. * gcc/c-family/c-lex.c (c_lex_with_flags): set parse_in->source_date_epoch. libcpp/ChangeLog: 2015-10-10 Eduard Sanou Matthias Klose * libcpp/include/cpplib.h (cpp_init_source_date_epoch): Prototype. * libcpp/init.c (cpp_init_source_date_epoch): New function. * libcpp/internal.h: Added source_date_epoch variable to struct cpp_reader to store a reproducible date. * libcpp/macro.c (_cpp_builtin_macro_text): Set pfile->date timestamp from pfile->source_date_epoch instead of localtime if source_date_epoch is set, to be used for __DATE__ and __TIME__ macros to help reproducible builds. diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 7fe7fa6..f795871 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -12318,4 +12318,49 @@ pointer_to_zero_sized_aggr_p (tree t) return (TYPE_SIZE (t) && integer_zerop (TYPE_SIZE (t))); } +/* Read SOURCE_DATE_EPOCH from environment to have a deterministic + timestamp to replace embedded current dates to get reproducible + resul
Re: [Reproducible-builds] Bug#791815: libxslt: please support timestamps from environment
control: forwarded -1 https://bugzilla.gnome.org/show_bug.cgi?id=758148 I have just forwarded patch upstream. Cheers, Dhole signature.asc Description: OpenPGP digital signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
Re: [Reproducible-builds] [PATCH] Allow embedded timestamps by C/C++ macros to be set externally (2)
On 11/16/2015 02:05 PM, Bernd Schmidt wrote: > On 11/15/2015 11:14 PM, Dhole wrote: >> gcc/c-family/ChangeLog: >> >> 2015-10-10 Eduard Sanou > > I can't find a previous change from you in the sources, so the first > question would be whether you've gone through the copyright assignment > process. I haven't gone through the copyright assignment process. Nevertheless Matthias Klose (co-author of this patch) has. In any case, if required, let me know how to proceed to obtain the relevant forms so that I can file the copyright assignment. Best regards, Dhole ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#814280: qt4-x11: please support fixed timestamps in qhelpgenerator
Source: qt4-x11 Version: 4:4.8.7+dfsg-5 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org While working on the "reproducible builds" effort [1], we have noticed that the qhelpgenerator tool from qt4-x11 embeds timestamps on the creation of qch files. Some months ago I sent a patch to fix this issue by enabling qhelpgenerator to use the environment variable SOURCE_DATE_EPOCH when embedding timestamps [1]. Sune Vuorela suggested that it would be better to backport the solution he implemented for qt5 to solve this same issue, which consists in replacing the embedded timestamp by a fixed one [2] and which is already upstream. The attached patch solves the reproducible timestamps issue in the same way as it is solved in qt5 upstream. With the attached patch packages using qhelpgenerator would then automatically embed reproducible timestamps in qch files. [1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=794681 [2] https://codereview.qt-project.org/#/c/106296/ Cheers -- Dhole diff -Nru qt4-x11-4.8.7+dfsg/debian/changelog qt4-x11-4.8.7+dfsg/debian/changelog --- qt4-x11-4.8.7+dfsg/debian/changelog 2015-11-30 20:13:35.0 +0100 +++ qt4-x11-4.8.7+dfsg/debian/changelog 2016-02-09 18:43:42.0 +0100 @@ -1,3 +1,12 @@ +qt4-x11 (4:4.8.7+dfsg-5.0~reproducible0) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Backport patch from qttools5 [1] to make qch files reproducible by +replacing the current time by a fixed date. +[1] https://codereview.qt-project.org/#/c/106296/ + + -- Eduard Sanou Tue, 09 Feb 2016 13:34:21 +0100 + qt4-x11 (4:4.8.7+dfsg-5) unstable; urgency=medium * Add no-ssl3.patch to avoid calling SSLv3 functions as they have been removed diff -Nru qt4-x11-4.8.7+dfsg/debian/patches/replace_timestamps_with_fixed_date_in_qhelpgenerator.patch qt4-x11-4.8.7+dfsg/debian/patches/replace_timestamps_with_fixed_date_in_qhelpgenerator.patch --- qt4-x11-4.8.7+dfsg/debian/patches/replace_timestamps_with_fixed_date_in_qhelpgenerator.patch 1970-01-01 01:00:00.0 +0100 +++ qt4-x11-4.8.7+dfsg/debian/patches/replace_timestamps_with_fixed_date_in_qhelpgenerator.patch 2016-02-09 18:49:02.0 +0100 @@ -0,0 +1,51 @@ +Description: Replace timestamps from qhelpgenerator by a fixed date + In order to make qhelpgenerator output reproducible, we need a way to get + deterministic embedded timestaps. Backport the patch from qttools5 [1] to + make qch files reproducible by replacing the current time by a fixed date. + + [1] https://codereview.qt-project.org/#/c/106296/ +Author: Eduard Sanou + +--- + +Index: qt4-x11-4.8.7+dfsg/tools/assistant/lib/qhelpgenerator.cpp +=== +--- qt4-x11-4.8.7+dfsg.orig/tools/assistant/lib/qhelpgenerator.cpp qt4-x11-4.8.7+dfsg/tools/assistant/lib/qhelpgenerator.cpp +@@ -380,9 +380,7 @@ bool QHelpGenerator::createTables() + + d->query->exec(QLatin1String("INSERT INTO MetaDataTable VALUES('qchVersion', '1.0')")); + +-d->query->prepare(QLatin1String("INSERT INTO MetaDataTable VALUES('CreationDate', ?)")); +-d->query->bindValue(0, QDateTime::currentDateTime().toString(Qt::ISODate)); +-d->query->exec(); ++d->query->exec(QLatin1String("INSERT INTO MetaDataTable VALUES('CreationDate', '2012-12-20T12:00:00Z')")); + + return true; + } +Index: qt4-x11-4.8.7+dfsg/tools/assistant/tools/qcollectiongenerator/main.cpp +=== +--- qt4-x11-4.8.7+dfsg.orig/tools/assistant/tools/qcollectiongenerator/main.cpp qt4-x11-4.8.7+dfsg/tools/assistant/tools/qcollectiongenerator/main.cpp +@@ -521,7 +521,7 @@ int main(int argc, char *argv[]) + CollectionConfiguration::setAddressBarVisible(helpEngine, + !config.hideAddressBar()); + CollectionConfiguration::setCreationTime(helpEngine, +-QDateTime::currentDateTime().toTime_t()); ++QDateTime::fromString("2012-12-20T12:00:00Z", Qt::ISODate).toUTC().toTime_t()); + CollectionConfiguration::setFullTextSearchFallbackEnabled(helpEngine, + config.fullTextSearchFallbackEnabled()); + +Index: qt4-x11-4.8.7+dfsg/tools/assistant/tools/shared/collectionconfiguration.cpp +=== +--- qt4-x11-4.8.7+dfsg.orig/tools/assistant/tools/shared/collectionconfiguration.cpp qt4-x11-4.8.7+dfsg/tools/assistant/tools/shared/collectionconfiguration.cpp +@@ -282,7 +282,7 @@ const QDateTime CollectionConfiguration: + + void CollectionConfiguration::updateLastRegisterTime(QHelpEngineCore &helpEngine) + { +-helpEngine.setCustomValue(LastRegisterTime, QDateTime::currentDateTime()); ++helpEngine.setCus
Re: [Reproducible-builds] Ideas about TimestampsFromCPPMacros issue.
On 16-02-11 20:13:25, Ximin Luo wrote: > Juan Picca: > > From the issue page > > (https://wiki.debian.org/ReproducibleBuilds/TimestampsFromCPPMacros) > > i see that the usage of SOURCE_DATE_EPOCH was > > discouraged in the gcc-patches mailing list thread. > > > > Hi Juan, I think that was not discouragement, it was just neutral discussion > about the consequences. > > As I understand the patch is going ahead and will eventually hit GCC 6. They > just needed to find some time that's suitable for their release cycle. > > https://gcc.gnu.org/ml/gcc-patches/2015-12/msg01590.html > > X Exactly! As Ximin says, the thread you included was from june 2015. The message you show was not really a discouragement but a suggestion, so it must be taken as any other suggestion, and I believe that the message was not from a gcc maintainer. The thread that Ximin included is the most recent discussion, see the beginning here: https://gcc.gnu.org/ml/gcc-patches/2015-11/msg01890.html. Basically I took the original patch and modified following the suggestions from the gcc contributors in the original thread plus review by the Debian gcc maintainer Matthias Klose (you can follow the thread to learn more). Eventually the gcc people seemed to have no further complain about the patch; I even signed the copyright assignment. So the last message was that they are now at the stage of fixing bugs in GCC 5, and they asked me to send the patch again when the new feature stage for GCC 6 starts, which should be around April 2016 :) -- Dhole signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#815082: arachne-pnr: please make the build reproducible
Source: arachne-pnr Version: 0~20150927gitefdb026-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that arachne-pnr could not be built reproducibly. The attached patch sets the embedded date in the man pages generated by txt2man to UTC with LC_ALL=C to normalize the locale. Once applied, arachne-pnr can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru arachne-pnr-0~20150927gitefdb026/debian/changelog arachne-pnr-0~20150927gitefdb026/debian/changelog --- arachne-pnr-0~20150927gitefdb026/debian/changelog 2016-02-06 11:33:55.0 +0100 +++ arachne-pnr-0~20150927gitefdb026/debian/changelog 2016-02-18 01:38:23.0 +0100 @@ -1,3 +1,10 @@ +arachne-pnr (0~20150927gitefdb026-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Set changelog date to UTC with LC_ALL=C to make man pages reproducible. + + -- Eduard Sanou Thu, 18 Feb 2016 01:38:01 +0100 + arachne-pnr (0~20150927gitefdb026-1) unstable; urgency=low * Initial release (Closes: #801230) diff -Nru arachne-pnr-0~20150927gitefdb026/debian/rules arachne-pnr-0~20150927gitefdb026/debian/rules --- arachne-pnr-0~20150927gitefdb026/debian/rules 2016-02-06 11:33:55.0 +0100 +++ arachne-pnr-0~20150927gitefdb026/debian/rules 2016-02-18 15:14:07.0 +0100 @@ -5,7 +5,7 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=+all -CHANGELOG_DATE ?= $(shell date -d "`dpkg-parsechangelog --show-field Date`" +"%d %B %Y") +CHANGELOG_DATE ?= $(shell LC_ALL=C date -u -d "`dpkg-parsechangelog --show-field Date`" +"%d %B %Y") %: dh $@ signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#815818: pcmanfm-qt: please make the build reproducible
Source: pcmanfm-qt Version: 0.10.1-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that pcmanfm-qt could not be built reproducibly. When processing translation files and using a non-UTF8 locale, grep misdetects them as binary files and embeds the line: "Binary file (standard input) matches" The attached patch fixes this by telling grep to treat the input as text. Once applied, pcmanfm-qt can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru pcmanfm-qt-0.10.1/debian/changelog pcmanfm-qt-0.10.1/debian/changelog --- pcmanfm-qt-0.10.1/debian/changelog 2016-02-07 15:28:09.0 +0100 +++ pcmanfm-qt-0.10.1/debian/changelog 2016-02-23 11:31:01.0 +0100 @@ -1,3 +1,10 @@ +pcmanfm-qt (0.10.1-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Fix misdetection as binary input when LC_ALL=C + + -- Eduard Sanou Tue, 23 Feb 2016 11:30:33 +0100 + pcmanfm-qt (0.10.1-1) unstable; urgency=medium * New upstream release. diff -Nru pcmanfm-qt-0.10.1/debian/patches/series pcmanfm-qt-0.10.1/debian/patches/series --- pcmanfm-qt-0.10.1/debian/patches/series 1970-01-01 01:00:00.0 +0100 +++ pcmanfm-qt-0.10.1/debian/patches/series 2016-02-23 11:31:21.0 +0100 @@ -0,0 +1 @@ +unicode-grep.patch diff -Nru pcmanfm-qt-0.10.1/debian/patches/unicode-grep.patch pcmanfm-qt-0.10.1/debian/patches/unicode-grep.patch --- pcmanfm-qt-0.10.1/debian/patches/unicode-grep.patch 1970-01-01 01:00:00.0 +0100 +++ pcmanfm-qt-0.10.1/debian/patches/unicode-grep.patch 2016-02-23 11:59:06.0 +0100 @@ -0,0 +1,23 @@ +Description: Fix misdetection as binary input when LC_ALL=C + +Index: pcmanfm-qt-0.10.1/cmake/LXQtTranslateDesktop.cmake +=== +--- pcmanfm-qt-0.10.1.orig/cmake/LXQtTranslateDesktop.cmake pcmanfm-qt-0.10.1/cmake/LXQtTranslateDesktop.cmake +@@ -71,13 +71,13 @@ function(lxqt_translate_desktop _RESULT) + set(_pattern "'\\[.*]\\s*='") + if (_translations) + add_custom_command(OUTPUT ${_outFile} +-COMMAND grep -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile} +-COMMAND grep -h ${_pattern} ${_translations} >> ${_outFile} ++COMMAND grep -a -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile} ++COMMAND grep -a -h ${_pattern} ${_translations} >> ${_outFile} + COMMENT "Generating ${_fileName}${_fileExt}" + ) + else() + add_custom_command(OUTPUT ${_outFile} +-COMMAND grep -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile} ++COMMAND grep -a -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile} + COMMENT "Generating ${_fileName}${_fileExt}" + ) + endif() signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#815900: obconf-qt: please make the build reproducible
Source: obconf-qt Version: 0.9.0+20151227-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: locale X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi, While working on the "reproducible builds" effort [1], we have noticed that obconf-qt could not be built reproducibly. When processing translation files and using a non-UTF8 locale, grep misdetects them as binary files and embeds the line: "Binary file (standard input) matches" The attached patch fixes this by telling grep to treat the input as text.Once applied, obconf-qt can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds Regards, -- Dhole diff -Nru obconf-qt-0.9.0+20151227/debian/changelog obconf-qt-0.9.0+20151227/debian/changelog --- obconf-qt-0.9.0+20151227/debian/changelog 2015-12-27 01:16:30.0 +0100 +++ obconf-qt-0.9.0+20151227/debian/changelog 2016-02-25 00:19:06.0 +0100 @@ -1,3 +1,10 @@ +obconf-qt (0.9.0+20151227-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Fix misdetection as binary input in grep when LC_ALL=C + + -- Eduard Sanou Thu, 25 Feb 2016 00:19:00 +0100 + obconf-qt (0.9.0+20151227-1) unstable; urgency=medium * Cherry-picked upstream version 0.9.0+20151227. diff -Nru obconf-qt-0.9.0+20151227/debian/patches/series obconf-qt-0.9.0+20151227/debian/patches/series --- obconf-qt-0.9.0+20151227/debian/patches/series 1970-01-01 01:00:00.0 +0100 +++ obconf-qt-0.9.0+20151227/debian/patches/series 2016-02-25 00:19:24.0 +0100 @@ -0,0 +1 @@ +unicode-grep.patch diff -Nru obconf-qt-0.9.0+20151227/debian/patches/unicode-grep.patch obconf-qt-0.9.0+20151227/debian/patches/unicode-grep.patch --- obconf-qt-0.9.0+20151227/debian/patches/unicode-grep.patch 1970-01-01 01:00:00.0 +0100 +++ obconf-qt-0.9.0+20151227/debian/patches/unicode-grep.patch 2016-02-25 00:19:34.0 +0100 @@ -0,0 +1,22 @@ +Author: Eduard Sanou +Description: Fix misdetection as binary input when LC_ALL=C + +--- obconf-qt-0.9.0+20151227.orig/cmake/LXQtTranslateDesktop.cmake obconf-qt-0.9.0+20151227/cmake/LXQtTranslateDesktop.cmake +@@ -71,13 +71,13 @@ function(lxqt_translate_desktop _RESULT) + set(_pattern "'\\[.*]\\s*='") + if (_translations) + add_custom_command(OUTPUT ${_outFile} +-COMMAND grep -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile} +-COMMAND grep -h ${_pattern} ${_translations} >> ${_outFile} ++COMMAND grep -a -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile} ++COMMAND grep -a -h ${_pattern} ${_translations} >> ${_outFile} + COMMENT "Generating ${_fileName}${_fileExt}" + ) + else() + add_custom_command(OUTPUT ${_outFile} +-COMMAND grep -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile} ++COMMAND grep -a -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile} + COMMENT "Generating ${_fileName}${_fileExt}" + ) + endif() signature.asc Description: PGP signature ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds