Source: gspiceui
Version: 1.1.00+dfsg-1
Severity: wishlist
Tags: patch upstream
User: reproducible-bui...@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Dear Maintainer,

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

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

Regards,
Alexis Bienvenüe.

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

diff -Nru gspiceui-1.1.00+dfsg/debian/changelog gspiceui-1.1.00+dfsg/debian/changelog
--- gspiceui-1.1.00+dfsg/debian/changelog	2015-05-21 22:10:58.000000000 +0200
+++ gspiceui-1.1.00+dfsg/debian/changelog	2016-04-30 21:26:42.000000000 +0200
@@ -1,3 +1,9 @@
+gspiceui (1.1.00+dfsg-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Reproducible build
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Sat, 30 Apr 2016 21:26:42 +0200
+
 gspiceui (1.1.00+dfsg-1) unstable; urgency=medium
 
   * New release version
diff -Nru gspiceui-1.1.00+dfsg/debian/patches/06_sort_object_files.patch gspiceui-1.1.00+dfsg/debian/patches/06_sort_object_files.patch
--- gspiceui-1.1.00+dfsg/debian/patches/06_sort_object_files.patch	1970-01-01 01:00:00.000000000 +0100
+++ gspiceui-1.1.00+dfsg/debian/patches/06_sort_object_files.patch	2016-04-30 21:37:15.000000000 +0200
@@ -0,0 +1,26 @@
+Description: Sort object files
+ Sort *.o files when merging, to get reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: gspiceui-1.1.00+dfsg/src/Makefile
+===================================================================
+--- gspiceui-1.1.00+dfsg.orig/src/Makefile
++++ gspiceui-1.1.00+dfsg/src/Makefile
+@@ -93,7 +93,7 @@ LIBS := $(shell $(WXCFG) --libs core,bas
+ OBJS := $(wildcard *.cpp) $(wildcard */*.cpp) $(wildcard */*/*.cpp)
+ OBJS := $(filter-out tests/%.cpp, $(OBJS))
+ OBJS := $(notdir $(OBJS))
+-OBJS := $(patsubst %.cpp, obj/%.o, $(OBJS))
++OBJS := $(sort $(patsubst %.cpp, obj/%.o, $(OBJS)))
+ 
+ # Specify list of directories that `make' should search for prerequisite files
+ VPATH = $(BINDIR)
+@@ -134,7 +134,7 @@ obj/%.o : %.cpp
+ #   -o     specify the output file name
+ 
+ $(BINDIR)/$(PROG) : $(OBJS)
+-	$(CXX) -pipe $(LDFLAGS) -o $(BINDIR)/$(PROG) obj/*.o $(LIBS)
++	$(CXX) -pipe $(LDFLAGS) -o $(BINDIR)/$(PROG) $(OBJS) $(LIBS)
+ ifeq ($(ROOT)/GSpiceUI.app,$(wildcard $(ROOT)/GSpiceUI.app))
+ 	cp $(BINDIR)/$(PROG) $(ROOT)/GSpiceUI.app/Contents/MacOS/gspiceui
+ endif
diff -Nru gspiceui-1.1.00+dfsg/debian/patches/series gspiceui-1.1.00+dfsg/debian/patches/series
--- gspiceui-1.1.00+dfsg/debian/patches/series	2015-05-21 18:50:22.000000000 +0200
+++ gspiceui-1.1.00+dfsg/debian/patches/series	2016-04-30 21:25:08.000000000 +0200
@@ -3,3 +3,4 @@
 03_manpage.patch
 04_gwave.patch
 05_manual_path.patch
+06_sort_object_files.patch

Reply via email to