Source: stk
Version: 4.5.0-3
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 'stk' could not be built reproducibly.

The attached patch fixes the order in which *.o files are merged. Once
applied, stk can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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



diff -Nru stk-4.5.0/debian/changelog stk-4.5.0/debian/changelog
--- stk-4.5.0/debian/changelog	2015-12-11 02:39:07.000000000 +0100
+++ stk-4.5.0/debian/changelog	2016-04-25 14:30:42.000000000 +0200
@@ -1,3 +1,9 @@
+stk (4.5.0-3.0~reproducible1) unstable; urgency=medium
+
+  * Sort *.o files when building shared lib, to get reproducible build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 25 Apr 2016 14:30:42 +0200
+
 stk (4.5.0-3) unstable; urgency=medium
 
   * Use autotools_dev again to get up-to-date config.{sub,guess}
diff -Nru stk-4.5.0/debian/patches/0007-Sort-o-files stk-4.5.0/debian/patches/0007-Sort-o-files
--- stk-4.5.0/debian/patches/0007-Sort-o-files	1970-01-01 01:00:00.000000000 +0100
+++ stk-4.5.0/debian/patches/0007-Sort-o-files	2016-04-25 14:59:52.000000000 +0200
@@ -0,0 +1,83 @@
+Description: Sort *.o files
+ Fix the order in which *.o files are merged to build the shared lib,
+ to get reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: stk-4.5.0/src/Makefile.in
+===================================================================
+--- stk-4.5.0.orig/src/Makefile.in
++++ stk-4.5.0/src/Makefile.in
+@@ -90,7 +90,7 @@ $(STATICLIB) : $(OBJECTS)
+ 
+ $(SHAREDLIB) : $(OBJECTS)
+ 	$(RM) -f $(@) $(SHAREDLIB).$(MAJOR) $(SHAREDLIB)
+-	$(CC) $(LDFLAGS) -fPIC @libflags@ $(OBJECT_PATH)/*.o $(LIBS)
++	$(CC) $(LDFLAGS) -fPIC @libflags@ `LC_ALL=C ls $(OBJECT_PATH)/*.o` $(LIBS)
+ 	$(LN) -s @sharedname@ $(SHAREDLIB)
+ 
+ install-headers:
+Index: stk-4.5.0/projects/demo/Makefile.in
+===================================================================
+--- stk-4.5.0.orig/projects/demo/Makefile.in
++++ stk-4.5.0/projects/demo/Makefile.in
+@@ -63,7 +63,7 @@ $(OBJECT_PATH)/.placeholder:
+ 	touch $(OBJECT_PATH)/.placeholder
+ 
+ stk-demo: demo.cpp $(OBJECTS)
+-	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o stk-demo demo.cpp $(OBJECT_PATH)/*.o $(LIBRARY)
++	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o stk-demo demo.cpp `LC_ALL=C ls $(OBJECT_PATH)/*.o` $(LIBRARY)
+ 
+ libdemo: demo.cpp
+ 	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o demo utilities.cpp demo.cpp -L../../src -lstk $(LIBRARY)
+Index: stk-4.5.0/projects/effects/Makefile.in
+===================================================================
+--- stk-4.5.0.orig/projects/effects/Makefile.in
++++ stk-4.5.0/projects/effects/Makefile.in
+@@ -52,7 +52,7 @@ $(OBJECT_PATH)/.placeholder:
+ 	touch $(OBJECT_PATH)/.placeholder
+ 
+ effects: effects.cpp $(OBJECTS)
+-	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o effects effects.cpp $(OBJECT_PATH)/*.o $(LIBRARY)
++	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o effects effects.cpp `LC_ALL=C ls $(OBJECT_PATH)/*.o` $(LIBRARY)
+ 
+ libeffects: effects.cpp
+ 	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o effects effects.cpp -L../../src -lstk $(LIBRARY)
+Index: stk-4.5.0/projects/eguitar/Makefile.in
+===================================================================
+--- stk-4.5.0.orig/projects/eguitar/Makefile.in
++++ stk-4.5.0/projects/eguitar/Makefile.in
+@@ -52,7 +52,7 @@ $(OBJECT_PATH)/.placeholder:
+ 	touch $(OBJECT_PATH)/.placeholder
+ 
+ eguitar: eguitar.cpp $(OBJECTS)
+-	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o eguitar eguitar.cpp $(OBJECT_PATH)/*.o $(LIBRARY)
++	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o eguitar eguitar.cpp `LC_ALL=C ls $(OBJECT_PATH)/*.o` $(LIBRARY)
+ 
+ libeguitar: eguitar.cpp
+ 	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o eguitar utilities.cpp eguitar.cpp -L../../src -lstk $(LIBRARY)
+Index: stk-4.5.0/projects/examples/Makefile.in
+===================================================================
+--- stk-4.5.0.orig/projects/examples/Makefile.in
++++ stk-4.5.0/projects/examples/Makefile.in
+@@ -57,7 +57,7 @@ strip :
+ 	strip $(PROGRAMS)
+ 
+ audioprobe: @objects@
+-	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o audioprobe audioprobe.cpp $(OBJECT_PATH)/*.o $(LIBRARY) -lrtaudio
++	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o audioprobe audioprobe.cpp `LC_ALL=C ls $(OBJECT_PATH)/*.o` $(LIBRARY) -lrtaudio
+ 
+ midiprobe:
+ 	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o midiprobe midiprobe.cpp $(LIBRARY) -lrtmidi
+Index: stk-4.5.0/projects/ragamatic/Makefile.in
+===================================================================
+--- stk-4.5.0.orig/projects/ragamatic/Makefile.in
++++ stk-4.5.0/projects/ragamatic/Makefile.in
+@@ -53,7 +53,7 @@ $(OBJECT_PATH)/.placeholder:
+ 	touch $(OBJECT_PATH)/.placeholder
+ 
+ ragamat: ragamat.cpp $(OBJECTS)
+-	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o ragamat ragamat.cpp $(OBJECT_PATH)/*.o $(LIBRARY)
++	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o ragamat ragamat.cpp `LC_ALL=C ls $(OBJECT_PATH)/*.o` $(LIBRARY)
+ 
+ libragamat: ragamat.cpp Tabla.cpp Drone.cpp VoicDrum.cpp
+ 	$(CC) $(LDFLAGS) $(CFLAGS) $(DEFS) -o ragamat Tabla.cpp Drone.cpp VoicDrum.cpp ragamat.cpp -L../../src -lstk $(LIBRARY)
diff -Nru stk-4.5.0/debian/patches/series stk-4.5.0/debian/patches/series
--- stk-4.5.0/debian/patches/series	2015-12-11 02:39:07.000000000 +0100
+++ stk-4.5.0/debian/patches/series	2016-04-25 15:01:02.000000000 +0200
@@ -4,3 +4,4 @@
 0004-File-endian.h-is-not-on-machine-subdir.patch
 0005-Fix-install-target-for-new-soname-scheme.patch
 0006-Install-missing-include-files-SKINI.msg-and-SKINI.tb.patch
+0007-Sort-o-files
_______________________________________________
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