Your message dated Fri, 01 May 2015 22:52:42 +0200 with message-id <15386449.hNhB6K8J59@gyllingar> and subject line Re: Bug#783647: win32-loader: please make the build reproducible has caused the Debian Bug report #783647, regarding win32-loader: please make the build reproducible to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org immediately.) -- 783647: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=783647 Debian Bug Tracking System Contact owner@bugs.debian.org with problems
--- Begin Message ---
- To: submit@bugs.debian.org
- Subject: win32-loader: please make the build reproducible
- From: Jérémy Bobbio <jeremy.bobbio@irq7.fr>
- Date: Tue, 28 Apr 2015 19:59:55 +0200
- Message-id: <20150428175955.GG7096@loar>
- Mail-followup-to: submit@bugs.debian.org
Source: win32-loader Version: 0.7.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 win32-loader could not be built reproducibly. The attached patch—based on Git master—fixes timestamps related variations from the build system. Once applied, win32-loader can be built reproducibly in our current experimental framework. [1]: https://wiki.debian.org/ReproducibleBuilds -- Jérémy Bobbio .''`. jeremy.bobbio@irq7.fr : : : lunar@debian.org `. `'` lunar@torproject.org `-From a204ef8b9f80fb5bde5b2f1d1d388a1f8ced3b26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Bobbio?= <lunar@debian.org> Date: Tue, 28 Apr 2015 17:51:57 +0000 Subject: [PATCH] Make package build reproducibly All the issues were timestamps related. Here are the fixes: First, we ask mingw to stop inserting timestamps when building NSIS DLLs. Then, a date is used as the value of VIProductVersion. This now can be set through a variable. The modification time of the files that gets built to be embedded in the installer gets written to the result. So these mtimes are now capped to the build date. Finally, the date is then set in debian/rules to the latest debian/changelog entry to be the same accross builds. --- Makefile | 13 ++++++++----- debian/changelog | 10 ++++++++++ debian/rules | 4 ++++ 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index fc2330a..6145367 100644 --- a/Makefile +++ b/Makefile @@ -6,8 +6,10 @@ export SHELL := bash PACKAGE := win32-loader VERSION := $(shell head -n 1 debian/changelog | sed -e "s/^$(PACKAGE) (\(.*\)).*/\1/g") +BUILD_DATE ?= $(shell LC_ALL=C date +'%a, %d %b %Y %T %z') +FOUR_DIGITS_DATE := $(shell date -u +'%Y.%m.%d.%H%M' --date="$(BUILD_DATE)") -NSIS_CC := i686-w64-mingw32-gcc -Os +NSIS_CC := i686-w64-mingw32-gcc -Os -Xlinker --no-insert-timestamp NSIS_STRIP := i686-w64-mingw32-strip NSIS_CFLAGS := -Wl,--file-alignment,512 -Werror -D_WIN32_WINNT=0x0500 @@ -23,7 +25,7 @@ endif MAKENSIS := makensis -V3 # Add to it some version'ing and date -MAKENSIS += -DVERSION=$(VERSION) -D4DIGITS_DATE=`date +%Y.%m.%d.%H%M` +MAKENSIS += -DVERSION=$(VERSION) -D4DIGITS_DATE=$(FOUR_DIGITS_DATE) ifdef OUTFILE_NAME MAKENSIS += -D_OUTFILE_NAME=$(OUTFILE_NAME) @@ -111,9 +113,9 @@ pxe.lkrn: /usr/lib/ipxe/ipxe.lkrn cp $^ $@ ifdef PXE -pxe.target: pxe.lkrn templates/ternary_choice.ini +PXE_TARGETS = pxe.lkrn templates/ternary_choice.ini else -pxe.target: +PXE_TARGETS = endif templates/gtk.bmp: templates/gtk_orig.png @@ -132,8 +134,9 @@ win32-loader.exe: main.nsi maps.ini \ templates/gtk.bmp templates/text.bmp \ plugins/cpuid/test64.dll plugins/systeminfo/systeminfo.dll plugins/string.dll \ plugins/sha1sum.dll \ - pxe.target \ + $(PXE_TARGETS) \ win32-loader.ico loadlin.pif loadlin.exe g2ldr g2ldr.mbr + find $^ -newermt "$(BUILD_DATE)" -print0 | xargs -0r touch --date="$(BUILD_DATE)" $(MAKE) -C l10n $(MAKENSIS) main.nsi ifndef OUTFILE_NAME diff --git a/debian/changelog b/debian/changelog index b7b4ba6..92bf432 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +win32-loader (0.7.9.0~reproducible1) UNRELEASED; urgency=low + + * Make package build reproducibly: + - Don't insert timestamps when building NSIS DLLs. + - Allow to set build date externally. + - Reset embedded file modification times to the build date. + - Set build date in debian/rules to the latest debian/changelog entry. + + -- Jérémy Bobbio <lunar@debian.org> Tue, 28 Apr 2015 14:50:08 +0000 + win32-loader (0.7.9) unstable; urgency=medium * Add NSIS in the Built-Using list, given that win32-loader embeds (at least) diff --git a/debian/rules b/debian/rules index 0039893..352f819 100755 --- a/debian/rules +++ b/debian/rules @@ -3,6 +3,8 @@ # Install the win32-loader-standalone.exe as debian/tools/win32-loader/$(SUITE)/win32-loader.exe on the mirrors BYHAND ?= yes +BUILD_DATE := $(shell dpkg-parsechangelog -S Date) + W32_VERSION := $(shell dpkg-parsechangelog | sed -rne 's,^Version: ([^-]+).*,\1,p') W32_BYHAND_NAME := win32-loader_$(W32_VERSION)_all @@ -41,6 +43,7 @@ ifeq ($(BYHAND),yes) STANDALONE=yes \ PXE=yes \ OUTFILE_NAME=$(W32_BYHAND_NAME).exe \ + BUILD_DATE="$(BUILD_DATE)" \ dh_auto_build # Prepare the README file @@ -52,6 +55,7 @@ ifeq ($(BYHAND),yes) endif # Build the cdrom version OUTFILE_NAME=win32-loader.exe \ + BUILD_DATE="$(BUILD_DATE)" \ dh_auto_build override_dh_auto_clean: -- 2.1.4Attachment: signature.asc
Description: Digital signature
--- End Message ---
--- Begin Message ---
- To: Jérémy Bobbio <jeremy.bobbio@irq7.fr>
- Cc: 783647-done@bugs.debian.org
- Subject: Re: Bug#783647: win32-loader: please make the build reproducible
- From: Didier 'OdyX' Raboud <odyx@debian.org>
- Date: Fri, 01 May 2015 22:52:42 +0200
- Message-id: <15386449.hNhB6K8J59@gyllingar>
- In-reply-to: <1943907.Sx6IeCGsoq@gyllingar>
- References: <20150428175955.GG7096@loar> <1943907.Sx6IeCGsoq@gyllingar>
Version: 0.7.10 Le mercredi, 29 avril 2015, 09.15:55 Didier 'OdyX' Raboud a écrit : > > The attached patch—based on Git master—fixes timestamps related > > variations from the build system. Once applied, win32-loader can be > > built reproducibly in our current experimental framework. > > Yay, wonderful, thanks! > > I've applied your patch (split in different patches) to master and > will upload 0.7.10 quickly! Forgot to close the bug. Hereby doing. :) OdyX
--- End Message ---