Source: directfb
Version: 1.4.3-1.1
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: fileordering timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Hi!

While working on the "reproducible builds" effort [1], we have noticed
that directfb could not be built reproducibly.
It embeds the current build time into several binaries and does notsort
object files in static libraries.

The attached patch fixes this.

Regards,
 Reiner

[1]: https://wiki.debian.org/ReproducibleBuilds
diff --git a/debian/patches/reproducible_build.patch b/debian/patches/reproducible_build.patch
new file mode 100644
index 0000000..9d97fa5
--- /dev/null
+++ b/debian/patches/reproducible_build.patch
@@ -0,0 +1,83 @@
+Author: Reiner Herrmann <rei...@reiner-h.de>
+Description: Enable reproducible building
+ - Sort list of object files while linking
+ - Strip build time from binary
+
+--- a/lib/direct/Makefile.am
++++ b/lib/direct/Makefile.am
+@@ -116,7 +116,7 @@
+ 
+ libdirect_fixed.a: .libs/libdirect.a
+ 	rm -f libdirect_fixed.a
+-	${AR} cru libdirect_fixed.a `find . -name "*.o" | grep -v '.libs' | grep -v dtest`
++	${AR} cru libdirect_fixed.a `find . -name "*.o" | grep -v '.libs' | grep -v dtest | LC_ALL=C sort`
+ 	${RANLIB} libdirect_fixed.a
+ 	cp -pf libdirect_fixed.a .libs/libdirect.a
+ 
+--- a/src/core/Makefile.am
++++ b/src/core/Makefile.am
+@@ -10,8 +10,7 @@
+ AM_CPPFLAGS = \
+ 	-DDATADIR=\"${RUNTIME_SYSROOT}@DATADIR@\"		\
+ 	-DSOPATH=\"@SOPATH@\"		\
+-	-DMODULEDIR=\"${RUNTIME_SYSROOT}@MODULEDIR@\"	\
+-	"-DBUILDTIME=\"`date -u "+%Y-%m-%d %H:%M"`\""
++	-DMODULEDIR=\"${RUNTIME_SYSROOT}@MODULEDIR@\"
+ 
+ 
+ internalincludedir = $(INTERNALINCLUDEDIR)/core
+--- a/src/core/core.c
++++ b/src/core/core.c
+@@ -275,7 +275,7 @@
+      direct_initialize();
+ 
+ 
+-     D_INFO( "DirectFB/Core: %s Application Core. ("BUILDTIME") %s%s\n",
++     D_INFO( "DirectFB/Core: %s Application Core. %s%s\n",
+              FUSION_BUILD_MULTI ? "Multi" : "Single",
+              DIRECT_BUILD_DEBUG ? "[ DEBUG ]" : "",
+              DIRECT_BUILD_TRACE ? "[ TRACE ]" : "" );
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -55,7 +55,7 @@
+ 
+ libdirectfb_fixed.a: .libs/libdirectfb.a
+ 	rm -f libdirectfb_fixed.a
+-	${AR} cru libdirectfb_fixed.a `find . -name "*.o" | grep -v '.libs'`
++	${AR} cru libdirectfb_fixed.a `find . -name "*.o" | grep -v '.libs' | LC_ALL=C sort`
+ 	${RANLIB} libdirectfb_fixed.a
+ 	cp -pf libdirectfb_fixed.a .libs/libdirectfb.a
+ 
+--- a/lib/fusion/Makefile.am
++++ b/lib/fusion/Makefile.am
+@@ -82,7 +82,7 @@
+ 
+ libfusion_fixed.a: .libs/libfusion.a
+ 	rm -f libfusion_fixed.a
+-	${AR} cru libfusion_fixed.a `find . -name "*.o" | grep -v '.libs'`
++	${AR} cru libfusion_fixed.a `find . -name "*.o" | grep -v '.libs' | LC_ALL=C sort`
+ 	${RANLIB} libfusion_fixed.a
+ 	cp -pf libfusion_fixed.a .libs/libfusion.a
+ 
+--- a/lib/voodoo/Makefile.am
++++ b/lib/voodoo/Makefile.am
+@@ -62,7 +62,7 @@
+ 
+ libvoodoo_fixed.a: .libs/libvoodoo.a
+ 	rm -f libvoodoo_fixed.a
+-	${AR} cru libvoodoo_fixed.a `find . -name "*.o"`
++	${AR} cru libvoodoo_fixed.a `find . -name "*.o" | LC_ALL=C sort`
+ 	${RANLIB} libvoodoo_fixed.a
+ 	cp -pf libvoodoo_fixed.a .libs/libvoodoo.a
+ 
+--- a/wm/unique/Makefile.am
++++ b/wm/unique/Makefile.am
+@@ -135,7 +135,7 @@
+ 
+ libuniquewm_fixed.a: .libs/libuniquewm.a
+ 	rm -f libuniquewm_fixed.a
+-	${AR} cru libuniquewm_fixed.a `find . -name "*.o" | grep -v '.libs'`
++	${AR} cru libuniquewm_fixed.a `find . -name "*.o" | grep -v '.libs' | LC_ALL=C sort`
+ 	${RANLIB} libuniquewm_fixed.a
+ 	cp -pf libuniquewm_fixed.a .libs/libuniquewm.a
+ 
diff --git a/debian/patches/series b/debian/patches/series
index 36f3991..6f8f0ec 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -6,3 +6,4 @@
 93_fix_unicode_key_handling.patch
 94_fix_mknod.patch
 directfb-1.2.10_libpng-1.5.patch
+reproducible_build.patch
_______________________________________________
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

Reply via email to