[Reproducible-builds] Bug#787123: rsync: please make the build reproducible

Dhole dhole at openmailbox.org
Thu May 28 21:03:59 UTC 2015


Source: rsync
Version: 3.1.1-3
Severity: wishlist
Tags: patch
User: reproducible-builds at lists.alioth.debian.org
Usertags: timestamps

Hi!

While working on the “reproducible builds” effort [1], we have noticed
that rsync could not be built reproducibly.

The attached patch removes extra timestamps from the gzipped docs and
fixes the files mtime before building the binary packages. Once applied,
rsync can be built reproducibly in our current experimental framework.

 [1]: https://wiki.debian.org/ReproducibleBuilds
-- 
Dhole
-------------- next part --------------
diff --git a/rsync-3.1.1/debian/rules b/rsync-3.1.1/debian/rules
index 998ad76..54faa0c 100755
--- a/rsync-3.1.1/debian/rules
+++ b/rsync-3.1.1/debian/rules
@@ -42,6 +42,7 @@ DEB_HOST_GNU_TYPE=$(DEB_BUILD_GNU_TYPE)
 
 DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
 DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+BUILD_DATE=$(shell dpkg-parsechangelog --show-field Date)
 
 ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
 INSTALL_CROSS := 
@@ -111,7 +112,7 @@ endif
 	$(INSTALL_FILE) debian/README.Debian   debian/tmp/usr/share/doc/rsync/
 	echo -e '\n\f' >> debian/tmp/usr/share/doc/rsync/changelog
 	cat OLDNEWS    >> debian/tmp/usr/share/doc/rsync/changelog
-	gzip -9fr `find debian/tmp/usr/share/doc/ debian/tmp/usr/share/man/ -type f`
+	gzip -9frn `find debian/tmp/usr/share/doc/ debian/tmp/usr/share/man/ -type f`
 	$(INSTALL_FILE) debian/rsyncd.conf debian/logrotate.conf.rsync debian/tmp/usr/share/doc/rsync/examples/
 	$(INSTALL_FILE) debian/copyright debian/tmp/usr/share/doc/rsync/
 	# $(INSTALL_SCRIPT) test.sh debian/tmp/usr/lib/debian-test/tests/rsync
@@ -128,6 +129,8 @@ endif
 	dpkg-gencontrol -isp
 	chown -R root.root debian/tmp
 	chmod -R go=rX debian/tmp
+	find debian/tmp -depth -newermt '$(BUILD_DATE)' -print0 | \
+		xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
 	dpkg --build debian/tmp ..
 
 # Below here is fairly generic really


More information about the Reproducible-builds mailing list