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