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

Reply via email to