Source: funtools
Version: 1.4.6+git150811-2
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

While working on the "reproducible builds" effort [1], we have noticed
that 'funtools' could not be built reproducibly.

The attached patch fixes the order in which object files are passed to
mklib. Once applied, funtools can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds



diff -Nru funtools-1.4.6+git150811/debian/changelog funtools-1.4.6+git150811/debian/changelog
--- funtools-1.4.6+git150811/debian/changelog	2015-11-24 20:27:06.000000000 +0100
+++ funtools-1.4.6+git150811/debian/changelog	2016-06-21 17:40:22.000000000 +0200
@@ -1,3 +1,9 @@
+funtools (1.4.6+git150811-2.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Sort object files to pass to mklib, to make the build reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Tue, 21 Jun 2016 17:40:22 +0200
+
 funtools (1.4.6+git150811-2) unstable; urgency=low
 
   * Depend on libfuntools1 on libc6-dev, since this is needed for the
diff -Nru funtools-1.4.6+git150811/debian/patches/series funtools-1.4.6+git150811/debian/patches/series
--- funtools-1.4.6+git150811/debian/patches/series	2015-10-23 13:29:58.000000000 +0200
+++ funtools-1.4.6+git150811/debian/patches/series	2016-06-21 17:38:53.000000000 +0200
@@ -2,3 +2,4 @@
 use_shared_libwcstools.patch
 build_tclfun.patch
 multiarch.patch
+sort-object-files.patch
diff -Nru funtools-1.4.6+git150811/debian/patches/sort-object-files.patch funtools-1.4.6+git150811/debian/patches/sort-object-files.patch
--- funtools-1.4.6+git150811/debian/patches/sort-object-files.patch	1970-01-01 01:00:00.000000000 +0100
+++ funtools-1.4.6+git150811/debian/patches/sort-object-files.patch	2016-06-21 17:39:43.000000000 +0200
@@ -0,0 +1,33 @@
+Description: Sort object files
+ Sort object files to pass to mklib, to make the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- funtools-1.4.6+git150811.orig/Makefile.in
++++ funtools-1.4.6+git150811/Makefile.in
+@@ -233,7 +233,7 @@ shlib:		sublib $(LIBOBJS)
+ 		@(rm -rf $(PACKAGE)tmp; mkdir $(PACKAGE)tmp; \
+ 		(cd $(PACKAGE)tmp && ar x ../$(LIB)); \
+ 		CC='$(CC)' CXX=$(CXX) \
+-		./mklib -o $(PACKAGE) -ldl $(WCS_LIBS) -lm -lz $(PACKAGE)tmp/*.o; \
++		./mklib -o $(PACKAGE) -ldl $(WCS_LIBS) -lm -lz `LC_ALL=C ls $(PACKAGE)tmp/*.o`; \
+ 		rm -rf $(PACKAGE)tmp;)
+ 
+ mainlib:	$(MAINLIBOBJS) funmainlib.o lex.calc.o
+@@ -245,7 +245,7 @@ shmainlib:	mainlib
+ 		@(rm -rf $(PACKAGE)tmp; mkdir $(PACKAGE)tmp; \
+ 		(cd $(PACKAGE)tmp && ar x ../lib$(PACKAGE)MainLib.a); \
+ 		CC='$(CC)' CXX='$(CXX)' \
+-		./mklib -o $(PACKAGE)MainLib -L. -lfuntools $(PACKAGE)tmp/*.o;\
++		./mklib -o $(PACKAGE)MainLib -L. -lfuntools `LC_ALL=C ls $(PACKAGE)tmp/*.o`;\
+ 		rm -rf $(PACKAGE)tmp;)
+ 
+ tclfun:		$(LIB) tclmainlib.o tclfun.o
+@@ -256,7 +256,7 @@ shtclfun:	tclfun
+ 		@(rm -rf $(PACKAGE)tmp; mkdir $(PACKAGE)tmp; \
+ 		(cd $(PACKAGE)tmp && ar x ../libtclfun.a); \
+ 		CC='$(CC)' CXX='$(CXX)' \
+-		./mklib -o tclfun -L. -lfuntools $(PACKAGE)tmp/*.o $(TCL_LIBS); \
++		./mklib -o tclfun -L. -lfuntools `LC_ALL=C ls $(PACKAGE)tmp/*.o` $(TCL_LIBS); \
+ 		rm -rf $(PACKAGE)tmp; \
+ 		test -r pkgIndex.tcl && mv pkgIndex.tcl pkgIndex.tcl-old; \
+ 		SHLIB=libtclfun.so; \
_______________________________________________
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