[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_buildsid=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_buildsid=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
[Reproducible-builds] Bug#794888: debbindiff: WARNING Unknown squashfs entry: create_inode: could not create character device /tmp/.../dev/console, because you're not superuser
package: debbindiff version: 53 Hi, filing a bug as suggested on irc. https://jenkins.debian.net/view/reproducible/job/reproducible_openwrt/53/consoleFull showed these lines at the end: /srv/reproducible-results/tmp.EAwfyuKo8f/b2/ar71xx /srv/reproducible-results/tmp.EAwfyuKo8f/b1/ar71xx /srv/reproducible-results/tmp.EAwfyuKo8f/b1/ar71xx /srv/reproducible-results/tmp.EAwfyuKo8f/b2/ramips /srv/reproducible-results/tmp.EAwfyuKo8f/b1/ramips /srv/reproducible-results/tmp.EAwfyuKo8f/b1/ramips WARNING Unknown squashfs entry: WARNING Unknown squashfs entry: create_inode: could not create character device /tmp/tmploEVFzdebbindiff/dev/console, because you're not superuser! create_inode: could not create character device /tmp/tmpXGtk0Mdebbindiff/dev/console, because you're not superuser! Fri 7 Aug 15:38:47 UTC 2015 - debbindiff 28 found issues, please investigate ramips/openwrt-ramips-rt288x-root.squashfs Fri 7 Aug 15:38:51 UTC 2015 - debbindiff 28 found issues, please investigate ramips/openwrt-ramips-rt288x-rt-n15-squashfs-sysupgrade.bin Fri 7 Aug 15:38:54 UTC 2015 - debbindiff 28 found issues, please investigate ramips/openwrt-ramips-rt288x-uImage.bin Fri 7 Aug 15:38:57 UTC 2015 - debbindiff 28 found issues, please investigate ramips/openwrt-ramips-rt288x-vmlinux.bin /srv/reproducible-results/tmp.EAwfyuKo8f/b2/x86 /srv/reproducible-results/tmp.EAwfyuKo8f/b1/x86 /srv/reproducible-results/tmp.EAwfyuKo8f/b1/x86 /srv/reproducible-results/tmp.EAwfyuKo8f/b2/ar71xx /srv/reproducible-results/tmp.EAwfyuKo8f/b1/ar71xx /srv/reproducible-results/tmp.EAwfyuKo8f/b1/ar71xx This reminds of #789003 but is not quite the same. cheers, Holger signature.asc Description: This is a digitally signed message part. ___ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds
[Reproducible-builds] Bug#794892: autogen: please make the build reproducible (cpu, locale, timestamps)
Source: autogen Version: 1:5.18.6~pre3-3 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: cpu locale timestamps X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org Hi! While working on the “reproducible builds” effort [1], we have noticed that autogen could not be built reproducibly. The attached patch fixes the following issues: * run time of ./configure affects a preprocessor constant * locale-dependant sort * timezone-dependant date Once applied, and after pdftex is fixed [2], autogen will be buildable reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds [2]: https://wiki.debian.org/ReproducibleBuilds/TimestampsInPDFGeneratedByLaTeX Regards, Valentin diff -ru autogen-5.18.6~pre3.orig/autoopts/tpl/agman-cmd.tpl autogen-5.18.6~pre3/autoopts/tpl/agman-cmd.tpl --- autogen-5.18.6~pre3.orig/autoopts/tpl/agman-cmd.tpl 2015-08-05 09:18:53.539284309 + +++ autogen-5.18.6~pre3/autoopts/tpl/agman-cmd.tpl 2015-08-07 18:05:30.0 + @@ -33,7 +33,7 @@ (define head-line (lambda() (sprintf .TH %s %s \%s\ \%s\ \%s\\n.n (get prog-name) man-sect -(shell date '+%d %b %Y') package-text section-name) )) +(shell LC_ALL=C date -u '+%d %b %Y' -d @$SOURCE_DATE_EPOCH ) package-text section-name) )) (define man-page #t) (out-push-new) :+][+: diff -ru autogen-5.18.6~pre3.orig/autoopts/tpl/agman-file.tpl autogen-5.18.6~pre3/autoopts/tpl/agman-file.tpl --- autogen-5.18.6~pre3.orig/autoopts/tpl/agman-file.tpl 2015-08-05 09:18:53.539284309 + +++ autogen-5.18.6~pre3/autoopts/tpl/agman-file.tpl 2015-08-07 18:05:30.0 + @@ -31,7 +31,7 @@ (define head-line (lambda() (sprintf .TH %s %s \%s\ \%s\ \%s\\n.n (get prog-name) man-sect -(shell date '+%d %b %Y') package-text section-name) )) +(shell LC_ALL=C date -u '+%d %b %Y' -d @$SOURCE_DATE_EPOCH ) package-text section-name) )) (define man-page #t) diff -ru autogen-5.18.6~pre3.orig/configure.ac autogen-5.18.6~pre3/configure.ac --- autogen-5.18.6~pre3.orig/configure.ac 2015-08-05 09:18:53.555284310 + +++ autogen-5.18.6~pre3/configure.ac 2015-08-07 16:34:39.0 + @@ -33,7 +33,6 @@ AC_LIBTOOL_WIN32_DLLm4_define(AC_PROVIDE_AC_LIBTOOL_WIN32_DLL) AC_PROG_LIBTOOL ifdef([AC_REVISION],AC_REVISION($Revision: 4.34 $),)dnl -[config_start_time=`date +%s 2/dev/null`] # -- # Substitute VERSION vars here, so that they can be used by the Makefile # -- @@ -178,17 +177,11 @@ fi M4_SRC=`cd $srcdir/config ; echo [a-z]*.m4` ENABLE_STATIC=${enable_static} -config_end_time=`date +%s 2/dev/null` -time_delta=`expr ${config_end_time} - ${config_start_time} 2/dev/null` -if test -z ${time_delta} -then time_delta=10 -elif test ${time_delta} -lt 5 -then time_delta=5 ; fi - -AG_TIMEOUT=${time_delta} +ag_timeout=10 +AG_TIMEOUT=${ag_timeout} ] -AC_DEFINE_UNQUOTED(AG_DEFAULT_TIMEOUT, ${time_delta}, +AC_DEFINE_UNQUOTED(AG_DEFAULT_TIMEOUT, ${ag_timeout}, [define to suitable timeout limit for shell command]) AC_SUBST(M4_SRC) AC_SUBST(AGnam) diff -ru autogen-5.18.6~pre3.orig/debian/rules autogen-5.18.6~pre3/debian/rules --- autogen-5.18.6~pre3.orig/debian/rules 2015-08-05 09:18:53.527284309 + +++ autogen-5.18.6~pre3/debian/rules 2015-08-07 18:14:15.654037956 + @@ -3,8 +3,10 @@ export DEB_LDFLAGS_MAINT_APPEND := -Wl,--as-needed export DEB_CFLAGS_MAINT_APPEND := -Wall -Wno-format-contains-nul # Used by 10_libopts_tarball_perms.diff +export LC_COLLATE=C +export LC_ALL=C export BUILD_DATE := $(shell dpkg-parsechangelog --show-field Date) -DATECHLOG := $(shell date -d '$(BUILD_DATE)' +%Y-%m-%d) +DATECHLOG := $(shell date -u -d '$(BUILD_DATE)' +%Y-%m-%d) override_dh_auto_configure: dh_auto_configure --verbose -- \ ___ 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. - versiondate/version 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 - versiondate/version + versionbuilddate;/version 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