sensible-utils: please make sensible-utils build reproducibly
Ximin Luo
infinity0 at debian.org
Wed Jun 28 16:25:00 UTC 2017
Ximin Luo:
> Hi, here is an updated patch - it gets rid of filesystem and umask differences, which started cropping up. I think previously I was testing with an older version of reprotest, which didn't properly test these differences.
>
> I also took the chance to refactor the rules file slightly, for readability.
>
Hi, I have updated the patch and uploaded this to DELAYED/14.
The patch is attached, it's the same one as before just with a "more official" changelog.
X
--
GPG: ed25519/56034877E1F87C35
GPG: rsa4096/1318EFAC5FBBDBCE
https://github.com/infinity0/pubkeys.git
-------------- next part --------------
diff -Nru sensible-utils-0.0.9/debian/changelog sensible-utils-0.0.9+nmu1/debian/changelog
--- sensible-utils-0.0.9/debian/changelog 2013-06-06 14:19:53.000000000 +0200
+++ sensible-utils-0.0.9+nmu1/debian/changelog 2017-06-28 18:17:02.000000000 +0200
@@ -1,3 +1,20 @@
+sensible-utils (0.0.9+nmu1) unstable; urgency=medium
+
+ * Non-maintainer upload.
+
+ [ Jérémy Bobbio ]
+ * Make package build reproducibly:
+ - Stop recording current time when creating gzip files.
+ - Fix mtimes before creating binary packages.
+
+ [ Ximin Luo ]
+ * Make package build reproducible, pt 2:
+ - Sort file list, to avoid filesystem differences.
+ - Explicitly install every language man dir, to avoid umask differences.
+ - Slightly refactoring for readability.
+
+ -- Ximin Luo <infinity0 at debian.org> Wed, 28 Jun 2017 18:17:02 +0200
+
sensible-utils (0.0.9) unstable; urgency=low
* Fix bashism in select-editor
diff -Nru sensible-utils-0.0.9/debian/rules sensible-utils-0.0.9+nmu1/debian/rules
--- sensible-utils-0.0.9/debian/rules 2012-05-14 09:23:19.000000000 +0200
+++ sensible-utils-0.0.9+nmu1/debian/rules 2017-06-28 18:11:41.000000000 +0200
@@ -9,6 +9,11 @@
INSTALL_SCRIPT = $(INSTALL) -p -o root -g root -m 755
INSTALL_DIR = $(INSTALL) -p -d -o root -g root -m 755
+MAN_LANGS = de es fr it ja pl
+MAN_DIRS = $(MAN_LANGS:%=debian/sensible-utils/usr/share/man/%/man1)
+
+BUILD_DATE := $(shell dpkg-parsechangelog | sed -n -e 's/^Date: //p')
+
DEB_BUILD_ARCH_OS ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH_OS)
DEB_BUILD_GNU_TYPE = $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_GNU_TYPE = $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
@@ -52,41 +57,30 @@
$(INSTALL_DIR) debian/sensible-utils/DEBIAN \
debian/sensible-utils/usr/bin \
debian/sensible-utils/usr/share/man/man1 \
+ $(MAN_DIRS) \
debian/sensible-utils/usr/lib/mime/packages \
debian/sensible-utils/usr/share/doc/$(package)
$(MAKE) install DESTDIR=$(CURDIR)/debian/sensible-utils INSTALL_PROGRAM="$(INSTALL_PROGRAM)"
- ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/man1/sensible-pager.1.gz
- ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/man1/sensible-browser.1.gz
- ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/fr/man1/sensible-pager.1.gz
- ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/fr/man1/sensible-browser.1.gz
- ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/pl/man1/sensible-pager.1.gz
- ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/pl/man1/sensible-browser.1.gz
- ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/es/man1/sensible-pager.1.gz
- ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/es/man1/sensible-browser.1.gz
- ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/de/man1/sensible-pager.1.gz
- ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/de/man1/sensible-browser.1.gz
- ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/ja/man1/sensible-pager.1.gz
- ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/ja/man1/sensible-browser.1.gz
- ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/it/man1/sensible-pager.1.gz
- ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/it/man1/sensible-browser.1.gz
+ set -e; for i in "" $(MAN_LANGS); do \
+ ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/$$i/man1/sensible-pager.1.gz; \
+ ln -s sensible-editor.1.gz debian/sensible-utils/usr/share/man/$$i/man1/sensible-browser.1.gz; \
+ done
$(INSTALL_FILE) debian/changelog debian/sensible-utils/usr/share/doc/$(package)
find debian/sensible-utils/usr/share/man/man1 \
- debian/sensible-utils/usr/share/man/es/man1 \
- debian/sensible-utils/usr/share/man/fr/man1 \
- debian/sensible-utils/usr/share/man/pl/man1 \
- debian/sensible-utils/usr/share/man/de/man1 \
- debian/sensible-utils/usr/share/man/ja/man1 \
- debian/sensible-utils/usr/share/man/it/man1 \
- debian/sensible-utils/usr/share/doc/$(package) -type f | xargs gzip -9
+ $(MAN_DIRS) \
+ debian/sensible-utils/usr/share/doc/$(package) -type f | xargs gzip -9n
$(INSTALL_FILE) debian/copyright debian/sensible-utils/usr/share/doc/$(package)
$(INSTALL_SCRIPT) debian/postinst debian/sensible-utils/DEBIAN/
$(INSTALL_SCRIPT) debian/postrm debian/sensible-utils/DEBIAN/
$(INSTALL_FILE) debian/mime debian/sensible-utils/usr/lib/mime/packages/sensible-utils
- cd debian/sensible-utils && find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums
+ cd debian/sensible-utils && find * -type f ! -regex '^DEBIAN/.*' -print0 | \
+ LC_ALL=C.UTF-8 sort -z | xargs -r0 md5sum > DEBIAN/md5sums
dpkg-gencontrol -Pdebian/sensible-utils
+ find debian/sensible-utils -depth -newermt '$(BUILD_DATE)' -print0 | \
+ xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
dpkg --build debian/sensible-utils ..
define checkdir
More information about the Reproducible-bugs
mailing list