[Debian-lego-team] Bug#849926: nxt-firmware: please make the build reproducible (timestamps)
Dhole
dhole at openmailbox.org
Mon Jan 2 10:43:10 UTC 2017
Source: nxt-firmware
Version: 1.29-20120908+dfsg-3
Severity: wishlist
Tags: patch
User: reproducible-builds at lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-bugs at lists.alioth.debian.org
Hi,
While working on the "reproducible builds" effort [1], we have noticed
that nxt-firmware could not be built reproducibly.
Part of the source code used to build the firmware image embeds the
build timestamp through the __DATE__ and __TIME__ gcc macros.
Unfortunately arm-none-eabi-gcc doesn't honour SOURCE_DATE_EPOCH yet, so
it generates unreproducible results.
The attached patch fixes this by replacing the usage of __DATE__ and
__TIME__ by fixed date and time strings. Once applied, nxt-firmware can
be built reproducibly in our current experimental framework.
[1]: https://wiki.debian.org/ReproducibleBuilds
Regards,
--
Dhole
-------------- next part --------------
diff -Nru nxt-firmware-1.29-20120908+dfsg/debian/changelog nxt-firmware-1.29-20120908+dfsg/debian/changelog
--- nxt-firmware-1.29-20120908+dfsg/debian/changelog 2016-12-23 09:05:10.000000000 +0100
+++ nxt-firmware-1.29-20120908+dfsg/debian/changelog 2017-01-02 10:04:49.000000000 +0100
@@ -1,3 +1,11 @@
+nxt-firmware (1.29-20120908+dfsg-3.1) UNRELEASED; urgency=medium
+
+ * Non-maintainer upload.
+ * Use a fixed timestamp in the source code to get a reproducible firmware
+ image.
+
+ -- Eduard Sanou <dhole at openmailbox.org> Mon, 02 Jan 2017 10:04:49 +0100
+
nxt-firmware (1.29-20120908+dfsg-3) unstable; urgency=low
* Move AppStream metadata to new location /usr/share/metainfo/.
diff -Nru nxt-firmware-1.29-20120908+dfsg/debian/patches/fix-timestamp.patch nxt-firmware-1.29-20120908+dfsg/debian/patches/fix-timestamp.patch
--- nxt-firmware-1.29-20120908+dfsg/debian/patches/fix-timestamp.patch 1970-01-01 01:00:00.000000000 +0100
+++ nxt-firmware-1.29-20120908+dfsg/debian/patches/fix-timestamp.patch 2017-01-02 10:04:49.000000000 +0100
@@ -0,0 +1,18 @@
+Description: Fix timestamp
+ Use a fixed timestamp in the source code to get a reproducible firmware image.
+Author: Eduard Sanou <dhole at openmailbox.org>
+
+--- nxt-firmware-1.29-20120908+dfsg.orig/AT91SAM7S256/Source/BtTest.inc
++++ nxt-firmware-1.29-20120908+dfsg/AT91SAM7S256/Source/BtTest.inc
+@@ -9,8 +9,9 @@
+
+ extern void BtIo(void);
+
+-const char BUILD_DATE[] = __DATE__;
+-const char BUILD_TIME[] = __TIME__;
++// Using fixed date and time to get reproducible builds
++const char BUILD_DATE[] = "Oct 19 2016";
++const char BUILD_TIME[] = "10:27:42";
+
+ const char MONTH[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
+
diff -Nru nxt-firmware-1.29-20120908+dfsg/debian/patches/series nxt-firmware-1.29-20120908+dfsg/debian/patches/series
--- nxt-firmware-1.29-20120908+dfsg/debian/patches/series 1970-01-01 01:00:00.000000000 +0100
+++ nxt-firmware-1.29-20120908+dfsg/debian/patches/series 2017-01-02 10:04:49.000000000 +0100
@@ -0,0 +1 @@
+fix-timestamp.patch
More information about the Debian-lego-team
mailing list