[grass] 01/01: Add patches by Alexis Bienvenüe to make the build reproducible.

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Mon May 23 22:19:02 UTC 2016


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository grass.

commit 1f46a6228043172042ccce8ea09abba3a76e45c7
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Mon May 23 23:40:49 2016 +0200

    Add patches by Alexis Bienvenüe to make the build reproducible.
---
 debian/changelog                                   |  7 +++
 debian/patches/binary-nad-install.patch            | 17 ++++++
 debian/patches/series                              |  5 ++
 debian/patches/sort-build-modules-list.patch       | 17 ++++++
 debian/patches/sort-dbmscap.patch                  | 65 ++++++++++++++++++++++
 debian/patches/sort-obj-files.patch                | 23 ++++++++
 .../srand48_auto-from-SOURCE_DATE_EPOCH.patch      | 33 +++++++++++
 7 files changed, 167 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 0501996..59913a4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+grass (7.0.4-2) UNRELEASED; urgency=medium
+
+  * Add patches by Alexis Bienvenüe to make the build reproducible.
+    (closes: #825092)
+
+ -- Bas Couwenberg <sebastic at debian.org>  Mon, 23 May 2016 23:38:48 +0200
+
 grass (7.0.4-1) unstable; urgency=medium
 
   * New upstream release.
diff --git a/debian/patches/binary-nad-install.patch b/debian/patches/binary-nad-install.patch
new file mode 100644
index 0000000..d3fe786
--- /dev/null
+++ b/debian/patches/binary-nad-install.patch
@@ -0,0 +1,17 @@
+Description: Binary NAD files install
+ Corrects binary NAD files install rule.
+Author: Alexis Bienvenüe <pado at passoire.fr>
+Bug-Debian: https://bugs.debian.org/825092
+Forwarded: https://trac.osgeo.org/grass/ticket/3042
+
+--- a/lib/proj/Makefile
++++ b/lib/proj/Makefile
+@@ -43,7 +43,7 @@ $(FTOL_OBJ): $(OBJDIR)/ftol.o
+ 	$(INSTALL) $< $@
+ endif
+ 
+-$(NAD_DSTFILES): $(NAD_DIR)/%: $(NAD_BINFILES) | $(NAD_DIR)
++$(NAD_DSTFILES): $(NAD_DIR)/%: $(OBJDIR)/% | $(NAD_DIR)
+ 	$(INSTALL_DATA) $< $@
+ 
+ $(NAD_BINFILES): $(OBJDIR)/%: %.lla
diff --git a/debian/patches/series b/debian/patches/series
index 70fc821..9a5fa37 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -3,3 +3,8 @@ instdir
 no-fail-html.patch
 appstream.patch
 spelling-errors.patch
+sort-build-modules-list.patch
+sort-dbmscap.patch
+sort-obj-files.patch
+srand48_auto-from-SOURCE_DATE_EPOCH.patch
+binary-nad-install.patch
diff --git a/debian/patches/sort-build-modules-list.patch b/debian/patches/sort-build-modules-list.patch
new file mode 100644
index 0000000..6f506c9
--- /dev/null
+++ b/debian/patches/sort-build-modules-list.patch
@@ -0,0 +1,17 @@
+Description: Sort build modules list
+ Sort modules in module_items.xml, to make the build reproducible.
+Author: Alexis Bienvenüe <pado at passoire.fr>
+Bug-Debian: https://bugs.debian.org/825092
+Forwarded: https://trac.osgeo.org/grass/ticket/3042
+
+--- a/gui/wxpython/tools/build_modules_xml.py
++++ b/gui/wxpython/tools/build_modules_xml.py
+@@ -51,7 +51,7 @@ def parse_modules(fd):
+     # TODO: what about ms windows? does gtask handle this? 
+     mlist = list(gcore.get_commands()[0])
+     indent = 4
+-    for m in mlist:
++    for m in sorted(mlist):
+         # TODO: get rid of g.mapsets_picker.py
+         if m == 'g.mapsets_picker.py' or m == 'g.parser':
+             continue
diff --git a/debian/patches/sort-dbmscap.patch b/debian/patches/sort-dbmscap.patch
new file mode 100644
index 0000000..9b7cabc
--- /dev/null
+++ b/debian/patches/sort-dbmscap.patch
@@ -0,0 +1,65 @@
+Description: Sort dbmscap list
+ To get reproducible results.
+Author: Alexis Bienvenüe <pado at passoire.fr>
+Bug-Debian: https://bugs.debian.org/825092
+Forwarded: https://trac.osgeo.org/grass/ticket/3042
+
+--- a/lib/db/dbmi_base/dbmscap.c
++++ b/lib/db/dbmi_base/dbmscap.c
+@@ -209,19 +209,22 @@ dbDbmscap *db_read_dbmscap(void)
+     return list;
+ }
+ 
++static int cmp_entry(dbDbmscap *a, dbDbmscap *b) {
++  return( a->driverName && b->driverName ? strcmp(a->driverName,b->driverName) : 0 );
++}
++
+ static void add_entry(dbDbmscap ** list, char *name, char *startup, char *comment)
+ {
+-    dbDbmscap *head, *cur, *tail;
++    /* add an entry to the list, so that the list remains ordered (by driverName) */
+ 
+-    /* add this entry to the head of a linked list */
+-    tail = head = *list;
+-    while (tail && tail->next)
+-	tail = tail->next;
+-    *list = NULL;
++    dbDbmscap *head, *cur, *tail;
+ 
+     cur = (dbDbmscap *) db_malloc(sizeof(dbDbmscap));
+-    if (cur == NULL)
+-	return;			/* out of memory */
++    if (cur == NULL) {
++        *list = NULL;
++	return;
++        /* out of memory */
++    }
+     cur->next = NULL;
+ 
+     /* copy each item to the dbmscap structure */
+@@ -229,11 +232,21 @@ static void add_entry(dbDbmscap ** list,
+     strcpy(cur->startup, startup);
+     strcpy(cur->comment, comment);
+ 
++    /* find the last entry that is less than cur */
++    tail = head = *list;
++    while (tail && tail->next && cmp_entry(tail->next,cur)<0)
++	tail = tail->next;
++
+     /* handle the first call (head == NULL) */
+-    if (tail)
+-	tail->next = cur;
+-    else
+-	head = cur;
++    if (tail && cmp_entry(tail,cur)<0) {
++        /* insert right after tail */
++        cur->next = tail->next;
++        tail->next = cur;
++    } else {
++        /* insert at first position */
++        cur->next = head;
++        head = cur;
++    }
+ 
+     *list = head;
+ }
diff --git a/debian/patches/sort-obj-files.patch b/debian/patches/sort-obj-files.patch
new file mode 100644
index 0000000..a7f19fa
--- /dev/null
+++ b/debian/patches/sort-obj-files.patch
@@ -0,0 +1,23 @@
+Description: Sort object files
+ to make the build reproducible.
+Author: Alexis Bienvenüe <pado at passoire.fr>
+Bug-Debian: https://bugs.debian.org/825092
+Forwarded: https://trac.osgeo.org/grass/ticket/3042
+
+--- a/include/Make/Vars.make
++++ b/include/Make/Vars.make
+@@ -13,10 +13,10 @@ LEX_SOURCES  := $(wildcard *.l)
+ YACC_SOURCES := $(wildcard *.y)
+ 
+ AUTO_OBJS := \
+-	$(subst .c,.o,$(C_SOURCES)) \
+-	$(subst .cpp,.o,$(CPP_SOURCES)) \
+-	$(subst .l,.yy.o,$(LEX_SOURCES)) \
+-	$(subst .y,.tab.o,$(YACC_SOURCES))
++	$(sort $(subst .c,.o,$(C_SOURCES))) \
++	$(sort $(subst .cpp,.o,$(CPP_SOURCES))) \
++	$(sort $(subst .l,.yy.o,$(LEX_SOURCES))) \
++	$(sort $(subst .y,.tab.o,$(YACC_SOURCES)))
+ 
+ ifndef MOD_OBJS
+ MOD_OBJS = $(AUTO_OBJS)
diff --git a/debian/patches/srand48_auto-from-SOURCE_DATE_EPOCH.patch b/debian/patches/srand48_auto-from-SOURCE_DATE_EPOCH.patch
new file mode 100644
index 0000000..7ab28dc
--- /dev/null
+++ b/debian/patches/srand48_auto-from-SOURCE_DATE_EPOCH.patch
@@ -0,0 +1,33 @@
+Description: Make srand48_auto use SOURCE_DATE_EPOCH if set
+ If SOURCE_DATE_EPOCH is set, use it to seed the random generator when
+ G_srand48_auto is called. This helps makeing the build reproducible
+ (html/random.png)
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <pado at passoire.fr>
+Bug-Debian: https://bugs.debian.org/825092
+Forwarded: https://trac.osgeo.org/grass/ticket/3042
+
+--- a/lib/gis/lrand48.c
++++ b/lib/gis/lrand48.c
+@@ -70,7 +70,12 @@ void G_srand48(long seedval)
+ 
+ long G_srand48_auto(void)
+ {
+-    unsigned long seed = (unsigned long) getpid();
++    unsigned long seed;
++    char *source_date_epoch = getenv("SOURCE_DATE_EPOCH");
++    if(source_date_epoch) {
++        seed = strtoull(source_date_epoch, NULL, 10);
++    } else {  
++        seed = (unsigned long) getpid();
+ 
+ #ifdef HAVE_GETTIMEOFDAY
+     {
+@@ -86,6 +91,7 @@ long G_srand48_auto(void)
+ 	seed += (unsigned long) t;
+     }
+ #endif
++    }
+ 
+     G_srand48((long) seed);
+     return (long) seed;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/grass.git



More information about the Pkg-grass-devel mailing list