Source: lsof Version: 4.86+dfsg-1 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: timestamps username hostname uname
Hi! As part of the “reproducible builds” project, we have identified that lsof build process captured too much information about its build environment. This unfortunately prevents lsof from building reproducibly. The attached patch will make lsof builds reproducible by preventing username, hostname, kernel version, and build time from being captured as part of the build process. For build time, a patch over upstream code is added to allow LSOF_CCDATE to be preset by an environment variable, just like LSOF_HOST and others. [1]: https://wiki.debian.org/ReproducibleBuilds -- Lunar .''`. lu...@debian.org : :Ⓐ : # apt-get install anarchism `. `'` `-
diff -Nru lsof-4.86+dfsg/debian/changelog lsof-4.86+dfsg/debian/changelog --- lsof-4.86+dfsg/debian/changelog 2012-04-25 08:11:26.000000000 +0200 +++ lsof-4.86+dfsg/debian/changelog 2014-09-22 11:31:24.000000000 +0200 @@ -1,3 +1,11 @@ +lsof (4.86+dfsg-1.0reproducible1) UNRELEASED; urgency=medium + + * Allow LSOF_CCDATE to be overriden by an environment variable. + * Ensure build reproducibility by preventing Configure to capture + username, hostname, kernel version, and build time. + + -- Jérémy Bobbio <lu...@debian.org> Mon, 22 Sep 2014 09:13:54 +0000 + lsof (4.86+dfsg-1) unstable; urgency=low [ Nicholas Bamber ] diff -Nru lsof-4.86+dfsg/debian/patches/preset-ccdate lsof-4.86+dfsg/debian/patches/preset-ccdate --- lsof-4.86+dfsg/debian/patches/preset-ccdate 1970-01-01 01:00:00.000000000 +0100 +++ lsof-4.86+dfsg/debian/patches/preset-ccdate 2014-09-22 11:35:59.000000000 +0200 @@ -0,0 +1,235 @@ +Description: Allow LSOF_CCDATE to be overriden by an environment variable + Capturing the current time as part of the build process does not make it + deterministic. By allowing the LSOF_CCDATE to be externally set, the current + time can be removed or preset. +Author: Jérémy Bobbio <lu...@debian.org> +Last-Update: 2014-09-22 + +--- lsof-4.86+dfsg.orig/dialects/aix/Makefile ++++ lsof-4.86+dfsg/dialects/aix/Makefile +@@ -84,7 +84,15 @@ version.h: FRC + @echo '#define LSOF_BLDCMT "${LSOF_BLDCMT}"' > version.h; + @echo '#define LSOF_CC "${CC}"' >> version.h + @echo '#define LSOF_CCV "${CCV}"' >> version.h +- @echo '#define LSOF_CCDATE "'`date`'"' >> version.h ++ @if [ "X${LSOF_CCDATE}" = "X" ]; then \ ++ echo '#define LSOF_CCDATE "'`date`'"' >> version.h; \ ++ else \ ++ if [ "${LSOF_CCDATE}" = "none" ]; then \ ++ echo '#define LSOF_CCDATE ""' >> version.h; \ ++ else \ ++ echo '#define LSOF_CCDATE "${LSOF_CCDATE}"' >> version.h; \ ++ fi \ ++ fi + @echo '#define LSOF_CCFLAGS "'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h + @echo '#define LSOF_CINFO "${CINFO}"' >> version.h + @if [ "X${LSOF_HOST}" = "X" ]; then \ +--- lsof-4.86+dfsg.orig/dialects/darwin/kmem/Makefile ++++ lsof-4.86+dfsg/dialects/darwin/kmem/Makefile +@@ -88,7 +88,15 @@ version.h: FRC + @echo '#define LSOF_BLDCMT "${LSOF_BLDCMT}"' > version.h; + @echo '#define LSOF_CC "${CC}"' >> version.h + @echo '#define LSOF_CCV "${CCV}"' >> version.h +- @echo '#define LSOF_CCDATE "'`date`'"' >> version.h ++ @if [ "X${LSOF_CCDATE}" = "X" ]; then \ ++ echo '#define LSOF_CCDATE "'`date`'"' >> version.h; \ ++ else \ ++ if [ "${LSOF_CCDATE}" = "none" ]; then \ ++ echo '#define LSOF_CCDATE ""' >> version.h; \ ++ else \ ++ echo '#define LSOF_CCDATE "${LSOF_CCDATE}"' >> version.h; \ ++ fi \ ++ fi + @echo '#define LSOF_CCFLAGS "'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h + @echo '#define LSOF_CINFO "${CINFO}"' >> version.h + @if [ "X${LSOF_HOST}" = "X" ]; then \ +--- lsof-4.86+dfsg.orig/dialects/darwin/libproc/Makefile ++++ lsof-4.86+dfsg/dialects/darwin/libproc/Makefile +@@ -92,7 +92,15 @@ version.h: FRC + @echo '#define LSOF_BLDCMT "${LSOF_BLDCMT}"' > version.h; + @echo '#define LSOF_CC "${CC}"' >> version.h + @echo '#define LSOF_CCV "${CCV}"' >> version.h +- @echo '#define LSOF_CCDATE "'`date`'"' >> version.h ++ @if [ "X${LSOF_CCDATE}" = "X" ]; then \ ++ echo '#define LSOF_CCDATE "'`date`'"' >> version.h; \ ++ else \ ++ if [ "${LSOF_CCDATE}" = "none" ]; then \ ++ echo '#define LSOF_CCDATE ""' >> version.h; \ ++ else \ ++ echo '#define LSOF_CCDATE "${LSOF_CCDATE}"' >> version.h; \ ++ fi \ ++ fi + @echo '#define LSOF_CCFLAGS "'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h + @echo '#define LSOF_CINFO "${CINFO}"' >> version.h + @if [ "X${LSOF_HOST}" = "X" ]; then \ +--- lsof-4.86+dfsg.orig/dialects/du/Makefile ++++ lsof-4.86+dfsg/dialects/du/Makefile +@@ -76,7 +76,15 @@ version.h: FRC + @echo '#define LSOF_BLDCMT "${LSOF_BLDCMT}"' > version.h; + @echo '#define LSOF_CC "${CC}"' >> version.h + @echo '#define LSOF_CCV "${CCV}"' >> version.h +- @echo '#define LSOF_CCDATE "'`date`'"' >> version.h ++ @if [ "X${LSOF_CCDATE}" = "X" ]; then \ ++ echo '#define LSOF_CCDATE "'`date`'"' >> version.h; \ ++ else \ ++ if [ "${LSOF_CCDATE}" = "none" ]; then \ ++ echo '#define LSOF_CCDATE ""' >> version.h; \ ++ else \ ++ echo '#define LSOF_CCDATE "${LSOF_CCDATE}"' >> version.h; \ ++ fi \ ++ fi + @echo '#define LSOF_CCFLAGS "'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h + @if [ "X${LSOF_HOST}" = "X" ]; then \ + echo '#define LSOF_HOST "'`uname -n`'"' >> version.h; \ +--- lsof-4.86+dfsg.orig/dialects/freebsd/Makefile ++++ lsof-4.86+dfsg/dialects/freebsd/Makefile +@@ -76,7 +76,15 @@ version.h: FRC + @echo '#define LSOF_BLDCMT "${LSOF_BLDCMT}"' > version.h; + @echo '#define LSOF_CC "${CC}"' >> version.h + @echo '#define LSOF_CCV "${CCV}"' >> version.h +- @echo '#define LSOF_CCDATE "'`date`'"' >> version.h ++ @if [ "X${LSOF_CCDATE}" = "X" ]; then \ ++ echo '#define LSOF_CCDATE "'`date`'"' >> version.h; \ ++ else \ ++ if [ "${LSOF_CCDATE}" = "none" ]; then \ ++ echo '#define LSOF_CCDATE ""' >> version.h; \ ++ else \ ++ echo '#define LSOF_CCDATE "${LSOF_CCDATE}"' >> version.h; \ ++ fi \ ++ fi + @echo '#define LSOF_CCFLAGS "'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h + @if [ "X${LSOF_HOST}" = "X" ]; then \ + echo '#define LSOF_HOST "'`uname -n`'"' >> version.h; \ +--- lsof-4.86+dfsg.orig/dialects/hpux/kmem/Makefile ++++ lsof-4.86+dfsg/dialects/hpux/kmem/Makefile +@@ -78,7 +78,15 @@ version.h: FRC + @echo '#define LSOF_BLDCMT "${LSOF_BLDCMT}"' > version.h; + @echo '#define LSOF_CC "${CC}"' >> version.h + @echo '#define LSOF_CCV "${CCV}"' >> version.h +- @echo '#define LSOF_CCDATE "'`date`'"' >> version.h ++ @if [ "X${LSOF_CCDATE}" = "X" ]; then \ ++ echo '#define LSOF_CCDATE "'`date`'"' >> version.h; \ ++ else \ ++ if [ "${LSOF_CCDATE}" = "none" ]; then \ ++ echo '#define LSOF_CCDATE ""' >> version.h; \ ++ else \ ++ echo '#define LSOF_CCDATE "${LSOF_CCDATE}"' >> version.h; \ ++ fi \ ++ fi + @echo '#define LSOF_CCFLAGS "'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h + @echo '#define LSOF_CINFO "${CINFO}"' >> version.h + @if [ "X${LSOF_HOST}" = "X" ]; then \ +--- lsof-4.86+dfsg.orig/dialects/hpux/pstat/Makefile ++++ lsof-4.86+dfsg/dialects/hpux/pstat/Makefile +@@ -75,7 +75,15 @@ version.h: FRC + @echo '#define LSOF_BLDCMT "${LSOF_BLDCMT}"' > version.h; + @echo '#define LSOF_CC "${CC}"' >> version.h + @echo '#define LSOF_CCV "${CCV}"' >> version.h +- @echo '#define LSOF_CCDATE "'`date`'"' >> version.h ++ @if [ "X${LSOF_CCDATE}" = "X" ]; then \ ++ echo '#define LSOF_CCDATE "'`date`'"' >> version.h; \ ++ else \ ++ if [ "${LSOF_CCDATE}" = "none" ]; then \ ++ echo '#define LSOF_CCDATE ""' >> version.h; \ ++ else \ ++ echo '#define LSOF_CCDATE "${LSOF_CCDATE}"' >> version.h; \ ++ fi \ ++ fi + @echo '#define LSOF_CCFLAGS "'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h + @echo '#define LSOF_CINFO "${CINFO}"' >> version.h + @if [ "X${LSOF_HOST}" = "X" ]; then \ +--- lsof-4.86+dfsg.orig/dialects/linux/Makefile ++++ lsof-4.86+dfsg/dialects/linux/Makefile +@@ -78,7 +78,15 @@ version.h: FRC + @echo '#define LSOF_BLDCMT "${LSOF_BLDCMT}"' > version.h; + @echo '#define LSOF_CC "${CC}"' >> version.h + @echo '#define LSOF_CCV "${CCV}"' >> version.h +- @echo '#define LSOF_CCDATE "'`date`'"' >> version.h ++ @if [ "X${LSOF_CCDATE}" = "X" ]; then \ ++ echo '#define LSOF_CCDATE "'`date`'"' >> version.h; \ ++ else \ ++ if [ "${LSOF_CCDATE}" = "none" ]; then \ ++ echo '#define LSOF_CCDATE ""' >> version.h; \ ++ else \ ++ echo '#define LSOF_CCDATE "${LSOF_CCDATE}"' >> version.h; \ ++ fi \ ++ fi + @echo '#define LSOF_CCFLAGS "'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h + @echo '#define LSOF_CINFO "${CINFO}"' >> version.h + @if [ "X${LSOF_HOST}" = "X" ]; then \ +--- lsof-4.86+dfsg.orig/dialects/n+obsd/Makefile ++++ lsof-4.86+dfsg/dialects/n+obsd/Makefile +@@ -81,7 +81,15 @@ version.h: FRC + @echo '#define LSOF_BLDCMT "${LSOF_BLDCMT}"' > version.h; + @echo '#define LSOF_CC "${CC}"' >> version.h + @echo '#define LSOF_CCV "${CCV}"' >> version.h +- @echo '#define LSOF_CCDATE "'`date`'"' >> version.h ++ @if [ "X${LSOF_CCDATE}" = "X" ]; then \ ++ echo '#define LSOF_CCDATE "'`date`'"' >> version.h; \ ++ else \ ++ if [ "${LSOF_CCDATE}" = "none" ]; then \ ++ echo '#define LSOF_CCDATE ""' >> version.h; \ ++ else \ ++ echo '#define LSOF_CCDATE "${LSOF_CCDATE}"' >> version.h; \ ++ fi \ ++ fi + @echo '#define LSOF_CCFLAGS "'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h + @if [ "X${LSOF_HOST}" = "X" ]; then \ + echo '#define LSOF_HOST "'`uname -n`'"' >> version.h; \ +--- lsof-4.86+dfsg.orig/dialects/n+os/Makefile ++++ lsof-4.86+dfsg/dialects/n+os/Makefile +@@ -87,7 +87,15 @@ version.h: FRC + @echo '#define LSOF_BLDCMT "${LSOF_BLDCMT}"' > version.h; + @echo '#define LSOF_CC "${CC}"' >> version.h + @echo '#define LSOF_CCV "${CCV}"' >> version.h +- @echo '#define LSOF_CCDATE "'`date`'"' >> version.h ++ @if [ "X${LSOF_CCDATE}" = "X" ]; then \ ++ echo '#define LSOF_CCDATE "'`date`'"' >> version.h; \ ++ else \ ++ if [ "${LSOF_CCDATE}" = "none" ]; then \ ++ echo '#define LSOF_CCDATE ""' >> version.h; \ ++ else \ ++ echo '#define LSOF_CCDATE "${LSOF_CCDATE}"' >> version.h; \ ++ fi \ ++ fi + @echo '#define LSOF_CCFLAGS "'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h + @echo '#define LSOF_LDFLAGS "${CFGL}"' >> version.h + @if [ "X${LSOF_LOGNAME}" = "X" ]; then \ +--- lsof-4.86+dfsg.orig/dialects/osr/Makefile ++++ lsof-4.86+dfsg/dialects/osr/Makefile +@@ -87,7 +87,15 @@ version.h: FRC + @echo '#define LSOF_BLDCMT "${LSOF_BLDCMT}"' > version.h; + @echo '#define LSOF_CC "${CC}"' >> version.h + @echo '#define LSOF_CCV "${CCV}"' >> version.h +- @echo '#define LSOF_CCDATE "'`date`'"' >> version.h ++ @if [ "X${LSOF_CCDATE}" = "X" ]; then \ ++ echo '#define LSOF_CCDATE "'`date`'"' >> version.h; \ ++ else \ ++ if [ "${LSOF_CCDATE}" = "none" ]; then \ ++ echo '#define LSOF_CCDATE ""' >> version.h; \ ++ else \ ++ echo '#define LSOF_CCDATE "${LSOF_CCDATE}"' >> version.h; \ ++ fi \ ++ fi + @echo '#define LSOF_CCFLAGS "'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h + @echo '#define LSOF_LDFLAGS "${CFGL}"' >> version.h + @if [ "X${LSOF_LOGNAME}" = "X" ]; then \ +--- lsof-4.86+dfsg.orig/dialects/sun/Makefile ++++ lsof-4.86+dfsg/dialects/sun/Makefile +@@ -75,7 +75,15 @@ version.h: FRC + @echo '#define LSOF_BLDCMT "${LSOF_BLDCMT}"' > version.h; + @echo '#define LSOF_CC "${CC}"' >> version.h + @echo '#define LSOF_CCV "${CCV}"' >> version.h +- @echo '#define LSOF_CCDATE "'`date`'"' >> version.h ++ @if [ "X${LSOF_CCDATE}" = "X" ]; then \ ++ echo '#define LSOF_CCDATE "'`date`'"' >> version.h; \ ++ else \ ++ if [ "${LSOF_CCDATE}" = "none" ]; then \ ++ echo '#define LSOF_CCDATE ""' >> version.h; \ ++ else \ ++ echo '#define LSOF_CCDATE "${LSOF_CCDATE}"' >> version.h; \ ++ fi \ ++ fi + @echo '#define LSOF_CCFLAGS "'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h + @echo '#define LSOF_CINFO "${CINFO}"' >> version.h + @if [ "X${LSOF_HOST}" = "X" ]; then \ diff -Nru lsof-4.86+dfsg/debian/patches/series lsof-4.86+dfsg/debian/patches/series --- lsof-4.86+dfsg/debian/patches/series 2012-04-20 20:58:54.000000000 +0200 +++ lsof-4.86+dfsg/debian/patches/series 2014-09-22 11:32:10.000000000 +0200 @@ -1,3 +1,4 @@ manpage examples tests +preset-ccdate diff -Nru lsof-4.86+dfsg/debian/rules lsof-4.86+dfsg/debian/rules --- lsof-4.86+dfsg/debian/rules 2012-04-25 08:14:09.000000000 +0200 +++ lsof-4.86+dfsg/debian/rules 2014-09-22 11:36:12.000000000 +0200 @@ -17,6 +17,14 @@ export LSOF_CFGF LSOF_CFGL := $(shell dpkg-buildflags --get LDFLAGS) export LSOF_CFGL +# prevent recording of details of the build environment to ensure build +# reproducibility +LSOF_CCDATE := none +LSOF_HOST := none +LSOF_LOGNAME := none +LSOF_SYSINFO := none +LSOF_USER := none +export LSOF_CCDATE LSOF_HOST LSOF_LOGNAME LSOF_SYSINFO LSOF_USER override_dh_auto_clean: dh_auto_clean
signature.asc
Description: Digital signature
_______________________________________________ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds