Hello, Jérémy Bobbio <lu...@debian.org> proposed a patch to the Debian maintainer of socat to fix a compilation problem [1]. He commented:
As part of the “reproducible builds” effort, we have discovered that socat is using the __DATE__ and __TIME__ C pre-processor macro to record the time of the build. This prevent socat build to be reproducible. The attached patch will instead set the value of the "timestamp" variable to the date of the latest debian/changelog entry. In order to do so, it will patch the build system to allow the build timestamp to be externally set through the BUILD_DATE variable. Once applied, socat can be built reproducibly. Maybe can you integrate it, please? [1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=764251 Regards, -- Stéphane Aulery
diff -Nru socat-1.7.2.4/debian/changelog socat-1.7.2.4/debian/changelog --- socat-1.7.2.4/debian/changelog 2014-06-24 21:20:21.000000000 +0200 +++ socat-1.7.2.4/debian/changelog 2014-10-06 17:56:32.000000000 +0200 @@ -1,3 +1,10 @@ +socat (1.7.2.4-1.0~reproducible1) UNRELEASED; urgency=medium + + * Patch build system to allow the build date to be set externally, + and set it to the latest debian/changelog entry for reproducibility. + + -- Jrmy Bobbio <lu...@debian.org> Mon, 06 Oct 2014 17:55:47 +0200 + socat (1.7.2.4-1) unstable; urgency=low * New upstream release, update patches. diff -Nru socat-1.7.2.4/debian/control socat-1.7.2.4/debian/control --- socat-1.7.2.4/debian/control 2014-06-24 19:15:04.000000000 +0200 +++ socat-1.7.2.4/debian/control 2014-10-06 17:51:02.000000000 +0200 @@ -3,7 +3,7 @@ Priority: extra Maintainer: Laszlo Boszormenyi (GCS) <g...@debian.org> Homepage: http://www.dest-unreach.org/socat/ -Build-Depends: debhelper (>= 9), libssl-dev, libwrap0-dev +Build-Depends: debhelper (>= 9), dh-autoreconf, libssl-dev, libwrap0-dev Standards-Version: 3.9.5 Package: socat diff -Nru socat-1.7.2.4/debian/patches/04-Set-build-date socat-1.7.2.4/debian/patches/04-Set-build-date --- socat-1.7.2.4/debian/patches/04-Set-build-date 1970-01-01 01:00:00.000000000 +0100 +++ socat-1.7.2.4/debian/patches/04-Set-build-date 2014-10-06 18:55:35.000000000 +0200 @@ -0,0 +1,41 @@ +Description: allow time of the build to be set externally + When running the configure script, the time of the build + will be set to the environment variable BUILD_DATE if the + latr is set. This is needed to make builds reproducible. +Author: Jrmy Bobbio <lu...@debian.org> +Last-Update: 2014-10-06 + +--- socat-1.7.2.4.orig/configure.in ++++ socat-1.7.2.4/configure.in +@@ -1844,4 +1844,11 @@ if test -n "$WITH_FIPS"; then + fi + AC_SUBST(FIPSLD_CC) + ++# allow BUILD_DATE to be externally set for build reproducibility ++if test "$BUILD_DATE"; then ++ AC_DEFINE_UNQUOTED(BUILD_DATE, ["$BUILD_DATE"]) ++else ++ AC_DEFINE(BUILD_DATE, [__DATE__" "__TIME__]) ++fi ++ + AC_OUTPUT(Makefile) +--- socat-1.7.2.4.orig/socat.c ++++ socat-1.7.2.4/socat.c +@@ -70,7 +70,7 @@ static int socat_newchild(void); + static const char socatversion[] = + #include "./VERSION" + ; +-static const char timestamp[] = __DATE__" "__TIME__; ++static const char timestamp[] = BUILD_DATE; + + const char copyright_socat[] = "socat by Gerhard Rieger - see www.dest-unreach.org"; + #if WITH_OPENSSL +--- socat-1.7.2.4.orig/config.h.in ++++ socat-1.7.2.4/config.h.in +@@ -550,4 +550,6 @@ + + #undef WITH_MSGLEVEL + ++#define BUILD_DATE __DATE__ " " __TIME__ ++ + #endif /* !defined(__config_h_included) */ diff -Nru socat-1.7.2.4/debian/patches/series socat-1.7.2.4/debian/patches/series --- socat-1.7.2.4/debian/patches/series 2014-06-24 21:11:46.000000000 +0200 +++ socat-1.7.2.4/debian/patches/series 2014-10-06 18:55:59.000000000 +0200 @@ -2,3 +2,4 @@ 01-Index 02-Manpage-slashes 03-Truncate +04-Set-build-date diff -Nru socat-1.7.2.4/debian/rules socat-1.7.2.4/debian/rules --- socat-1.7.2.4/debian/rules 2013-07-03 20:12:23.000000000 +0200 +++ socat-1.7.2.4/debian/rules 2014-10-06 18:47:18.000000000 +0200 @@ -1,7 +1,12 @@ #!/usr/bin/make -f +export BUILD_DATE = $(shell LC_ALL=C date -u --date="`dpkg-parsechangelog -SDate`" +'%b %e %Y %H:%M:%S') + +# upsteram maintains config.h.in manually +export AUTOHEADER = true + %: - dh $@ + dh $@ --with=autoreconf override_dh_auto_configure: dh_auto_configure -- --disable-readline