[Reproducible-builds] Bug#828627: uim: please make the build reproducible (locale)

2016-06-26 Thread Alexis Bienvenüe
Source: uim
Version: 1:1.8.6+gh20160621.0.87bf935-1
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: locale
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch sets the locale used to sort using LC_ALL instead of
LANG (that is overwrote by LC_ALL), so that the order is fixed even if
LC_ALL is set.
Once applied, uim can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
Description: Use LC_ALL instead of LANG
 bacause LC_ALL overwrites LANG. This makes the build reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

--- uim-1.8.6+gh20160621.0.87bf935.orig/tables/Makefile.am
+++ uim-1.8.6+gh20160621.0.87bf935/tables/Makefile.am
@@ -32,7 +32,7 @@ zm.scm: $(top_srcdir)/scm/zm.scm
 	$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/replace && \
 	$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/uim sigscheme-combined && \
 	$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/uim uim-sh && \
-	echo "(begin (load \"$<\") (for-each (lambda (key) (display (format \"~a ~W\n\" (apply string-append (caar key)) (cadr key `basename $< .scm`-rule))" | $(UIM_SH_ENV) $(UIM_SH) -b | grep -v "^#" | LANG=C sort > $@
+	echo "(begin (load \"$<\") (for-each (lambda (key) (display (format \"~a ~W\n\" (apply string-append (caar key)) (cadr key `basename $< .scm`-rule))" | $(UIM_SH_ENV) $(UIM_SH) -b | grep -v "^#" | LC_ALL=C sort > $@
 #endif
 
 clean-genscm:
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#827864: funtools: please make the build reproducible (fileordering)

2016-06-21 Thread Alexis Bienvenüe
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.0 +0100
+++ funtools-1.4.6+git150811/debian/changelog	2016-06-21 17:40:22.0 +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.0 +0200
+++ funtools-1.4.6+git150811/debian/patches/series	2016-06-21 17:38:53.0 +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.0 +0100
+++ funtools-1.4.6+git150811/debian/patches/sort-object-files.patch	2016-06-21 17:39:43.0 +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

[Reproducible-builds] Bug#827731: tin: please make the build reproducible (locale)

2016-06-20 Thread Alexis Bienvenüe
Source: tin
Version: 1:2.3.2-1
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: locale
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

While working on the `€œreproducible builds'€ effort [1], we have noticed
that 'tin' could not be built reproducibly.

Since LC_ALL overwrites the LC_TIME value, the cpp_reprtime script
output is locale-dependent. This could be fixed adding a LC_ALL=C
definition, but as gcc now supports the SOURCE_DATE_EPOCH environment
variable [2] to set the __DATE__ value, I think the best option is to
drop cpp_reprtime -- see attached patch.

Once applied, tin can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/



diff -Nru tin-2.3.2/debian/changelog tin-2.3.2/debian/changelog
--- tin-2.3.2/debian/changelog	2015-12-27 15:43:34.0 +0100
+++ tin-2.3.2/debian/changelog	2016-06-20 12:18:59.0 +0200
@@ -1,3 +1,9 @@
+tin (1:2.3.2-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * drop debian/cpp_reprtime, since gcc has SOURCE_DATE_EPOCH support now.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 20 Jun 2016 12:18:59 +0200
+
 tin (1:2.3.2-1) unstable; urgency=medium
 
   * New upstream release.
diff -Nru tin-2.3.2/debian/cpp_reprtime tin-2.3.2/debian/cpp_reprtime
--- tin-2.3.2/debian/cpp_reprtime	2015-12-27 06:16:18.0 +0100
+++ tin-2.3.2/debian/cpp_reprtime	1970-01-01 01:00:00.0 +0100
@@ -1,40 +0,0 @@
-#!/bin/sh
-set -e
-
-FILE="$1"
-if [ -z "$FILE" ]; then
-  echo "Usage: $0 FILENAME" >&2
-  echo "\nThe reproducible definitions of the C time macros will be written to FILENAME\nand options for \$CPPFLAGS will be printed on standard output."
-  exit 1
-fi
-
-CHANGELOG_DATE=$(dpkg-parsechangelog --show-field Date)
-
-if [ -z "$CHANGELOG_DATE" ]; then
-  echo "dpkg-parsechangelog is unable to parse the changelog date!" >&2
-  exit 1
-fi
-
-export LC_CTIME='C'
-export TZ='UTC'
-
-cat < $FILE
-/* Reproducible timestamp macros generated by $0. */
-#ifdef __TIME__
-# undef __TIME__
-#endif
-#define __TIME__ "$(date --date="$CHANGELOG_DATE" "+%T")"
-
-#ifdef __DATE__
-# undef __DATE__
-#endif
-#define __DATE__ "$(date --date="$CHANGELOG_DATE" "+%b %e %Y")"
-
-#ifdef __TIMESTAMP__
-# undef __TIMESTAMP__
-#endif
-#define __TIMESTAMP__ "$(date --date="$CHANGELOG_DATE" "+%a %b %e %T %Y")"
-END
-
-echo "-Wno-builtin-macro-redefined -include $(pwd)/$FILE"
-
diff -Nru tin-2.3.2/debian/rules tin-2.3.2/debian/rules
--- tin-2.3.2/debian/rules	2015-12-27 15:43:07.0 +0100
+++ tin-2.3.2/debian/rules	2016-06-20 12:17:55.0 +0200
@@ -8,8 +8,6 @@
 DPKG_EXPORT_BUILDFLAGS = 1
 -include /usr/share/dpkg/buildflags.mk
 
-CPPFLAGS+=$(shell sh debian/cpp_reprtime include/reprtime.h)
-
 DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
 DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
 ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#827361: matplotlib: please honour SOURCE_DATE_EPOCH to allow reproducible output

2016-06-15 Thread Alexis Bienvenüe
Package: matplotlib
Version: 1.5.2~rc2-1
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

While working on the "reproducible builds" effort [1], we have noticed
that some packages (like python-shapely) use matplotlib in their
building process, leading to unreproducible builds (due to the
timestamps inserted in PS/PDF files).

To solve this kind of issues, it would be nice to make matplotlib
support the SOURCE_DATE_EPOCH environment variable [2], so that the
sources last modification date can be used for the timestamps in these
PS and PDF files.

See the attached patch for a proposed solution.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/




diff -Nru matplotlib-1.5.2~rc2/debian/changelog matplotlib-1.5.2~rc2/debian/changelog
--- matplotlib-1.5.2~rc2/debian/changelog	2016-05-30 20:36:55.0 +0200
+++ matplotlib-1.5.2~rc2/debian/changelog	2016-06-14 19:42:45.0 +0200
@@ -1,3 +1,9 @@
+matplotlib (1.5.2~rc2-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Reproducible PS/PDF output, using SOURCE_DATE_EPOCH (when set)
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Tue, 14 Jun 2016 19:42:45 +0200
+
 matplotlib (1.5.2~rc2-1) unstable; urgency=medium
 
   [ Sandro Tosi ]
diff -Nru matplotlib-1.5.2~rc2/debian/patches/honour-SOURCE_DATE_EPOCH.patch matplotlib-1.5.2~rc2/debian/patches/honour-SOURCE_DATE_EPOCH.patch
--- matplotlib-1.5.2~rc2/debian/patches/honour-SOURCE_DATE_EPOCH.patch	1970-01-01 01:00:00.0 +0100
+++ matplotlib-1.5.2~rc2/debian/patches/honour-SOURCE_DATE_EPOCH.patch	2016-06-14 23:27:09.0 +0200
@@ -0,0 +1,99 @@
+Description: Honour SOURCE_DATE_EPOCH
+ Honour the SOURCE_DATE_EPOCH environment variable, to build timestamps
+ in PS/PDF outputs. This allows reproducible output.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: matplotlib-1.5.2~rc2/lib/matplotlib/backends/backend_pdf.py
+===
+--- matplotlib-1.5.2~rc2.orig/lib/matplotlib/backends/backend_pdf.py
 matplotlib-1.5.2~rc2/lib/matplotlib/backends/backend_pdf.py
+@@ -23,7 +23,7 @@ import numpy as np
+ from matplotlib.externals.six import unichr
+ 
+ 
+-from datetime import datetime
++from datetime import datetime, tzinfo, timedelta
+ from math import ceil, cos, floor, pi, sin
+ 
+ import matplotlib
+@@ -134,6 +134,20 @@ def _string_escape(match):
+ assert False
+ 
+ 
++# tzinfo class for UTC
++class UTCtimezone(tzinfo):
++"""UTC"""
++
++def utcoffset(self, dt):
++return timedelta(0)
++
++def tzname(self, dt):
++return "UTC"
++
++def dst(self, dt):
++return timedelta(0)
++
++
+ def pdfRepr(obj):
+ """Map Python objects to PDF syntax."""
+ 
+@@ -201,10 +215,14 @@ def pdfRepr(obj):
+ # A date.
+ elif isinstance(obj, datetime):
+ r = obj.strftime('D:%Y%m%d%H%M%S')
+-if time.daylight:
+-z = time.altzone
++z = obj.utcoffset()
++if z is not None:
++z = z.seconds
+ else:
+-z = time.timezone
++if time.daylight:
++z = time.altzone
++else:
++z = time.timezone
+ if z == 0:
+ r += 'Z'
+ elif z < 0:
+@@ -457,10 +475,19 @@ class PdfFile(object):
+ self.writeObject(self.rootObject, root)
+ 
+ revision = ''
++# get source date from SOURCE_DATE_EPOCH, if set
++# See https://reproducible-builds.org/specs/source-date-epoch/
++source_date_epoch = os.getenv("SOURCE_DATE_EPOCH")
++if source_date_epoch:
++source_date = datetime.utcfromtimestamp(int(source_date_epoch))
++source_date = source_date.replace(tzinfo=UTCtimezone())
++else:
++source_date = datetime.today()
++
+ self.infoDict = {
+ 'Creator': 'matplotlib %s, http://matplotlib.org' % __version__,
+ 'Producer': 'matplotlib pdf backend%s' % revision,
+-'CreationDate': datetime.today()
++'CreationDate': source_date
+ }
+ 
+ self.fontNames = {} # maps filenames to internal font names
+Index: matplotlib-1.5.2~rc2/lib/matplotlib/backends/backend_ps.py
+===
+--- matplotlib-1.5.2~rc2.orig/lib/matplotlib/backends/backend_ps.py
 matplotlib-1.5.2~rc2/lib/matplotlib/backends/backend_ps.py
+@@ -1126,7 +1126,14 @@ class FigureCanvasPS(FigureCanvasBase):
+ if title: print("%%Title: "+title, file=fh)
+ print(("%%Creator: matplotlib version "
+ 

[Reproducible-builds] Bug#827197: gnuplot: please make the build reproducible (timestamps, username, environment)

2016-06-13 Thread Alexis Bienvenüe
Source: gnuplot
Version: 5.0.3+dfsg3-5
Severity: wishlist
Tags: upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps username environment
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org
Control: block -1 by 827187

Dear Maintainer,

While working on the "reproducible builds" effort [1], we have noticed
that gnuplot has following reproducibility issues :

* gnuplot embeds timestamps in its ps output. When the SOURCE_DATE_EPOCH
environment variable [2] is set, it can be used to make the output
reproducible. See 13_honour_SOURCE_DATE_EPOCH.patch

* gnuplot embeds the username in its ps output. I think the unix
username is not usefull in this output, and can be stripped. See
14_strip_username_from_output.patch - maybe it is possible to strip it
only if SOURCE_DATE_EPOCH is set if this username is considered to be
relevant here.

* The SHELL used when building gnuplot is recorded in the Makefiles
included in gnuplot-doc. I think /bin/sh can always be used instead. See
changes with override_dh_auto_configure

Once these patches are applied, and once https://bugs.debian.org/827187
is fixed, gnuplot can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/


diff -Nru gnuplot-5.0.3+dfsg3/debian/changelog gnuplot-5.0.3+dfsg3/debian/changelog
--- gnuplot-5.0.3+dfsg3/debian/changelog	2016-06-10 20:03:10.0 +0200
+++ gnuplot-5.0.3+dfsg3/debian/changelog	2016-06-13 17:01:48.0 +0200
@@ -1,3 +1,9 @@
+gnuplot (5.0.3+dfsg3-5.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Make the build reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 13 Jun 2016 17:01:48 +0200
+
 gnuplot (5.0.3+dfsg3-5) unstable; urgency=medium
 
   [ Sven Joachim ]
diff -Nru gnuplot-5.0.3+dfsg3/debian/patches/13_honour_SOURCE_DATE_EPOCH.patch gnuplot-5.0.3+dfsg3/debian/patches/13_honour_SOURCE_DATE_EPOCH.patch
--- gnuplot-5.0.3+dfsg3/debian/patches/13_honour_SOURCE_DATE_EPOCH.patch	1970-01-01 01:00:00.0 +0100
+++ gnuplot-5.0.3+dfsg3/debian/patches/13_honour_SOURCE_DATE_EPOCH.patch	2016-06-13 17:00:49.0 +0200
@@ -0,0 +1,57 @@
+Description: Honour SOURCE_DATE_EPOCH
+ Get date from the environment variable SOURCE_DATE_EPOCH (when set),
+ to build output timestamps.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- gnuplot-5.0.3+dfsg3.orig/term/post.trm
 gnuplot-5.0.3+dfsg3/term/post.trm
+@@ -1657,15 +1657,45 @@ end\n\
+ int i;
+ time_t now;
+ char *timedate;
+-
++char *source_date_epoch;
++unsigned long long epoch;
++char *endptr;
++ 
+ ps_common_uses_fonts = uses_fonts;
+ ps_common_xoff = xoff;
+ ps_common_yoff = yoff;
+ 
+ ps_page = 0;
+ 
+-time();
+-timedate=asctime(localtime());
++/* get source date from environment variable SOURCE_DATE_EPOCH, if set.
++   See https://reproducible-builds.org/specs/source-date-epoch/ */
++source_date_epoch = getenv("SOURCE_DATE_EPOCH");
++if (source_date_epoch) {
++  errno = 0;
++  epoch = strtoull(source_date_epoch, , 10);
++  if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0))
++  || (errno != 0 && epoch == 0)) {
++fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n", strerror(errno));
++exit(EXIT_FAILURE);
++  }
++  if (endptr == source_date_epoch) {
++fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n", endptr);
++exit(EXIT_FAILURE);
++  }
++  if (*endptr != '\0') {
++fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n", endptr);
++exit(EXIT_FAILURE);
++  }
++  if (epoch > ULONG_MAX) {
++fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to: %lu but was found to be: %llu \n", ULONG_MAX, epoch);
++exit(EXIT_FAILURE);
++  }
++  now = epoch;
++  timedate=asctime(gmtime());
++} else {
++  time();
++  timedate=asctime(localtime());
++}
+ timedate[strlen(timedate)-1]='\0';
+ 
+ #ifdef PSLATEX_DRIVER
diff -Nru gnuplot-5.0.3+dfsg3/debian/patches/14_strip_username_from_output.patch gnuplot-5.0.3+dfsg3/debian/patches/14_strip_username_from_output.patch
--- gnuplot-5.0.3+dfsg3/debian/patches/14_strip_username_from_output.patch	1970-01-01 01:00:00.0 +0100
+++ gnuplot-5.0.3+dfsg3/debian/patches/14_strip_username_from_output.patch	2016-06-13 17:00:49.0 +0200
@@ -0,0 +1,36 @@
+Description: Strip username from output
+ Strip username from output to make it reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: gnuplot-5.0.3+dfsg3/term/post.trm
+=

[Reproducible-builds] Bug#827187: latex2html: please make the output reproducible (toolchain, timestamps, username, randomness)

2016-06-13 Thread Alexis Bienvenüe
Source: latex2html
Version: 2015-debian1-1
Severity: wishlist
Tags: upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: toolchain timestamps username randomness
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org
Control: block -1 by 827115

Dear Maintainer,

While working on the "reproducible builds" effort [1], we have noticed
that some packages (including latex2html itself) use latex2html in their
building process, leading to the following reproducibility issues :

* keys from the perl hashes are not sorted. See
reproducible-output.patch to sort them and get a reproducible order.
* a timestamp is included in the output. See
honour-SOURCE_DATE_EPOCH.patch to use the SOURCE_DATE_EPOCH environment
variable when set [2]. This way, the timestamps correspond to the
sources date instead of the build date.
* the user name is included in the output. See
suppress-username-from-output.patch to strip it.
* the index keys are not fully ordered in the case cleaned values are
equal. See idx-sort-all.patch

Once these patches are applied, and once https://bugs.debian.org/827115
is fixed, latex2html can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/

diff -Nru latex2html-2015-debian1/debian/changelog latex2html-2015-debian1/debian/changelog
--- latex2html-2015-debian1/debian/changelog	2016-01-19 19:24:18.0 +0100
+++ latex2html-2015-debian1/debian/changelog	2016-06-10 15:20:45.0 +0200
@@ -1,3 +1,9 @@
+latex2html (2015-debian1-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Reproducible output.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Fri, 10 Jun 2016 15:20:45 +0200
+
 latex2html (2015-debian1-1) unstable; urgency=medium
 
   * New upstream release (Closes: #647433)
diff -Nru latex2html-2015-debian1/debian/patches/honour-SOURCE_DATE_EPOCH.patch latex2html-2015-debian1/debian/patches/honour-SOURCE_DATE_EPOCH.patch
--- latex2html-2015-debian1/debian/patches/honour-SOURCE_DATE_EPOCH.patch	1970-01-01 01:00:00.0 +0100
+++ latex2html-2015-debian1/debian/patches/honour-SOURCE_DATE_EPOCH.patch	2016-06-10 15:47:57.0 +0200
@@ -0,0 +1,22 @@
+Description: Honour SOURCE_DATE_EPOCH
+ Honour the SOURCE_DATE_EPOCH environment variable, to make the output
+ reproducible.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- latex2html-2015-debian1.orig/latex2html.pin
 latex2html-2015-debian1/latex2html.pin
+@@ -15006,7 +15006,12 @@ sub brackets { ($OP, $CP);}
+ 
+ sub get_date {
+ local($format,$order) = @_;
+-local(@lt) = localtime;
++local(@lt);
++if($ENV{SOURCE_DATE_EPOCH}) {
++@lt = gmtime($ENV{SOURCE_DATE_EPOCH})
++} else {
++@lt = localtime;
++}
+ local($d,$m,$y) = @lt[3,4,5];
+ if ($format =~ /ISO/) {
+ 	sprintf("%4d-%02d-%02d", 1900+$y, $m+1, $d);
diff -Nru latex2html-2015-debian1/debian/patches/idx-sort-all.patch latex2html-2015-debian1/debian/patches/idx-sort-all.patch
--- latex2html-2015-debian1/debian/patches/idx-sort-all.patch	1970-01-01 01:00:00.0 +0100
+++ latex2html-2015-debian1/debian/patches/idx-sort-all.patch	2016-06-13 14:49:30.0 +0200
@@ -0,0 +1,16 @@
+Description: Sort all index keys
+ Sort index keys, even if they are the same after beeing cleaned, to
+ get a reproducible output.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- latex2html-2015-debian1.orig/latex2html.pin
 latex2html-2015-debian1/latex2html.pin
+@@ -8536,7 +8536,7 @@ sub keysort {
+ # Put alphabetic characters after symbols; already downcased
+ $x =~ s/^([a-z])/~~~$1/;
+ $y =~ s/^([a-z])/~~~$1/;
+-$x cmp $y;
++($x cmp $y) || ($a cmp $b);
+ }
+ 
+ sub index_key_eq {
diff -Nru latex2html-2015-debian1/debian/patches/reproducible-output.patch latex2html-2015-debian1/debian/patches/reproducible-output.patch
--- latex2html-2015-debian1/debian/patches/reproducible-output.patch	1970-01-01 01:00:00.0 +0100
+++ latex2html-2015-debian1/debian/patches/reproducible-output.patch	2016-06-13 09:50:57.0 +0200
@@ -0,0 +1,260 @@
+Description: Make the output reproducible.
+ Sort perl hash keys to get the output reproducible.
+ See https://wiki.debian.org/ReproducibleBuilds/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: latex2html-2015-debian1/latex2html.pin
+===
+--- latex2html-2015-debian1.orig/latex2html.pin
 latex2html-2015-debian1/latex2html.pin
+@@ -1049,7 +1049,7 @@ sub restore_critical_variables {
+ # undef any renewed-commands...
+ # so the new defs are read from %new_command
+ local($cmd,$key,$code);
+-foreach $key (keys %renew_command) {
++foreach $key (sort keys %renew_command) {
+ 	$cmd = "do_cmd_$key";
+ 

[Reproducible-builds] Bug#827172: reaver: please make the build reproducible (fileordering)

2016-06-13 Thread Alexis Bienvenüe
Source: reaver
Version: 1.4-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 'reaver' could not be built reproducibly.

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

Regards,
Alexis Bienvenüe.

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


Description: Order object files when linking
 Sort object files when liking, to make the build reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: reaver-1.4/src/Makefile.in
===
--- reaver-1.4.orig/src/Makefile.in
+++ reaver-1.4/src/Makefile.in
@@ -5,15 +5,15 @@ prefix=@prefix@
 exec_prefix=@exec_prefix@
 CONFDIR=@sysconfdir@/@target@
 CFLAGS=-DCONF_DIR='"$(CONFDIR)"' -DREAVER_DATABASE='"$(CONFDIR)/reaver.db"' @CFLAGS@
-LDFLAGS=$(LIBWPS_DIR)/*.o wps/*.o tls/bignum.o tls/libtls.a utils/libutils.a crypto/libcrypto.a lwe/libiw.a @LDFLAGS@
+LDFLAGS=`LC_ALL=C ls $(LIBWPS_DIR)/*.o wps/*.o` tls/bignum.o tls/libtls.a utils/libutils.a crypto/libcrypto.a lwe/libiw.a @LDFLAGS@
 
 all: wash reaver
 
 wash: wps libiw libwps.o argsparser.o globule.o init.o misc.o 80211.o iface.o
-	$(CC) $(CFLAGS) $(INC) wpsmon.c *.o $(LDFLAGS) -o wash
+	$(CC) $(CFLAGS) $(INC) wpsmon.c `LC_ALL=C ls *.o` $(LDFLAGS) -o wash
 
 reaver: wps libiw libwps.o argsparser.o globule.o init.o sigint.o sigalrm.o misc.o cracker.o
-	$(CC) $(CFLAGS) $(INC) wpscrack.c *.o $(LDFLAGS) -o reaver
+	$(CC) $(CFLAGS) $(INC) wpscrack.c `LC_ALL=C ls *.o` $(LDFLAGS) -o reaver
 
 libwps.o:
 	(cd $(LIBWPS_DIR) && make)
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#827115: netpbm: please honour SOURCE_DATE_EPOCH to allow reproducible output

2016-06-12 Thread Alexis Bienvenüe
Package: netpbm
Version: 2:10.0-15.3
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

While working on the "reproducible builds" effort [1], we have noticed
that some packages (like latex2html) use one of the netpbm utilities in
their process, leading to unreproducible output (due to the use of the
random generator, seeded from a time() call).

To solve this kind of issues, it would be nice to make netpbm support
the SOURCE_DATE_EPOCH environment variable [2].

See the attached patch for a proposed solution.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/


diff -u netpbm-free-10.0/debian/changelog netpbm-free-10.0/debian/changelog
--- netpbm-free-10.0/debian/changelog
+++ netpbm-free-10.0/debian/changelog
@@ -1,3 +1,9 @@
+netpbm-free (2:10.0-15.3.0~reproducible1) UNRELEASED; urgency=medium
+
+  * SOURCE_DATE_EPOCH support.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Sun, 12 Jun 2016 11:43:19 +0200
+
 netpbm-free (2:10.0-15.3) unstable; urgency=medium
 
   * Non-maintainer upload.
only in patch2:
unchanged:
--- netpbm-free-10.0.orig/include/pm.h
+++ netpbm-free-10.0/include/pm.h
@@ -20,6 +20,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #ifdef VMS
 #include 
@@ -245,5 +246,10 @@
 char *
 pm_arg0toprogname(const char arg0[]);
 
+/* SOURCE_DATE_EPOCH support */
+
+time_t
+pm_source_time(int use_pid);
+
 #endif
 
only in patch2:
unchanged:
--- netpbm-free-10.0.orig/pbm/libpm.c
+++ netpbm-free-10.0/pbm/libpm.c
@@ -23,6 +23,9 @@
 #include 
 #include 
 #include 
+#include 
+#include 
+#include 
 
 /* The following are set by pm_init(), then used by subsequent calls to other
pm_xxx() functions.
@@ -938,3 +941,42 @@
 	return realloc(a, b*c);
 }
 
+time_t pm_source_time(int use_pid)
+{
+  time_t now;
+  char *source_date_epoch;
+  unsigned long long epoch;
+  char *endptr;
+
+  source_date_epoch = getenv("SOURCE_DATE_EPOCH");
+  if (source_date_epoch) {
+errno = 0;
+epoch = strtoull(source_date_epoch, , 10);
+if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0))
+|| (errno != 0 && epoch == 0)) {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n", strerror(errno));
+  exit(EXIT_FAILURE);
+}
+if (endptr == source_date_epoch) {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n", endptr);
+  exit(EXIT_FAILURE);
+}
+if (*endptr != '\0') {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n", endptr);
+  exit(EXIT_FAILURE);
+}
+if (epoch > ULONG_MAX) {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to: %lu but was found to be: %llu \n", ULONG_MAX, epoch);
+  exit(EXIT_FAILURE);
+}
+now = epoch;
+return(now);
+  } else {
+now = time(NULL);
+if(use_pid) {
+  return(now ^ getpid());
+} else {
+  return(now);
+}
+  }
+}
only in patch2:
unchanged:
--- netpbm-free-10.0.orig/pbm/pbmreduce.c
+++ netpbm-free-10.0/pbm/pbmreduce.c
@@ -98,7 +98,7 @@
 if ( thiserr == 0 || nexterr == 0 )
   pm_error( "out of memory" );
 
-srand( (int) ( time( 0 ) ^ getpid( ) ) );
+srand( (int) ( pm_source_time(1) ) );
 for ( col = 0; col < newcols + 2; ++col )
   thiserr[col] = ( rand( ) % SCALE - HALFSCALE ) / 4;
 	/* (random errors in [-SCALE/8 .. SCALE/8]) */
only in patch2:
unchanged:
--- netpbm-free-10.0.orig/pgm/pgmcrater.c
+++ netpbm-free-10.0/pgm/pgmcrater.c
@@ -107,7 +107,7 @@
 {
 int i;
 
-i = time((long *) 0) * 0xF37C;
+i = pm_source_time(0) * 0xF37C;
 srand(i);
 for (i = 0; i < 7; i++) {
 	V rand();
only in patch2:
unchanged:
--- netpbm-free-10.0.orig/pgm/pgmnoise.c
+++ netpbm-free-10.0/pgm/pgmnoise.c
@@ -57,7 +57,7 @@
 	pgm_writepgminit(stdout, cols, rows, PGM_MAXMAXVAL, 0);
 
 	/* get time of day to feed the random number generator */
-	timenow = time(NULL);
+	timenow = pm_source_time(0);
 	srand(timenow);
 
 	/* create the (gray) noise */
only in patch2:
unchanged:
--- netpbm-free-10.0.orig/pgm/pgmtopbm.c
+++ netpbm-free-10.0/pgm/pgmtopbm.c
@@ -132,7 +132,7 @@
 	overflow_add(cols, 2);
 	thiserr = (long*) pm_allocrow( cols + 2, sizeof(long) );
 	nexterr = (long*) pm_allocrow( cols + 2, sizeof(long) );
-	srand( (int) ( time( 0 ) ^ getpid( ) ) );
+	srand( (int) ( pm_source_time(1) ) );
 	for ( col = 0; col < cols + 2; ++col )
 		thiserr[col] = ( rand( ) % FS_SCALE - HALF_FS_SCALE ) / 4;
 	/* (random errors in [-FS_SCALE/8 .. FS_SCALE/8]) */
only in patch2:
unchanged:
--- netpbm-free-10.0.orig/pnm/pnmremap.c
+++ netpbm-free-10.0/pnm/p

[Reproducible-builds] Bug#826951: slicot: please make the build reproducible (fileordering)

2016-06-10 Thread Alexis Bienvenüe
Source: slicot
Version: 5.0+20101122-2
Severity: wishlist
Tags: patch
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 'slicot' could not be built reproducibly.

The attached patch fixes the order files are passed to `ar'.
Once applied, slicot can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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




diff -Nru slicot-5.0+20101122/debian/rules slicot-5.0+20101122/debian/rules
--- slicot-5.0+20101122/debian/rules	2013-05-18 14:55:08.0 +0200
+++ slicot-5.0+20101122/debian/rules	2016-06-10 14:39:29.0 +0200
@@ -21,7 +21,7 @@
 SO=0
 VERS=$(SO).0
 
-SLICOT_SRC=$(shell echo src/*.f)
+SLICOT_SRC=$(sort $(shell echo src/*.f))
 SLICOT_OBJ=$(SLICOT_SRC:.f=.o)
 
 debian/shared_dir debian/static_dir debian/shared64_dir:
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#826162: slime: please make the contributors ordering locale-independent (environment)

2016-06-02 Thread Alexis Bienvenüe
Source: slime
Version: 2:2.17-1
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch make the contributors ordering locale-independent.

With this patch applied, and if #826158 is fixed, so that the slime.info
file gets a reproducible date from the last debian/changelog entry,
slime can be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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








Description: Reproducible contributors list
 Always use C locale when sorting contributors, to make the build
 reproducible
Author: Alexis Bienvenüe <p...@passoire.fr>

--- slime-2.17.orig/doc/Makefile
+++ slime-2.17/doc/Makefile
@@ -77,7 +77,7 @@ contributors.texi: $(CHANGELOGS) Makefil
 	sed -ne '/^[0-9]/{s/^[^ ]* *//; s/ *<.*//; p;}' | \
 	sort | \
 	uniq -c | \
-	sort -nr| \
+	LC_ALL=C sort -nr| \
 	sed -e 's/^[^A-Z]*//' | \
 	LC_ALL=C awk -f texinfo-tabulate.awk \
 	> $@
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#826093: osc: please make the build reproducible (timestamps)

2016-06-02 Thread Alexis Bienvenüe
Source: osc
Version: 0.154.0-2
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

While working on the `€œreproducible builds'€ effort [1], we have noticed
that 'osc' could not be built reproducibly.

The attached patch honours the SOURCE_DATE_EPOCH environment
variable [2] to get a reproducible man page date from the last
debian changelog entry.
Once applied, osc can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/


Description: Reproducible man page date
 Set the man page date from the environment variable SOURCE_DATE_EPOCH
 (if set), to make the build reproducible.
 See  https://reproducible-builds.org/specs/source-date-epoch/
Author: Alexis Bienvenüe <p...@passoire.fr>

--- osc-0.154.0.orig/osc/cmdln.py
+++ osc-0.154.0/osc/cmdln.py
@@ -45,8 +45,8 @@ import re
 import cmd
 import optparse
 import sys
+import time
 from pprint import pprint
-from datetime import date
 
 # this is python 2.x style
 def introspect_handler_2(handler):
@@ -619,9 +619,13 @@ class RawCmdln(cmd.Cmd):
 usage:
 ${name} man
 """
+if os.getenv("SOURCE_DATE_EPOCH"):
+srcdate = time.gmtime(int(os.getenv("SOURCE_DATE_EPOCH")))
+else:
+srcdate = time.localtime()
 self.stdout.write(bytes(
 self.man_header % {
-'date': date.today().strftime('%b %Y'),
+'date': time.strftime('%b %Y',srcdate),
 'version': self.get_version(),
 'name': self.name,
 'ucname': self.name.upper()
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

Re: [Reproducible-builds] dropping texlive from our archive

2016-06-01 Thread Alexis Bienvenüe
Hi.

Le 31/05/2016 23:52, Mattia Rizzolo a écrit :
> The current status is: nearly everything was merged, but one patch.
> https://anonscm.debian.org/git/reproducible/texlive-bin.git/tree/debian/patches/source-date-epoch-tex-primitives-defaults-to-1?id=c6dede514f6c724228ad6bbaa90531b27e78f1eb
> That patch is basically what makes \today reproducible follow S_D_E
> always instead of when somebody enables it with Yet Another Env Var.

Note that when the TeX primitives do not honour S_D_E, xetex output is
not reproducible (even if \today is not used) because of the /Creator
string which includes a date that is build from these primitives :

https://anonscm.debian.org/cgit/debian-tex/texlive-bin.git/tree/texk/web2c/xetexdir/xetex.web#n13872

So solution 3 should include a bugfix to make xetex's Creator string
either strip the build date either honour S_D_E.

Regards,
Alexis Bienvenüe.


___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds


[Reproducible-builds] Bug#825436: gettext: please make xgettext honour SOURCE_DATE_EPOCH

2016-05-26 Thread Alexis Bienvenüe
Source: gettext
Version: 0.19.7-2
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

While working on the “reproducible builds” effort [1], we have noticed
that some packages (like gdm3, gnome-session) use xgettext in their
building process, resulting in timestamps in POT files that break
reproducibility.

To solve this kind of issues, it would be nice to have xgettext support
the SOURCE_DATE_EPOCH environment variable [2], so that the
POT-Creation-Date timestamp will be set from the last debian/changelog
entry instead of the (unreproducible) build date.

See the attached patch for a solution to this issue.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/


Description: xgettext honour SOURCE_DATE_EPOCH
 Make xgettext honour the SOURCE_DATE_EPOCH environment variable: is set,
 this variable is used to set POT-Creation-Date.
 See https://reproducible-builds.org/specs/source-date-epoch/
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: gettext-0.19.7/gettext-tools/src/po-time.c
===
--- gettext-0.19.7.orig/gettext-tools/src/po-time.c
+++ gettext-0.19.7/gettext-tools/src/po-time.c
@@ -52,13 +52,17 @@ difftm (const struct tm *a, const struct
 
 
 char *
-po_strftime (const time_t *tp)
+po_strftime_tz (const time_t *tp, int gmt)
 {
   struct tm local_time;
   char tz_sign;
   long tz_min;
 
-  local_time = *localtime (tp);
+  if (gmt) {
+local_time = *gmtime (tp);
+  } else {
+local_time = *localtime (tp);
+  }
   tz_sign = '+';
   tz_min = difftm (_time, gmtime (tp)) / 60;
   if (tz_min < 0)
@@ -74,3 +78,9 @@ po_strftime (const time_t *tp)
 local_time.tm_min,
 tz_sign, tz_min / 60, tz_min % 60);
 }
+
+char *
+po_strftime (const time_t *tp)
+{
+  return (po_strftime_tz (tp,0));
+}
Index: gettext-0.19.7/gettext-tools/src/po-time.h
===
--- gettext-0.19.7.orig/gettext-tools/src/po-time.h
+++ gettext-0.19.7/gettext-tools/src/po-time.h
@@ -29,6 +29,7 @@ extern "C" {
 /* Return a freshly allocated string containing the given time in the
format -MM-DD HH:MM+TZOFF.  */
 extern char *po_strftime (const time_t *tp);
+extern char *po_strftime_tz (const time_t *tp, int gmt);
 
 
 #ifdef __cplusplus
Index: gettext-0.19.7/gettext-tools/src/xgettext.c
===
--- gettext-0.19.7.orig/gettext-tools/src/xgettext.c
+++ gettext-0.19.7/gettext-tools/src/xgettext.c
@@ -3723,6 +3723,9 @@ construct_header ()
   message_ty *mp;
   char *msgstr;
   char *comment;
+  char *source_date_epoch;
+  unsigned long long epoch;
+  char *endptr;
   static lex_pos_ty pos = { __FILE__, __LINE__ };
 
   if (package_name != NULL)
@@ -3744,8 +3747,33 @@ the MSGID_BUGS_ADDRESS variable there; o
 specify an --msgid-bugs-address command line option.\n\
 ")));
 
-  time ();
-  timestring = po_strftime ();
+  source_date_epoch = getenv("SOURCE_DATE_EPOCH");
+  if (source_date_epoch) {
+errno = 0;
+epoch = strtoull(source_date_epoch, , 10);
+if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0))
+|| (errno != 0 && epoch == 0)) {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: strtoull: 
%s\n", strerror(errno));
+  exit(EXIT_FAILURE);
+}
+if (endptr == source_date_epoch) {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: No digits were 
found: %s\n", endptr);
+  exit(EXIT_FAILURE);
+}
+if (*endptr != '\0') {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: Trailing 
garbage: %s\n", endptr);
+  exit(EXIT_FAILURE);
+}
+if (epoch > ULONG_MAX) {
+  fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: value must be 
smaller than or equal to: %lu but was found to be: %llu \n", ULONG_MAX, epoch);
+  exit(EXIT_FAILURE);
+}
+now = epoch;
+timestring = po_strftime_tz (,1);
+  } else {
+time ();
+timestring = po_strftime ();
+  }
 
   msgstr = xasprintf ("\
 Project-Id-Version: %s\n\
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#825092: grass: please make the build reproducible (fileordering, randomness)

2016-05-23 Thread Alexis Bienvenüe
Source: grass
Version: 7.0.4-1
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: fileordering randomness
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org
Control: block -1 by 825088

Dear Maintainer,

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

There are several reproducibility issues:

1) File ordering issues - the build result depends on the order of the
files listed with readdir or equivalent.

* in tools/build_modules_xml.py - see patch sort-build-modules-list

* in lib/db/dbmi_base/dbmscap.c (this affects options order in the
html/db.*.html files) - see patch sort-dbmscap that builds an ordered list.

* in include/Make/Vars.make (this affects the order in which object
files are merged) - see patch sort-obj-files

2) Randomness issue: html/colortables/random.png is built using a
pseudo-random generator seeded with build-time value. See patch
srand48_auto-from-SOURCE_DATE_EPOCH that uses the SOURCE_DATE_EPOCH [2]
environment variable (when set) to set a seed from last debian/changelog
entry date.

3) Makefile mistake: from
https://buildd.debian.org/status/fetch.php?pkg=grass=i386=7.0.4-1=1462121195,
it seems to me that the binary NAD files are not installed properly:

/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/prvi
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/hawaii
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/alaska
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/stgeorge
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/FL
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/WO
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/TN
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/stlrnc
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/stpaul
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/conus
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/MD
/usr/bin/install -c  -m 644 OBJ.i686-pc-linux-gnu/prvi
/«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/WI

The single OBJ.i686-pc-linux-gnu/prvi file is here installed to *all*
/etc/proj/nad files.
See the patch binary-nad-install for a fix.

4) nad2bin issue: nad2bin has unreproducible output (see #825088)

Once these proposed patches are applied (and #825088 fixed), grass can
be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/


Description: Sort build modules list
 Sort modules in module_items.xml, to make the build reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

--- grass-7.0.4.orig/gui/wxpython/tools/build_modules_xml.py
+++ grass-7.0.4/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
Description: Sort dbmscap list
 To get reproducible results.
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: grass-7.0.4/lib/db/dbmi_base/dbmscap.c
===
--- grass-7.0.4.orig/lib/db/dbmi_base/dbmscap.c
+++ grass-7.0.4/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

[Reproducible-builds] Bug#824808: gdal: please make the build reproducible (fileordering)

2016-05-19 Thread Alexis Bienvenüe
Source: gdal
Version: 2.1.0+dfsg-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 'gdal' could not be built reproducibly.

Either one of the two attached patches fixes the order files are passed
to libtool — but I don't know if one of them could be an acceptable
solution.
One applied, gdal can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

[1]: https://wiki.debian.org/ReproducibleBuilds
Description: Sort files
 Sort files passed as arguments to make the build reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: gdal-2.1.0+dfsg/GNUmakefile
===
--- gdal-2.1.0+dfsg.orig/GNUmakefile
+++ gdal-2.1.0+dfsg/GNUmakefile
@@ -53,7 +53,7 @@ $(GDAL_SLIB): $(GDAL_OBJ) $(GDAL_LIB)
-o $(GDAL_SLIB)
 
 $(LIBGDAL):$(GDAL_OBJ:.o=.lo)
-   $(LD) $(LDFLAGS) $(LIBS) -o $@ $(GDAL_OBJ:.o=.lo) \
+   $(LD) $(LDFLAGS) $(LIBS) -o $@ `LC_ALL=C ls $(GDAL_OBJ:.o=.lo) 
2>/dev/null` \
-rpath $(INST_LIB) \
-no-undefined \
-version-info $(LIBGDAL_CURRENT):$(LIBGDAL_REVISION):$(LIBGDAL_AGE)
Description: Sort files
 Sort files passed as arguments to make the build reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: gdal-2.1.0+dfsg/GNUmakefile
===
--- gdal-2.1.0+dfsg.orig/GNUmakefile
+++ gdal-2.1.0+dfsg/GNUmakefile
@@ -53,7 +53,11 @@ $(GDAL_SLIB):$(GDAL_OBJ) $(GDAL_LIB)
-o $(GDAL_SLIB)
 
 $(LIBGDAL):$(GDAL_OBJ:.o=.lo)
-   $(LD) $(LDFLAGS) $(LIBS) -o $@ $(GDAL_OBJ:.o=.lo) \
+   $(MAKE) $(LIBGDAL).buildit
+
+.PHONY: $(LIBGDAL).buildit
+$(LIBGDAL).buildit:
+   $(LD) $(LDFLAGS) $(LIBS) -o $(LIBGDAL) $(sort $(wildcard 
$(GDAL_OBJ:.o=.lo))) \
-rpath $(INST_LIB) \
-no-undefined \
-version-info $(LIBGDAL_CURRENT):$(LIBGDAL_REVISION):$(LIBGDAL_AGE)
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] package uploaded to our repo

2016-05-19 Thread Alexis Bienvenüe
texlive-bin_2016.20160513.41080-2.0~reproducible1.dsc has just been uploaded to 
https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchain

___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds


[Reproducible-builds] Bug#824653: elkcode: please make the build reproducible (environment)

2016-05-18 Thread Alexis Bienvenüe
Source: elkcode
Version: 2.3.22-1
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the locale used by ls to sort files.
Once applied, elkcode can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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







Description: Set ls locale for reproducible order.
 Fix locale used with `ls', so that the order of the files listed is
 always the same. This makes the build reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

--- elkcode-2.3.22.orig/src/Makefile
+++ elkcode-2.3.22/src/Makefile
@@ -157,7 +157,7 @@ cleanall:
 
 doc:
 	rm -f elk.aux elk.bbl elk.blg elk.log elk.pdf elk.tex elk.toc elk.lst
-	ls $(SRC_modules) $(SRC_routines) $(SRC_XC) $(SRC_phonon) $(SRC_DFTU) \
+	LC_ALL=C ls $(SRC_modules) $(SRC_routines) $(SRC_XC) $(SRC_phonon) $(SRC_DFTU) \
  $(SRC_RDMFT) $(SRC_TDDFT) > elk.lst
 	./protex -F -s $(SRC_main) $$(cat elk.lst) > elk.tex
 	pdflatex elk;pdflatex elk;pdflatex elk
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#824639: openblas: please make the build reproducible (fileordering)

2016-05-18 Thread Alexis Bienvenüe
Source: openblas
Version: 0.2.18-1
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 'openblas' could not be built reproducibly.

The attached patch fixes the order files are passed to `ar' and gcc.
Once applied, openblas can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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





Description: Order files
 Order the files when calling `ar' or $(CC), to make the build reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: openblas-0.2.18/Makefile
===
--- openblas-0.2.18.orig/Makefile
+++ openblas-0.2.18/Makefile
@@ -207,7 +207,7 @@ netlib :
 	mkdir lapack-netlib
 	cd lapack-netlib && ar -x /usr/lib/lapack/liblapack_pic.a
 	make -C interface delete-duplicate-lapack-objects
-	ar -ru $(LIBNAME) lapack-netlib/*
+	ar -ru $(LIBNAME) `LC_ALL=C ls lapack-netlib/*`
 
 clean::
 	rm -rf lapack-netlib
Index: openblas-0.2.18/interface/Makefile
===
--- openblas-0.2.18.orig/interface/Makefile
+++ openblas-0.2.18/interface/Makefile
@@ -2153,7 +2153,7 @@ libblas.so.3: $(SBLAS1OBJS) $(SBLAS2OBJS
 
 # The prerequisites must match the symbols deleted in target delete-duplicate-lapack-objects
 liblapack.so.3: $(SLAPACKOBJS) $(DLAPACKOBJS) $(CLAPACKOBJS) $(ZLAPACKOBJS) ../kernel/lsame.o ../driver/others/xerbla.o
-	$(CC) $(LDFLAGS) -shared -o $@ $^ ../lapack-netlib/* -Wl,-soname,liblapack.so.3 -L.. -lopenblas $(EXTRALIB)
+	$(CC) $(LDFLAGS) -shared -o $@ $^ `LC_ALL=C ls ../lapack-netlib/*` -Wl,-soname,liblapack.so.3 -L.. -lopenblas $(EXTRALIB)
 
 clean::
 	rm -f libblas.so.3 liblapack.so.3
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#824592: twitter-bootstrap: wrong copyright formatting when using bash

2016-05-17 Thread Alexis Bienvenüe
Source: twitter-bootstrap
Version: 2.0.2+dfsg-9
Severity: minor
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

When using the shell bash, echo does not expand "\n" in the copyright
string, leading to an unexpected result.
This can be fixed by using printf instead of echo, as illustrated by the
attached patch.

Once applied, twitter-bootstrap can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1] https://wiki.debian.org/ReproducibleBuilds
 [2]
https://reproducible.debian.net/rb-pkg/testing/amd64/twitter-bootstrap.html







diff -Nru twitter-bootstrap-2.0.2+dfsg/debian/patches/06-use-printf-instead-of-echo.patch twitter-bootstrap-2.0.2+dfsg/debian/patches/06-use-printf-instead-of-echo.patch
--- twitter-bootstrap-2.0.2+dfsg/debian/patches/06-use-printf-instead-of-echo.patch	1970-01-01 01:00:00.0 +0100
+++ twitter-bootstrap-2.0.2+dfsg/debian/patches/06-use-printf-instead-of-echo.patch	2016-05-17 22:06:16.0 +0200
@@ -0,0 +1,17 @@
+Description: Use printf instead of echo
+ "\n" can be expanded or not by echo, depending on the shell used.
+ So using printf instead of echo is more reliable.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+Index: twitter-bootstrap-2.0.2+dfsg/Makefile
+===
+--- twitter-bootstrap-2.0.2+dfsg.orig/Makefile
 twitter-bootstrap-2.0.2+dfsg/Makefile
+@@ -35,7 +35,7 @@ bootstrap:
+ 	lessc --compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css
+ 	cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js > bootstrap/js/bootstrap.js
+ 	uglifyjs bootstrap/js/bootstrap.js > bootstrap/js/bootstrap.min.tmp.js
+-	echo "/**\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/; > bootstrap/js/copyright.js
++	printf "/**\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/\n; > bootstrap/js/copyright.js
+ 	cat bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js > bootstrap/js/bootstrap.min.js
+ 	rm bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js
+ 
diff -Nru twitter-bootstrap-2.0.2+dfsg/debian/patches/series twitter-bootstrap-2.0.2+dfsg/debian/patches/series
--- twitter-bootstrap-2.0.2+dfsg/debian/patches/series	2015-09-25 15:00:00.0 +0200
+++ twitter-bootstrap-2.0.2+dfsg/debian/patches/series	2016-05-17 22:06:56.0 +0200
@@ -3,3 +3,4 @@
 03-use-nodejs-command.patch
 04-build-with-node-1.4.2.patch
 05-drop-nc-from-uglifyjs.patch
+06-use-printf-instead-of-echo.patch
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#824569: gap-ctbllib: please make the build reproducible (timestamps)

2016-05-17 Thread Alexis Bienvenüe
Source: gap-ctbllib
Version: 1r2p2.dfsg.0-2
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch removes timestamps from the compressed *.{six,toc} files.
Once applied, gap-ctbllib can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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


diff -Nru gap-ctbllib-1r2p2.dfsg.0/debian/patches/doc-makefile gap-ctbllib-1r2p2.dfsg.0/debian/patches/doc-makefile
--- gap-ctbllib-1r2p2.dfsg.0/debian/patches/doc-makefile	2014-08-06 23:47:04.0 +0200
+++ gap-ctbllib-1r2p2.dfsg.0/debian/patches/doc-makefile	2016-05-17 15:11:41.0 +0200
@@ -26,8 +26,8 @@
 +install-help:
 +	install -d $(DOCDIR)/$(DIRS)
 +	set -e; for man in $(DIRS); do \
-+	  gzip --best $$man/manual.six; \
-+	  gzip --best $$man/main.toc; \
++	  gzip --best -n $$man/manual.six; \
++	  gzip --best -n $$man/main.toc; \
 +	  install -o root -g root -m 0644 $$man/manualbib.xml $(DOCDIR)/$$man;\
 +	  install -o root -g root -m 0644 $$man/manualbib.xml.bib $(DOCDIR)/$$man;\
 +	  install -o root -g root -m 0644 $$man/manual.six.gz $(DOCDIR)/$$man;\
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#824567: tkdesk: please make the build reproducible (fileordering)

2016-05-17 Thread Alexis Bienvenüe
Source: tkdesk
Version: 2.0-9.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 'tkdesk' could not be built reproducibly.

The attached patch fixes the order in which files are parsed by the
mkindex script.
Once applied, tkdesk can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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

--- tkdesk-2.0.orig/tcldesk/mkindex
+++ tkdesk-2.0/tcldesk/mkindex
@@ -74,7 +74,7 @@
 append index "# sets an element in the auto_index array, where the\n"
 append index "# element name is the name of a command and the value is\n"
 append index "# a script that loads the command.\n\n"
-foreach file [eval glob $args] {
+foreach file [lsort [eval glob $args]] {
 	set f ""
 	set error [catch {
 	set f [open $file]
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#824472: torch3: please make the build reproducible (fileordering)

2016-05-16 Thread Alexis Bienvenüe
Source: torch3
Version: 3.1-2.1
Severity: wishlist
Tags: patch
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 'torch3' could not be built reproducibly.

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

Regards,
Alexis Bienvenüe.

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




--- Makefile.modules.orig
+++ Makefile.modules
@@ -14,9 +14,9 @@
 
 $(LIBTORCH): $(STATICOBJS)
 	@echo "Archiving..."
-	$(AR) $(LIBTORCH) $(STATICOBJSDIR)/*.o
+	$(AR) $(LIBTORCH) $(sort $(wildcard $(STATICOBJSDIR)/*.o))
 $(LIBSOTORCH): $(DYNAMICOBJS)
-	$(CC) -shared -Wl,-soname=libtorch.so.3 -o $(LIBSOTORCH) $(DYNAMICOBJSDIR)/*.o
+	$(CC) -shared -Wl,-soname=libtorch.so.3 -o $(LIBSOTORCH) $(sort $(wildcard $(DYNAMICOBJSDIR)/*.o))
 	
 
 $(OBJS_DIR)/static/%.o: %.cc
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] SORCE_DATE_EPOCH_TEX_PRIMITIVES

2016-05-15 Thread Alexis Bienvenüe
Hi.

The support of SOURCE_DATE_EPOCH added in pdftex/dvipdfm-x is great, and
does a very good job at building reproducible binary software packages.
SOURCE_DATE_EPOCH allows to fix the metadata timestamps in the compiled
document, and when SOURCE_DATE_EPOCH_TEX_PRIMITIVES is set to 1, the tex
primitives \year, \month etc. are also fixed, so that for example \today
refers to the date given by SOURCE_DATE_EPOCH.

The SOURCE_DATE_EPOCH environment variable is always used to get
reproducible builds, and in this context,
SOURCE_DATE_EPOCH_TEX_PRIMITIVES is always set to 1. This is fine when
working with tex documents only. However in a more general context, for
example debian reproducible build effort [1] (which has equivalents for
other distributions [2]), the need to set another tool-specific
environment variable has been criticized: adding such tool-specifc
envvar handling in general package-building tools is considered to be
endless and so discarded.

Therefore, I would like to support a solution where the default value of
SOURCE_DATE_EPOCH_TEX_PRIMITIVES is set to to 1. It has already been
mentioned by Norman Gray [3]. The only drawback is that we brake
backward-compatibility in a situation where someone already uses
SOURCE_DATE_EPOCH for another task, and don't set
SOURCE_DATE_EPOCH_TEX_PRIMITIVES. In this situation, the default value 0
of SOURCE_DATE_EPOCH_TEX_PRIMITIVES allows this user to get the same
content in the compiled document. I do think this situation is very
unlikely.

Another solution is to drop SOURCE_DATE_EPOCH_TEX_PRIMITIVES as if it is
always set to 1, but I understand that it has to be kept if someone
thinks it can be useful.

Whatever will be your answer, I thank you again for your welcome
regarding reproducibility questions.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds/
[2] https://reproducible-builds.org/
[3] https://www.tug.org/pipermail/tex-k/2016-May/002703.html

___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#824183: texlive-bin: please set default value of SOURCE_DATE_EPOCH_TEX_PRIMITIVES to 1

2016-05-13 Thread Alexis Bienvenüe
Source: texlive-bin
Version: 2016.20160512.41045-1
Severity: wishlist
Tags: upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

Extended support of SOURCE_DATE_EPOCH in TL2016 does a great job for
reproducibility [1]. However, setting a tool-specific environment
variable as SOURCE_DATE_EPOCH_TEX_PRIMITIVES from dpkg-buildpackage is
not possible.
I would suggest to set the default value of
SOURCE_DATE_EPOCH_TEX_PRIMITIVES to 1 instead of 0 in pdftex.

I think SOURCE_DATE_EPOCH is most often used to build reproducible
packages, and in this case the user always need
SOURCE_DATE_EPOCH_TEX_PRIMITIVES=1.
Also, SOURCE_DATE_EPOCH_TEX_PRIMITIVES=1 makes the dates in the
timestamps and in the document coherent.

Regards,
Alexis Bienvenüe.

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

___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#824050: emacs24: please make autoloads files reproducible

2016-05-11 Thread Alexis Bienvenüe
Source: emacs24
Version: 24.5+1-6
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

autoloads files embed a timestamp. To get a reproducible build [1] for
software packages that build-depend on emacs (including emacs24), it
would be great to make this timestamp honoring the SOURCE_DATE_EPOCH
environment variable [2], that is set to the last debian/changelog entry
date when building binary debian packages.

Please find attached a proposed patch for this.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds/
[2] https://reproducible-builds.org/specs/source-date-epoch/

Description: Make autoloads honour SOURCE_DATE_EPOCH
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: emacs24-24.5+1/lisp/emacs-lisp/autoload.el
===
--- emacs24-24.5+1.orig/lisp/emacs-lisp/autoload.el
+++ emacs24-24.5+1/lisp/emacs-lisp/autoload.el
@@ -604,7 +604,10 @@ Return non-nil if and only if FILE adds
   ;; We'd really want to just use
   ;; `emacs-internal' instead.
   nil nil 'emacs-mule-unix)
-   (nth 5 (file-attributes relfile
+   (let ((source-date-epoch (getenv "SOURCE_DATE_EPOCH")))
+ (if (null source-date-epoch)
+ (nth 5 (file-attributes relfile))
+   (seconds-to-time (string-to-number source-date-epoch))
 (insert " Generated autoloads from " relfile "\n")))
 (insert generate-autoload-section-trailer
   (message "Generating autoloads for %s...done" file))
@@ -740,7 +743,10 @@ write its autoloads into the specified f
 		  t files-re))
 			   dirs)))
  (done ())
-	 (this-time (current-time))
+	 (this-time (let ((source-date-epoch (getenv "SOURCE_DATE_EPOCH")))
+  (if (null source-date-epoch)
+  (current-time)
+(seconds-to-time (string-to-number source-date-epoch)
  ;; Files with no autoload cookies or whose autoloads go to other
  ;; files because of file-local autoload-generated-file settings.
 	 (no-autoloads nil)
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#824049: emacs24: please make start value of gensym-counter reproducible

2016-05-11 Thread Alexis Bienvenüe
Source: emacs24
Version: 24.5+1-6
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

When bytecompiling elisp files, cl-gensym-counter is initialized from
the current time, leading to unreproducible results. This can affect
reproducibility [1] of some software packages that build-depend on emacs
(and of emacs24 itself). I suggest to set the initial value of
cl-gensym-counter from the names of the files to be compiled (see
proposed patch).

Test-case:

cd /tmp
wget
https://sources.debian.net/data/main/e/emacs24/24.5+1-5/lisp/org/ob-C.el
emacs -batch --no-site-file --no-site-lisp -f batch-byte-compile ob-C.el
cp ob-C.elc ob-C.elc.0
sleep 1
emacs -batch --no-site-file --no-site-lisp -f batch-byte-compile ob-C.el
diff ob-C.elc ob-C.elc.0

The two files should be the same, but they differ (with different #:Gnnn
values)

Regards,
Alexis Bienvenüe.

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

Description: Reproducible gensym-counter
 When calling batch-byte-compile, set the start value of gensym-counter from
 a hash of the command-line arguments instead of time, so that the compiled
 files can be reproducible.
Author: Alexis Bienvenüe <p...@passoire.fr>

Index: emacs24-24.5+1/lisp/emacs-lisp/bytecomp.el
===
--- emacs24-24.5+1.orig/lisp/emacs-lisp/bytecomp.el
+++ emacs24-24.5+1/lisp/emacs-lisp/bytecomp.el
@@ -4625,6 +4625,10 @@ already up-to-date."
   (if (not noninteractive)
   (error "`batch-byte-compile' is to be used only with -batch"))
   (let ((error nil))
+;; Init gensym-counter from command-line arguments instead of
+;; time, to get a reproducible result.
+(cl-init-gensym-counter
+ (mapconcat 'identity (sort command-line-args-left 'string<) ";"))
 (while command-line-args-left
   (if (file-directory-p (expand-file-name (car command-line-args-left)))
 	  ;; Directory as argument.
Index: emacs24-24.5+1/lisp/emacs-lisp/cl-lib.el
===
--- emacs24-24.5+1.orig/lisp/emacs-lisp/cl-lib.el
+++ emacs24-24.5+1/lisp/emacs-lisp/cl-lib.el
@@ -261,6 +261,12 @@ so that they are registered at compile-t
 
 (defvar cl--gensym-counter (* (logand (cl--random-time) 1023) 100))
 
+(defun cl-init-gensym-counter (string)
+  "Set gensym-counter from a hash of string."
+  (setq cl--gensym-counter (* (logand
+   (string-to-number (substring (secure-hash 'sha1 string) -3) 16)
+   1023) 100)))
+
 
 ;;; Numbers.
 
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#824037: courier: please make the build reproducible (environment, timestamps)

2016-05-11 Thread Alexis Bienvenüe
Source: courier
Version: 0.76.1-1
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: environment timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch honours the SOURCE_DATE_EPOCH environment variable
[2] to set the imapd version string from the last debian/changelog date,
and sets the shell to /bin/sh whatever SHELL is.
Once applied, courier can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/

diff -Nru courier-0.76.1/debian/changelog courier-0.76.1/debian/changelog
--- courier-0.76.1/debian/changelog	2016-05-09 15:26:49.0 +0200
+++ courier-0.76.1/debian/changelog	2016-05-11 15:23:45.0 +0200
@@ -1,3 +1,10 @@
+courier (0.76.1-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Always use /bin/sh as SHELL, to get reproducible build.
+  * Use SOURCE_DATE_EPOCH for imapd version string.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 11 May 2016 15:23:44 +0200
+
 courier (0.76.1-1) unstable; urgency=medium
 
   * Imported Upstream version 0.76.1
diff -Nru courier-0.76.1/debian/patches/0026-use-SOURCE_DATE_EPOCH-for-imapd-version.patch courier-0.76.1/debian/patches/0026-use-SOURCE_DATE_EPOCH-for-imapd-version.patch
--- courier-0.76.1/debian/patches/0026-use-SOURCE_DATE_EPOCH-for-imapd-version.patch	1970-01-01 01:00:00.0 +0100
+++ courier-0.76.1/debian/patches/0026-use-SOURCE_DATE_EPOCH-for-imapd-version.patch	2016-05-11 14:32:30.0 +0200
@@ -0,0 +1,20 @@
+Description: Use SOURCE_DATE_EPOCH for imapd version
+ Use the environment variable SOURCE_DATE_EPOCH (if set) for imapd
+ PROGRAMVERSION, to make the build reproducible.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- courier-0.76.1.orig/libs/imap/configure.ac
 courier-0.76.1/libs/imap/configure.ac
+@@ -340,8 +340,9 @@ courier)
+ 	;;
+ esac
+ 
+-date=`date`
+-AC_DEFINE_UNQUOTED(PROGRAMVERSION, "$package/${target_cpu}-${target_vendor}-${target_os}/$date",
++SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
++BUILD_DATE=$(date -u -d "@$SOURCE_DATE_EPOCH" "+%F %R" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+%F %R" 2>/dev/null || date -u "+%F %R")
++AC_DEFINE_UNQUOTED(PROGRAMVERSION, "$package/${target_cpu}-${target_vendor}-${target_os}/$BUILD_DATE",
+ 		   [ Source code version ])
+ 
+ AC_ARG_WITH(trashquota, [ --with-trashquota   Count deleted messages as part of the quota],
diff -Nru courier-0.76.1/debian/patches/series courier-0.76.1/debian/patches/series
--- courier-0.76.1/debian/patches/series	2016-05-09 15:26:49.0 +0200
+++ courier-0.76.1/debian/patches/series	2016-05-11 14:30:51.0 +0200
@@ -22,3 +22,4 @@
 0022-mkesmtpdcert-should-use-certsdir.patch
 0024-Fix-missing-AC_PROG_SYSCONFTOOL-macro-on-autoreconf.patch
 0025-Dynamically-resolver-mailuid-and-mailgid-on-runtime-.patch
+0026-use-SOURCE_DATE_EPOCH-for-imapd-version.patch
diff -Nru courier-0.76.1/debian/rules courier-0.76.1/debian/rules
--- courier-0.76.1/debian/rules	2016-05-09 15:26:49.0 +0200
+++ courier-0.76.1/debian/rules	2016-05-11 11:03:30.0 +0200
@@ -83,7 +83,7 @@
 		--disable-root-check
 
 override_dh_auto_configure:
-	dh_auto_configure -- $(COMMON_CONFIGURE)
+	CONFIG_SHELL=/bin/sh dh_auto_configure -- $(COMMON_CONFIGURE)
 
 override_dh_auto_install:
 	INSTALL_IGNORE_UMASK=1 dh_auto_install -- install
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

Re: [Reproducible-builds] getting dpkg ready for reproducible sid

2016-05-09 Thread Alexis Bienvenüe
Hi.

Le 09/05/2016 14:26, Holger Levsen a écrit :
> ddce83d dpkg-buildpackage: Preset build timestamp to latest changelog entry
>
> Are there any other changes needed in dpkg for Reproducible builds of Debian?

Maybe it should be good to also have (to be merged with ddce83d)

if (! exists($ENV{SOURCE_DATE_EPOCH_TEX_PRIMITIVES})) {
$ENV{SOURCE_DATE_EPOCH_TEX_PRIMITIVES} = 1;
}

in dpkg-buildpackage (see summary and pointers in
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=75#25)

This is not essential with current version of texlive-bin in our
reproducible toolchain, that backports TL2016 patches to TL2015
currently packaged (without using SOURCE_DATE_EPOCH_TEX_PRIMITIVES), but
it will be meaningful when TL2016 will be released and reach debian.

Regards,
Alexis Bienvenüe.



___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds


[Reproducible-builds] Bug#823824: asymptote: please make the build reproducible (timestamps)

2016-05-09 Thread Alexis Bienvenüe
Source: asymptote
Version: 2.37.real-1
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

While working on the `€œreproducible builds'€ effort [1], we have noticed
that 'asymptote' could not be built reproducibly.

The attached patch honours the SOURCE_DATE_EPOCH environment
variable [2] to get a reproducible documentation date from the last
debian changelog entry.
Once applied, asymptote can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/



diff -Nru asymptote-2.37.real/debian/changelog asymptote-2.37.real/debian/changelog
--- asymptote-2.37.real/debian/changelog	2016-03-15 03:44:39.0 +0100
+++ asymptote-2.37.real/debian/changelog	2016-05-09 10:07:40.0 +0200
@@ -1,3 +1,9 @@
+asymptote (2.37.real-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Honour SOURCE_DATE_EPOCH, to make the build reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 09 May 2016 10:07:40 +0200
+
 asymptote (2.37.real-1) unstable; urgency=medium
 
   * Imported Upstream version 2.37.real - the previous 2.37 was only
diff -Nru asymptote-2.37.real/debian/patches/honour-source-date-epoch asymptote-2.37.real/debian/patches/honour-source-date-epoch
--- asymptote-2.37.real/debian/patches/honour-source-date-epoch	1970-01-01 01:00:00.0 +0100
+++ asymptote-2.37.real/debian/patches/honour-source-date-epoch	2016-05-09 11:54:20.0 +0200
@@ -0,0 +1,62 @@
+Description: Honour SOURCE_DATE_EPOCH.
+ Honour the SOURCE_DATE_EPOCH environment variable to get documentation date
+ from last debian changelog entry.
+ This makes the build reproducible.
+ See https://reproducible-builds.org/specs/source-date-epoch/.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: asymptote-2.37.real/doc/FAQ/m-html.pl
+===
+--- asymptote-2.37.real.orig/doc/FAQ/m-html.pl
 asymptote-2.37.real/doc/FAQ/m-html.pl
+@@ -34,8 +34,8 @@ sub html_init {
+ print HTML "\n";
+ $html_needpara= -1;
+ $html_end='';
+-chop($html_date=`date '+%d %B %Y'`);
+-chop($html_year=`date '+%Y'`);
++$html_date=time2str("%d %B %Y", $ENV{SOURCE_DATE_EPOCH} || time, "UTC");
++$html_year=time2str("%Y", $ENV{SOURCE_DATE_EPOCH} || time, "UTC");
+ }
+ 
+ sub html_startup {
+Index: asymptote-2.37.real/doc/FAQ/m-lout.pl
+===
+--- asymptote-2.37.real.orig/doc/FAQ/m-lout.pl
 asymptote-2.37.real/doc/FAQ/m-lout.pl
+@@ -23,7 +23,7 @@
+ 
+ sub lout_init {
+ open(LOUT,">$prefix.lout");
+-chop($dprint= `date '+%d %B %Y'`);
++$dprint = time2str("%d %B %Y", $ENV{SOURCE_DATE_EPOCH} || time, "UTC");
+ $dprint =~ s/^0//;
+ }
+ 
+Index: asymptote-2.37.real/doc/FAQ/bfnnconv.pl
+===
+--- asymptote-2.37.real.orig/doc/FAQ/bfnnconv.pl
 asymptote-2.37.real/doc/FAQ/bfnnconv.pl
+@@ -21,6 +21,8 @@
+ # by the GPL.  However, I would appreciate it if you credited me if
+ # appropriate in any documents you format using BFNN.)
+ 
++use Date::Format;
++
+ @outputs=('ascii','info','html');
+ 
+ while ($ARGV[0] =~ m/^\-/) {
+@@ -135,7 +137,12 @@ while (<>) {
+ m/([^\\])\`/ || warn "`$_'";
+ $_= $';
+ $cmd= $`.$1;
+-$it= `$cmd`; chop $it;
++if($cmd =~ /date [\"\']\+(.*?)[\"\']/) {
++  my $format=$1;
++  $it=time2str($format, $ENV{SOURCE_DATE_EPOCH} || time, "UTC");
++} else {
++  $it= `$cmd`; chop $it;
++}
+ print $fh $it;
+ }
+ print $fh $_;
diff -Nru asymptote-2.37.real/debian/patches/series asymptote-2.37.real/debian/patches/series
--- asymptote-2.37.real/debian/patches/series	2016-03-15 03:44:39.0 +0100
+++ asymptote-2.37.real/debian/patches/series	2016-05-09 10:04:55.0 +0200
@@ -4,3 +4,4 @@
 #old-gs-use-epswrite
 #upstream-gsl2
 #upstream-fix-mips-build-failure
+honour-source-date-epoch
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#823797: openclonk: please make the build reproducible (timestamps)

2016-05-09 Thread Alexis Bienvenüe
Source: openclonk
Version: 7.0-3
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

While working on the `€œreproducible builds'€ effort [1], we have noticed
that 'openclonk' could not be built reproducibly.

The attached patch honours the SOURCE_DATE_EPOCH environment
variable [2] to get a reproducible copyright year from the last debian
changelog entry.
Once applied, openclonk can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/


diff -Nru openclonk-7.0/debian/changelog openclonk-7.0/debian/changelog
--- openclonk-7.0/debian/changelog	2016-02-14 12:26:56.0 +0100
+++ openclonk-7.0/debian/changelog	2016-05-04 11:15:38.0 +0200
@@ -1,3 +1,9 @@
+openclonk (7.0-3.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Honour SOURCE_DATE_EPOCH for the copyright year.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 04 May 2016 11:15:38 +0200
+
 openclonk (7.0-3) unstable; urgency=medium
 
   * Ship Music.ocg's content unpacked.
diff -Nru openclonk-7.0/debian/patches/honour_SOURCE_DATE_EPOCH.patch openclonk-7.0/debian/patches/honour_SOURCE_DATE_EPOCH.patch
--- openclonk-7.0/debian/patches/honour_SOURCE_DATE_EPOCH.patch	1970-01-01 01:00:00.0 +0100
+++ openclonk-7.0/debian/patches/honour_SOURCE_DATE_EPOCH.patch	2016-05-04 11:14:54.0 +0200
@@ -0,0 +1,24 @@
+Description: Honour SOURCE_DATE_EPOCH
+ Honour the SOURCE_DATE_EPOCH environment variable to get the copyright year,
+ to make the build reproducible.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- openclonk-7.0.orig/cmake/Version.cmake
 openclonk-7.0/cmake/Version.cmake
+@@ -24,7 +24,14 @@ git_get_changeset_id(C4REVISION)
+ 
+ 
+ IF(CMAKE_HOST_UNIX)
+-	EXECUTE_PROCESS(COMMAND "date" "+%Y" OUTPUT_VARIABLE DATE)
++if (DEFINED ENV{SOURCE_DATE_EPOCH})
++  EXECUTE_PROCESS(
++COMMAND "date" "-u" "-d" "@$ENV{SOURCE_DATE_EPOCH}" "+%Y"
++OUTPUT_VARIABLE DATE
++OUTPUT_STRIP_TRAILING_WHITESPACE)
++else ()
++  EXECUTE_PROCESS(COMMAND "date" "+%Y" OUTPUT_VARIABLE DATE)
++endif ()
+ ELSEIF(CMAKE_HOST_WIN32)
+ 	EXECUTE_PROCESS(COMMAND "cscript.exe" "//nologo" "${CMAKE_CURRENT_SOURCE_DIR}/tools/get_current_year.vbs" OUTPUT_VARIABLE DATE)
+ ENDIF()
diff -Nru openclonk-7.0/debian/patches/series openclonk-7.0/debian/patches/series
--- openclonk-7.0/debian/patches/series	2016-02-14 12:26:08.0 +0100
+++ openclonk-7.0/debian/patches/series	2016-05-04 11:13:40.0 +0200
@@ -1 +1,2 @@
 do-not-pack-music-ocg.patch
+honour_SOURCE_DATE_EPOCH.patch
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] package uploaded to our repo

2016-05-06 Thread Alexis Bienvenüe
texlive-bin_2015.20160222.37495-1.0~reproducible2.dsc has just been uploaded to 
https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchain

___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds


Re: [Reproducible-builds] LaTeX's \today

2016-05-04 Thread Alexis Bienvenüe
Hi.

Here is the follow-up for the luatex side:

  https://mailman.ntg.nl/pipermail/dev-luatex/2016-May/005700.html

Please have a look at our discussion to correct me if I'm wrong and/or
participate!

Alexis.

___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds


[Reproducible-builds] Bug#823393: kdbg: mixed encoding in changelog

2016-05-04 Thread Alexis Bienvenüe
Source: kdbg
Version: 2.5.5-1
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

The ChangeLog-pre-2.2.0 has mixed latin1/UTF-8 encoding. With some
locales, the grep call used to process it uses binary mode, returning
"Binary file matches" instead of the filtered content.

Please find a patch that fixes those issues, allowing reproducible build
[1,2].

Regards,
Alexis Bienvenüe.

 [1] https://wiki.debian.org/ReproducibleBuilds
 [2] https://tests.reproducible-builds.org/rb-pkg/unstable/amd64/kdbg.html



diff -Nru kdbg-2.5.5/debian/changelog kdbg-2.5.5/debian/changelog
--- kdbg-2.5.5/debian/changelog	2016-04-19 06:23:14.0 +0200
+++ kdbg-2.5.5/debian/changelog	2016-05-04 10:05:13.0 +0200
@@ -1,3 +1,9 @@
+kdbg (2.5.5-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Fix changelog encoding.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 04 May 2016 09:31:26 +0200
+
 kdbg (2.5.5-1) unstable; urgency=medium
 
   * QA upload.
diff -Nru kdbg-2.5.5/debian/patches/11_fix_changelog_encoding.patch kdbg-2.5.5/debian/patches/11_fix_changelog_encoding.patch
--- kdbg-2.5.5/debian/patches/11_fix_changelog_encoding.patch	1970-01-01 01:00:00.0 +0100
+++ kdbg-2.5.5/debian/patches/11_fix_changelog_encoding.patch	2016-05-04 10:07:18.0 +0200
@@ -0,0 +1,26 @@
+Description: Fix changelog encoding
+ Set ChangeLog-pre-2.2.0 encoding to UTF-8 (it was mixed latin1/UTF-8)
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: kdbg-2.5.5/ChangeLog-pre-2.2.0
+===
+--- kdbg-2.5.5.orig/ChangeLog-pre-2.2.0
 kdbg-2.5.5/ChangeLog-pre-2.2.0
+@@ -287,7 +287,7 @@ Version 1.1.1
+ 	command (required if you are debugging remote devices), the
+ 	terminal emulation needed for the program.
+ 
+-Verison 1.1.0
++Version 1.1.0
+ 
+ 	Use docking windows thanks to Judin Max <novapr...@mtu-net.ru>.
+ 
+@@ -299,7 +299,7 @@ Verison 1.1.0
+ 	Berndt Josef Wulf <w...@ping.net.au>.
+ 
+ 	There's now a Swedish translation thanks to
+-	Örjan Lindbergh <orjan.lindbe...@telia.com>.
++	Örjan Lindbergh <orjan.lindbe...@telia.com>.
+ 
+ Version 1.0.2
+ 
diff -Nru kdbg-2.5.5/debian/patches/series kdbg-2.5.5/debian/patches/series
--- kdbg-2.5.5/debian/patches/series	2016-03-16 23:32:05.0 +0100
+++ kdbg-2.5.5/debian/patches/series	2016-05-04 10:01:56.0 +0200
@@ -1 +1,2 @@
 10_fix_check_include_files.patch
+11_fix_changelog_encoding.patch
diff -Nru kdbg-2.5.5/debian/rules kdbg-2.5.5/debian/rules
--- kdbg-2.5.5/debian/rules	2016-04-10 05:23:26.0 +0200
+++ kdbg-2.5.5/debian/rules	2016-05-04 09:30:22.0 +0200
@@ -8,5 +8,5 @@
 
 override_dh_installchangelogs:
 	cat $$(ls ReleaseNotes-* | sort -Vr) ChangeLog-pre-2.2.0 | \
-	   egrep -v '(KDbg Release Notes for|)' > debian/upstream.changes
+	   egrep -av '(KDbg Release Notes for|)' > debian/upstream.changes
 	dh_installchangelogs debian/upstream.changes
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

Re: [Reproducible-builds] LaTeX's \today

2016-05-03 Thread Alexis Bienvenüe
Le 02/05/2016 10:56, Holger Levsen a écrit :
>> I (very awkwardly) started something at
>> https://www.tug.org/pipermail/tex-live/2016-May/038339.html
>  
> seems you got useful feedback there and your work was generally found
> useful, yay! Please follow up on those suggestsions there!

Here is the follow-up for the pdftex side:

  https://www.tug.org/pipermail/tex-k/2016-May/002691.html

Please have a look at our discussion to correct me if I'm wrong and/or
participate!

Alexis.



___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds


[Reproducible-builds] Bug#823241: unhide: please make the build reproducible (fileordering)

2016-05-02 Thread Alexis Bienvenüe
Source: unhide
Version: 20130526-1
Severity: wishlist
Tags: patch
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 'unhide' could not be built reproducibly.

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

Regards,
Alexis Bienvenüe.

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

diff -Nru unhide-20130526/debian/changelog unhide-20130526/debian/changelog
--- unhide-20130526/debian/changelog	2015-11-02 23:51:16.0 +0100
+++ unhide-20130526/debian/changelog	2016-05-02 17:57:58.0 +0200
@@ -1,3 +1,9 @@
+unhide (20130526-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Sort c source files to pass to gcc, to get reproducible build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 02 May 2016 17:57:58 +0200
+
 unhide (20130526-1) unstable; urgency=medium
 
   * Team upload.
diff -Nru unhide-20130526/debian/rules unhide-20130526/debian/rules
--- unhide-20130526/debian/rules	2015-11-02 20:44:36.0 +0100
+++ unhide-20130526/debian/rules	2016-05-02 17:57:11.0 +0200
@@ -21,7 +21,7 @@
 	ln man/es/unhide.8 man/unhide.es.8
 
 override_dh_auto_build:
-	gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -Wall -O2 -pthread -o unhide-linux unhide-linux*.c unhide-output.c
+	gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -Wall -O2 -pthread -o unhide-linux $(sort $(wildcard unhide-linux*.c)) unhide-output.c
 	gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -Wall -O2 -o unhide-tcp unhide-tcp.c unhide-tcp-fast.c unhide-output.c
 	gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -Wall -O2 -o unhide_rb unhide_rb.c
-	gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o unhide-posix unhide-posix.c
\ Pas de fin de ligne à la fin du fichier
+	gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o unhide-posix unhide-posix.c
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

Re: [Reproducible-builds] LaTeX's \today

2016-05-02 Thread Alexis Bienvenüe
Hi Holger.

Le 16/04/2016 20:59, Holger Levsen a écrit :
>> Can we consider turning LaTeX into using SOURCE_DATE_EPOCH (when
>> available) as \today's epoch?
> 
> to make sure this aint forgotten: we've discussed this sufficiently on irc
> and it's clear what needs been doing here, it "just" needs doing, correct?

I (very awkwardly) started something at
https://www.tug.org/pipermail/tex-live/2016-May/038339.html

I can also prepare a new version from
texlive-bin_2015.20160222.37495-1.0~reproducible1 if you think it should
be relevant to test in the toolchain.

Regards,
Alexis Bienvenüe.



___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds


[Reproducible-builds] Bug#822963: htop: please make the build reproducible (timestamps)

2016-04-29 Thread Alexis Bienvenüe
Source: htop
Version: 2.0.1-1
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch honours the SOURCE_DATE_EPOCH environment
variable [2] to get a reproducible copyright year.
Once applied, htop can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/

diff -Nru htop-2.0.1/debian/changelog htop-2.0.1/debian/changelog
--- htop-2.0.1/debian/changelog	2016-04-14 10:26:00.0 +0200
+++ htop-2.0.1/debian/changelog	2016-04-29 14:59:30.0 +0200
@@ -1,3 +1,9 @@
+htop (2.0.1-1.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Honour SOURCE_DATE_EPOCH for copyright year
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Fri, 29 Apr 2016 14:46:35 +0200
+
 htop (2.0.1-1) unstable; urgency=medium
 
   * New upstream release 2.0.1. (Closes: #814401, #783893, #774930)
diff -Nru htop-2.0.1/debian/patches/003-honour-source-date-epoch.patch htop-2.0.1/debian/patches/003-honour-source-date-epoch.patch
--- htop-2.0.1/debian/patches/003-honour-source-date-epoch.patch	1970-01-01 01:00:00.0 +0100
+++ htop-2.0.1/debian/patches/003-honour-source-date-epoch.patch	2016-04-29 14:55:47.0 +0200
@@ -0,0 +1,18 @@
+Description: Hounour SOURCE_DATE_EPOCH
+ Honour the SOURCE_DATE_EPOCH environment variable for copyright year.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: htop-2.0.1/configure.ac
+===
+--- htop-2.0.1.orig/configure.ac
 htop-2.0.1/configure.ac
+@@ -4,7 +4,8 @@
+ AC_PREREQ(2.65)
+ AC_INIT([htop],[2.0.1],[his...@gobolinux.org])
+ 
+-year=$(date +%Y)
++SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
++year=$(date -u -d "@$SOURCE_DATE_EPOCH" "+%Y" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+%Y" 2>/dev/null || date -u "+%Y")
+ 
+ # The following two lines are required by hwloc scripts
+ AC_USE_SYSTEM_EXTENSIONS
diff -Nru htop-2.0.1/debian/patches/series htop-2.0.1/debian/patches/series
--- htop-2.0.1/debian/patches/series	2016-04-14 10:22:00.0 +0200
+++ htop-2.0.1/debian/patches/series	2016-04-29 14:45:00.0 +0200
@@ -1,3 +1,4 @@
 001-lintian-warning-fix-man-typo.patch
 002-lintian-warning-fix-desktop-keywords.patch
 601-openvz-new-ctid-vpid.patch
+003-honour-source-date-epoch.patch
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#822948: shotwell: please make the build reproducible (timestamps, umask)

2016-04-29 Thread Alexis Bienvenüe
Source: shotwell
Version: 0.22.0-4
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps umask
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes date handling (tar needs an English date in
--mtime) and fixes files mode in the temp-source archive. Once
applied, shotwell can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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




diff -Nru shotwell-0.22.0/debian/changelog shotwell-0.22.0/debian/changelog
--- shotwell-0.22.0/debian/changelog	2016-03-21 13:15:42.0 +0100
+++ shotwell-0.22.0/debian/changelog	2016-04-29 11:10:27.0 +0200
@@ -1,3 +1,10 @@
+shotwell (0.22.0-4.0~reproducible1) UNRELEASED; urgency=medium
+
+  * Fix date handling for non-English locales
+  * Fix files mode in temp-source tarball
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Fri, 29 Apr 2016 08:57:37 +0200
+
 shotwell (0.22.0-4) unstable; urgency=medium
 
   * New debian/patches/0100-ios8.patch (Closes: #792016):
diff -Nru shotwell-0.22.0/debian/rules shotwell-0.22.0/debian/rules
--- shotwell-0.22.0/debian/rules	2015-11-03 11:57:14.0 +0100
+++ shotwell-0.22.0/debian/rules	2016-04-29 11:10:09.0 +0200
@@ -5,7 +5,7 @@
 export VALAFLAGS:=$(foreach w,$(CPPFLAGS) $(CFLAGS) $(LDFLAGS),-X $(w))
 
 CHDATE:=$(shell dpkg-parsechangelog --show-field=Date)
-B_DATE:=$(shell date -d "$(CHDATE)")
+B_DATE:=$(shell LC_ALL=C date --utc -d "$(CHDATE)")
 
 %:
 	dh $@
@@ -21,8 +21,7 @@
 	mkdir -p debian/shotwell-dbg/usr/share/doc/shotwell-dbg/temp-source
 	find -type f -name '*.c' -exec cp --parent '{}' debian/shotwell-dbg/usr/share/doc/shotwell-dbg/temp-source/ ';'
 	cd debian/shotwell-dbg/usr/share/doc/shotwell-dbg && \
-	find . -newermt '$(B_DATE)' -print0 | xargs -0r touch --no-dereference --date='$(B_DATE)' && \
-	tar --mtime="$(B_DATE)" -cJf temp-source.tar.xz temp-source
+	tar --mode=go=rX,u+rw,a-s --mtime="$(B_DATE)" -cJf temp-source.tar.xz temp-source
 	rm -fr debian/shotwell-dbg/usr/share/doc/shotwell-dbg/temp-source
 
 override_dh_installchangelogs:
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#822566: stk: please make the build reproducible (fileordering)

2016-04-25 Thread Alexis Bienvenüe
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.0 +0100
+++ stk-4.5.0/debian/changelog	2016-04-25 14:30:42.0 +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.0 +0100
+++ stk-4.5.0/debian/patches/0007-Sort-o-files	2016-04-25 14:59:52.0 +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

[Reproducible-builds] Bug#822561: xpa: please make the build reproducible (fileordering)

2016-04-25 Thread Alexis Bienvenüe
Source: xpa
Version: 2.1.17-1
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 'xpa' could not be built reproducibly.

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

Regards,
Alexis Bienvenüe.

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


diff -Nru xpa-2.1.17/debian/changelog xpa-2.1.17/debian/changelog
--- xpa-2.1.17/debian/changelog	2015-10-20 10:21:34.0 +0200
+++ xpa-2.1.17/debian/changelog	2016-04-25 13:14:48.0 +0200
@@ -1,3 +1,9 @@
+xpa (2.1.17-1.0~reproducible1) unstable; urgency=medium
+
+  * Build libs with fixed order *.o files, to ger reproducible build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 25 Apr 2016 13:14:48 +0200
+
 xpa (2.1.17-1) unstable; urgency=low
 
   * New upstream version
diff -Nru xpa-2.1.17/debian/patches/series xpa-2.1.17/debian/patches/series
--- xpa-2.1.17/debian/patches/series	2015-10-20 10:08:03.0 +0200
+++ xpa-2.1.17/debian/patches/series	2016-04-25 13:13:06.0 +0200
@@ -2,3 +2,4 @@
 fix_manpages.patch
 install_tclxpa.patch
 hardening.patch
+sort_o_files
diff -Nru xpa-2.1.17/debian/patches/sort_o_files xpa-2.1.17/debian/patches/sort_o_files
--- xpa-2.1.17/debian/patches/sort_o_files	1970-01-01 01:00:00.0 +0100
+++ xpa-2.1.17/debian/patches/sort_o_files	2016-04-25 13:14:03.0 +0200
@@ -0,0 +1,24 @@
+Description: Sort *.o files
+ Build libs with fixed order *.o files, to ger reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- xpa-2.1.17.orig/Makefile.in
 xpa-2.1.17/Makefile.in
+@@ -185,7 +185,7 @@ shlib:		$(LIB)
+ 		rm -f lib$(PACKAGE).tmp/xt*.o; \
+ 		rm -f lib$(PACKAGE).tmp/tcl*.o; \
+ 		CC='$(CC)' CXX=$(CXX) \
+-		./mklib -ldflags "$(LDFLAGS)" -o $(PACKAGE) lib$(PACKAGE).tmp/*.o; \
++		./mklib -ldflags "$(LDFLAGS)" -o $(PACKAGE) `LC_ALL=C ls lib$(PACKAGE).tmp/*.o`; \
+ 		rm -rf lib$(PACKAGE).tmp)
+ 
+ mingw-dll:	$(LIBOBJS)
+@@ -204,7 +204,7 @@ shtclxpa:	tclxpa
+ 		@(rm -rf $(PACKAGE)tmp; mkdir $(PACKAGE)tmp; \
+ 		(cd $(PACKAGE)tmp && ar x ../libtclxpa.a); \
+ 		CC='$(CC)' CXX='$(CXX)' \
+-		./mklib -ldflags "$(LDFLAGS)" -o tclxpa -L. -lxpa $(PACKAGE)tmp/*.o $(TCL_LIBS); \
++		./mklib -ldflags "$(LDFLAGS)" -o tclxpa -L. -lxpa `LC_ALL=C ls $(PACKAGE)tmp/*.o` $(TCL_LIBS); \
+ 		rm -rf $(PACKAGE)tmp; )
+ 
+ diff:
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#822197: sphinx: please remove memory addresses from generated python documentation

2016-04-21 Thread Alexis Bienvenüe
Source: sphinx
Version: 1.3.6-2
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org
Control: forwarded -1 https://github.com/sphinx-doc/sphinx/pull/2480

Dear Maintainer,

While working on the “reproducible builds” effort [1], we have noticed
that the documentation generated by sphinx can include the memory
address of some python objects that are used at build time. See for
example, in file
/usr/share/doc/python-kombu-doc/html/reference/kombu.transport.qpid.html
from package python-kombu-doc_3.0.35-1.1 :

  Transport.Connection.Channel.codecs = {'base64':
}

This memory address is irrelevant in the documentation, and prevents the
package building to be reproducible.

The attached patch strips these memory addresses, leading to better
reproducibility.

Regards,
Alexis Bienvenüe.

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


diff -Nru sphinx-1.3.6/debian/changelog sphinx-1.3.6/debian/changelog
--- sphinx-1.3.6/debian/changelog	2016-03-03 18:22:21.0 +0100
+++ sphinx-1.3.6/debian/changelog	2016-04-22 00:37:33.0 +0200
@@ -1,3 +1,9 @@
+sphinx (1.3.6-3) unstable; urgency=medium
+
+  * Strips memory addresses from python documentation
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Fri, 22 Apr 2016 00:37:33 +0200
+
 sphinx (1.3.6-2) unstable; urgency=medium
 
   * Use implementation of jstest from Iain Lane in hope it succeeds on
diff -Nru sphinx-1.3.6/debian/patches/remove_memaddress.patch sphinx-1.3.6/debian/patches/remove_memaddress.patch
--- sphinx-1.3.6/debian/patches/remove_memaddress.patch	1970-01-01 01:00:00.0 +0100
+++ sphinx-1.3.6/debian/patches/remove_memaddress.patch	2016-04-22 00:36:39.0 +0200
@@ -0,0 +1,36 @@
+Description: Removes memory addresses from generated documentation
+ Some modules have eg. functions in some default arguments values, so
+ that sphinx generates signatures with some memory addresses in it.
+ This strips thes addresses.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: sphinx-1.3.6/sphinx/domains/python.py
+===
+--- sphinx-1.3.6.orig/sphinx/domains/python.py
 sphinx-1.3.6/sphinx/domains/python.py
+@@ -34,6 +34,8 @@ py_sig_re = re.compile(
+   )? $   # and nothing more
+   ''', re.VERBOSE)
+ 
++# RE for memory address in variable description
++py_memaddr_re = re.compile(r' at 0x[0-9a-f]{4,}(?=>)')
+ 
+ def _pseudo_parse_arglist(signode, arglist):
+ """"Parse" a list of arguments separated by commas.
+@@ -62,6 +64,7 @@ def _pseudo_parse_arglist(signode, argli
+ ends_open += 1
+ argument = argument[:-1].strip()
+ if argument:
++argument = py_memaddr_re.sub('',argument)
+ stack[-1] += addnodes.desc_parameter(argument, argument)
+ while ends_open:
+ stack.append(addnodes.desc_optional())
+@@ -220,6 +223,8 @@ class PyObject(ObjectDescription):
+ if retann:
+ signode += addnodes.desc_returns(retann, retann)
+ if anno:
++if anno[0] == '=':
++anno = py_memaddr_re.sub('',anno)
+ signode += addnodes.desc_annotation(' ' + anno, ' ' + anno)
+ return fullname, name_prefix
+ 
diff -Nru sphinx-1.3.6/debian/patches/series sphinx-1.3.6/debian/patches/series
--- sphinx-1.3.6/debian/patches/series	2016-03-03 18:22:21.0 +0100
+++ sphinx-1.3.6/debian/patches/series	2016-04-22 00:34:39.0 +0200
@@ -7,3 +7,4 @@
 reproducible_inventory.diff
 reproducible_js_locale.diff
 reproducible_searchindex.diff
+remove_memaddress.patch
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820932: fim: please make the build reproducible (fileordering, timestamps, locale)

2016-04-13 Thread Alexis Bienvenüe
Source: fim
Version: 0.5~rc2-1
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: fileordering timestamps locale
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which files are joined in header
files, strips the build date from fim binary, makes the embeded vim2html
script honour the SOURCE_DATE_EPOCH environment variable when building
the documentation, and force language to be English when using bison to
make a grammar that is going to be parsed using English keywords. Once
applied, fim can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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





diff -Nru fim-0.5~rc2/debian/changelog fim-0.5~rc2/debian/changelog
--- fim-0.5~rc2/debian/changelog	2016-02-17 16:15:03.0 +0100
+++ fim-0.5~rc2/debian/changelog	2016-04-13 20:20:02.0 +0200
@@ -1,3 +1,13 @@
+fim (0.5~rc2-1.0~reproducible1) unstable; urgency=medium
+
+  * Make the build reproducible :
+- Set locale to C when sorting files
+- Strip build date from fim binary
+- makes embeded vim2html script honour SOURCE_DATE_EPOCH
+- fix language problem when parsing bison output
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Tue, 12 Apr 2016 10:56:22 +0200
+
 fim (0.5~rc2-1) unstable; urgency=medium
 
   * New upstream release snapshot (Closes: #814673).
diff -Nru fim-0.5~rc2/debian/patches/english_bison.patch fim-0.5~rc2/debian/patches/english_bison.patch
--- fim-0.5~rc2/debian/patches/english_bison.patch	1970-01-01 01:00:00.0 +0100
+++ fim-0.5~rc2/debian/patches/english_bison.patch	2016-04-13 19:16:05.0 +0200
@@ -0,0 +1,17 @@
+Description: Call bison with LC_ALL=C
+ If the current language is not English, the terms that bison outputs
+ in src/yacc.tab.output won't be recognized by the yacc2grammar.awk
+ script, and the file grammar.h won't be built correctly.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- fim-0.5~rc2.orig/src/Makefile.am
 fim-0.5~rc2/src/Makefile.am
+@@ -19,7 +19,7 @@ lex.yy.cc: lex.lex yacc.tab.cpp
+ 	$(SED) -i 's/^.*extern.*isatty.*int.*$$//g' $@
+ 
+ yacc.tab.hpp yacc.tab.cpp: yacc.ypp lex.lex
+-	$(YACC) $(YFLAGS) $< -o $@
++	LC_ALL=C $(YACC) $(YFLAGS) $< -o $@
+ 
+ FIM_LIB_OBJECTS = yacc.tab.o lex.yy.o
+ 
diff -Nru fim-0.5~rc2/debian/patches/series fim-0.5~rc2/debian/patches/series
--- fim-0.5~rc2/debian/patches/series	1970-01-01 01:00:00.0 +0100
+++ fim-0.5~rc2/debian/patches/series	2016-04-13 19:13:50.0 +0200
@@ -0,0 +1,4 @@
+sort_locale.patch
+strip_build_date.petch
+vim2html_SOURCE_DATE_EPOCH.patch
+english_bison.patch
diff -Nru fim-0.5~rc2/debian/patches/sort_locale.patch fim-0.5~rc2/debian/patches/sort_locale.patch
--- fim-0.5~rc2/debian/patches/sort_locale.patch	1970-01-01 01:00:00.0 +0100
+++ fim-0.5~rc2/debian/patches/sort_locale.patch	2016-04-12 17:56:23.0 +0200
@@ -0,0 +1,21 @@
+Description: Sort locale
+ Set sort locale to C, so that the order is always the same.
+ This helps reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- fim-0.5~rc2.orig/src/Makefile.am
 fim-0.5~rc2/src/Makefile.am
+@@ -46,10 +46,10 @@ SDLDevice.o: default_icon_byte_array.h
+ 
+ # in the following : for some freebsd oddity, i was forced to replace ..0-9_]\+ with ..0-9_]*
+ version.h:	../config.h
+-	$(GREP) define $< | $(GREP) FIM | $(SORT) | $(SED) 's/^#//g;s/define //g;s/^\([A-Za-z0-9_]*\).*$$/+\1  /g;s/^/\"/g;s/$$/\"/g' > $@
++	$(GREP) define $< | $(GREP) FIM | LC_ALL=C $(SORT) | $(SED) 's/^#//g;s/define //g;s/^\([A-Za-z0-9_]*\).*$$/+\1  /g;s/^/\"/g;s/$$/\"/g' > $@
+ 	$(ECHO) "\"\n\"" >> $@
+-	$(GREP) define $< | $(GREP) FIM.*'"' | $(SORT) | $(SED) 's/^#//g;s/define //g;s/^\([A-Za-z0-9_]*\) "\(.*\)"$$/"\1 = \\"\2\\"\\n"/g'   >> $@
+-	$(GREP) undef $< | $(GREP) FIM | $(SORT) | $(SED) 's/^#//g;s/.*undef //g;s/^\([A-Za-z0-9_]*\).\+$$/-\1  /g;s/^/\"/g;s/$$/\"/g' >> $@
++	$(GREP) define $< | $(GREP) FIM.*'"' | LC_ALL=C $(SORT) | $(SED) 's/^#//g;s/define //g;s/^\([A-Za-z0-9_]*\) "\(.*\)"$$/"\1 = \\"\2\\"\\n"/g'   >> $@
++	$(GREP) undef $< | $(GREP) FIM | LC_ALL=C $(SORT) | $(SED) 's/^#//g;s/.*undef //g;s/^\([A-Za-z0-9_]*\).\+$$/-\1  /g;s/^/\"/g;s/$$/\"/g' >> $@
+ 	$(ECHO)  '"\n'CXXFLAGS=$(CXXFLAGS)'\n"' >> $@
+ 
+ help.cpp: fim.h
diff -Nru fim-0.5~rc2/debian/patches/strip_build_date.petch fim-0.5~rc2/debian/patches/strip_build_date.petch
--- fim-0.5~rc2/debian/patches/strip_build_date.petch	1970-01-01 01:00:00.0 +0100
+++ fim-0.5~rc2/debian/patches/strip_build_date.petch	2016-04-12 17:56:23.0

[Reproducible-builds] Bug#820895: sphinx: please extend SOURCE_DATE_EPOCH support

2016-04-13 Thread Alexis Bienvenüe
Source: sphinx
Version: 1.3.6-2
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

While working on the “reproducible builds” effort [1], we have noticed
that, even though sphinx honours the SOURCE_DATE_EPOCH environment
variable [2], this support is still incomplete: default copyright year
and gettext don't use it.

Various packages (eg. fabric, guidata) that build-depend on sphinx use a
conf.py that sets the copyright year from current time, like

  copyright = u'2006-%s, Author' % time.strftime('%Y')

This also breaks reproducibility of the building process.

The attached patch extends the SOURCE_DATE_EPOCH support in copyright
year and gettext, and corrects copyright strings that does not
corresponds to SOURCE_DATE_EPOCH, so that affected packages can be built
reproducibly without any change.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/


diff -Nru sphinx-1.3.6/debian/changelog sphinx-1.3.6/debian/changelog
--- sphinx-1.3.6/debian/changelog	2016-03-03 18:22:21.0 +0100
+++ sphinx-1.3.6/debian/changelog	2016-04-13 14:05:28.0 +0200
@@ -1,3 +1,9 @@
+sphinx (1.3.6-2.0~reproducible1) unstable; urgency=medium
+
+  * Extends SOURCE_DATE_EPOCH support to copyright year.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 13 Apr 2016 09:45:47 +0200
+
 sphinx (1.3.6-2) unstable; urgency=medium
 
   * Use implementation of jstest from Iain Lane in hope it succeeds on
diff -Nru sphinx-1.3.6/debian/patches/correct_copyright_year_from_source_date_epoch.patch sphinx-1.3.6/debian/patches/correct_copyright_year_from_source_date_epoch.patch
--- sphinx-1.3.6/debian/patches/correct_copyright_year_from_source_date_epoch.patch	1970-01-01 01:00:00.0 +0100
+++ sphinx-1.3.6/debian/patches/correct_copyright_year_from_source_date_epoch.patch	2016-04-13 14:36:48.0 +0200
@@ -0,0 +1,45 @@
+Description: Correct copyright year from SOURCE_DATE_EPOCH
+ If the environment variable SOURCE_DATE_EPOCH is set, use it to correct
+ uncoherent copyright years that are set using strftime, which don't honour
+ SOURCE_DATE_EPOCH.
+ This helps reproducibility of packages that build-depends on sphinx.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: sphinx-1.3.6/sphinx/config.py
+===
+--- sphinx-1.3.6.orig/sphinx/config.py
 sphinx-1.3.6/sphinx/config.py
+@@ -10,14 +10,14 @@
+ """
+ 
+ import re
+-from os import path, environ
++from os import path, environ, getenv
+ import shlex
+ 
+ from six import PY3, iteritems, string_types, binary_type, integer_types
+ 
+ from sphinx.errors import ConfigError
+ from sphinx.locale import l_
+-from sphinx.util.osutil import make_filename, cd
++from sphinx.util.osutil import make_filename, cd, ustrftime
+ from sphinx.util.pycompat import execfile_
+ 
+ nonascii_re = re.compile(br'[\x80-\xff]')
+@@ -286,6 +286,16 @@ class Config(object):
+ self.setup = config.get('setup', None)
+ self.extensions = config.get('extensions', [])
+ 
++# correct values of copyright year that are not coherent with
++# the SOURCE_DATE_EPOCH environment variable:
++source_date_epoch = getenv('SOURCE_DATE_EPOCH')
++if source_date_epoch is not None:
++for k in ['copyright','epub_copyright']:
++if k in config:
++config[k] = re.sub('^((\d{4}-)?)(\d{4})(?=[ ,])',
++   '\g<1>%s' % ustrftime('%Y'),
++   config[k])
++
+ def check_types(self, warn):
+ # check all values for deviation from the default value's type, since
+ # that can result in TypeErrors all over the place
diff -Nru sphinx-1.3.6/debian/patches/series sphinx-1.3.6/debian/patches/series
--- sphinx-1.3.6/debian/patches/series	2016-03-03 18:22:21.0 +0100
+++ sphinx-1.3.6/debian/patches/series	2016-04-13 14:02:26.0 +0200
@@ -7,3 +7,4 @@
 reproducible_inventory.diff
 reproducible_js_locale.diff
 reproducible_searchindex.diff
+correct_copyright_year_from_source_date_epoch.patch
diff -Nru sphinx-1.3.6/debian/patches/source_date_epoch.diff sphinx-1.3.6/debian/patches/source_date_epoch.diff
--- sphinx-1.3.6/debian/patches/source_date_epoch.diff	2016-03-03 18:22:21.0 +0100
+++ sphinx-1.3.6/debian/patches/source_date_epoch.diff	2016-04-13 10:03:43.0 +0200
@@ -11,10 +11,10 @@
  sphinx/util/osutil.py | 15 +++
  1 file changed, 11 insertions(+), 4 deletions(-)
 
-diff --git a/sphinx/util/osutil.py b/sphinx/util/osutil.py
-index 70d5cf5..e1d29a9 100644
 a/sphinx/util/osutil.py
-+++ b/sphinx/util/osutil.py
+Index: sphinx-1.3.6/sphinx/util/osutil.py
+=

[Reproducible-builds] Bug#820869: pyexiv2: please make the build reproducible (timestamps)

2016-04-13 Thread Alexis Bienvenüe
Source: pyexiv2
Version: 0.3.2-8
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch honours the SOURCE_DATE_EPOCH environment variable
through the ustrftime function, to get a reproducible copyright year.
Once applied, pyexiv2 can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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




diff -Nru pyexiv2-0.3.2/debian/changelog pyexiv2-0.3.2/debian/changelog
--- pyexiv2-0.3.2/debian/changelog	2015-04-28 11:26:28.0 +0200
+++ pyexiv2-0.3.2/debian/changelog	2016-04-13 11:31:43.0 +0200
@@ -1,3 +1,10 @@
+pyexiv2 (0.3.2-8.0~reproducible1) unstable; urgency=medium
+
+  * Get copyright year from ustrftime for documentation, to make the build
+reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 13 Apr 2016 11:31:43 +0200
+
 pyexiv2 (0.3.2-8) unstable; urgency=medium
 
   * Adjust Vcs-Svn URL.
diff -Nru pyexiv2-0.3.2/debian/patches/series pyexiv2-0.3.2/debian/patches/series
--- pyexiv2-0.3.2/debian/patches/series	2015-04-28 11:22:29.0 +0200
+++ pyexiv2-0.3.2/debian/patches/series	2016-04-13 10:58:31.0 +0200
@@ -1 +1,2 @@
 remove-date.patch
+use_source_date_for_copyright.patch
diff -Nru pyexiv2-0.3.2/debian/patches/use_source_date_for_copyright.patch pyexiv2-0.3.2/debian/patches/use_source_date_for_copyright.patch
--- pyexiv2-0.3.2/debian/patches/use_source_date_for_copyright.patch	1970-01-01 01:00:00.0 +0100
+++ pyexiv2-0.3.2/debian/patches/use_source_date_for_copyright.patch	2016-04-13 11:00:34.0 +0200
@@ -0,0 +1,25 @@
+Description: Use source date for copyright year
+ To get copyright year, use ustrftime, which honours SOURCE_DATE_EPOCH.
+ This makes the build reproducible.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- pyexiv2-0.3.2.orig/doc/conf.py
 pyexiv2-0.3.2/doc/conf.py
+@@ -14,6 +14,7 @@
+ import sys, os
+ import time
+ import pyexiv2
++from sphinx.util.osutil import ustrftime
+ 
+ # If extensions (or modules to document with autodoc) are in another directory,
+ # add these directories to sys.path here. If the directory is relative to the
+@@ -40,7 +41,7 @@ master_doc = 'index'
+ 
+ # General information about the project.
+ project = u'pyexiv2'
+-copyright = u'2006-%s, Olivier Tilloy' % time.strftime('%Y')
++copyright = u'2006-%s, Olivier Tilloy' % ustrftime('%Y')
+ 
+ # The version info for the project you're documenting, acts as replacement for
+ # |version| and |release|, also used in various other places throughout the
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820815: freefem++: please make the build reproducible (fileordering, timestamps)

2016-04-12 Thread Alexis Bienvenüe
Source: freefem++
Version: 3.45-1
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: fileordering timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which files are included in the
edp files, and honours SOURCE_DATE_EPOCH [2] when using the build date.
Once applied, freefem++ can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
 [2]: https://reproducible-builds.org/specs/source-date-epoch/





diff -Nru freefem++-3.45/debian/changelog freefem++-3.45/debian/changelog
--- freefem++-3.45/debian/changelog	2016-03-19 23:24:48.0 +0100
+++ freefem++-3.45/debian/changelog	2016-04-12 19:10:09.0 +0200
@@ -1,3 +1,10 @@
+freefem++ (3.45-1.0~reproducible1) unstable; urgency=medium
+
+  * Set ls locale in Makefiles, for reproducible order.
+  * Honours SOURCE_DATE_EPOCH to date the build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Tue, 12 Apr 2016 19:10:09 +0200
+
 freefem++ (3.45-1) unstable; urgency=medium
 
   * Imported Upstream version 3.45
diff -Nru freefem++-3.45/debian/patches/build_date_from_SOURCE_DATE_EPOCH.patch freefem++-3.45/debian/patches/build_date_from_SOURCE_DATE_EPOCH.patch
--- freefem++-3.45/debian/patches/build_date_from_SOURCE_DATE_EPOCH.patch	1970-01-01 01:00:00.0 +0100
+++ freefem++-3.45/debian/patches/build_date_from_SOURCE_DATE_EPOCH.patch	2016-04-12 18:49:38.0 +0200
@@ -0,0 +1,55 @@
+Description: Get build date from SOURCE_DATE_EPOCH
+ Get build date from SOURCE_DATE_EPOCH (if set), to make the build
+ reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: freefem++-3.45/configure.ac
+===
+--- freefem++-3.45.orig/configure.ac
 freefem++-3.45/configure.ac
+@@ -128,8 +128,12 @@ m4_define([TOOL_DISABLE],
+ TOOL_PARAMETERS($1,$2,$3)
+ ])
+ 
++SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
++FF_DATE=$(date -u -d "@$SOURCE_DATE_EPOCH" "+%Y-%m-%d" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+%Y-%m-%d" 2>/dev/null || date -u "+%Y-%m-%d")
++AC_SUBST(FF_DATE,$FF_DATE)
++
+ ff_HOSTARCH_pastix=
+-echo "#  Build with freefem++ with ./configure " `date`  >$ff_where_lib_conf
++echo "#  Build with freefem++ with ./configure $FF_DATE"  >$ff_where_lib_conf
+ # To allow anonymous CVS version to contain a "./configure" and
+ # Makefiles
+ 
+@@ -600,7 +604,6 @@ ff_prefix_dir="${prefix}/lib/ff++/$VERSI
+ AC_MSG_CHECKING(prefix dir freefem++  )
+ AC_MSG_RESULT($ff_prefix_dir)
+ 
+-FF_DATE=`date`
+ AC_DEFINE_UNQUOTED(VersionFreeFemDate,"$FF_DATE",FreeFem++ build date)
+ AC_DEFINE_UNQUOTED(FF_PREFIX_DIR,"${ff_prefix_dir}",FreeFem prefix  dir)
+ AC_SUBST(ff_prefix_dir,$ff_prefix_dir)
+Index: freefem++-3.45/src/fflib/Makefile.am
+===
+--- freefem++-3.45.orig/src/fflib/Makefile.am
 freefem++-3.45/src/fflib/Makefile.am
+@@ -64,5 +64,5 @@ AM_CPPFLAGS=-I$(srcdir)/../lglib -I$(src
+ EXTRA_DIST=strversionnumber.m4
+ BUILT_SOURCES=strversionnumber.cpp
+ strversionnumber.cpp: $(libff_a_SOURCES2) ../../configure
+-	m4 -DVersionFreeFemDate="`date`" strversionnumber.m4 > $@
++	m4 -DVersionFreeFemDate="@FF_DATE@" strversionnumber.m4 > $@
+ FORCE:
+Index: freefem++-3.45/src/medit/Makefile.am
+===
+--- freefem++-3.45.orig/src/medit/Makefile.am
 freefem++-3.45/src/medit/Makefile.am
+@@ -17,7 +17,7 @@ LDADD=picking.$(OBJEXT) ../libMesh/libMe
+ AM_CPPFLAGS=-I$(srcdir)/../libMesh
+ BUILT_SOURCES=compil.date
+ compil.date: $(ffmedit_SOURCES)
+-	echo "#define COMPIL " '"' `date` '(with ff++ $(VERSION))''"' > compil.date
++	echo "#define COMPIL " '" @FF_DATE@ (with ff++ $(VERSION))"' > compil.date
+ #.PHONY: compil.date
+ 
+ # ALH - during a parallel make, we should make sure that picking.o is not used before being made by a different
diff -Nru freefem++-3.45/debian/patches/ls-locale.patch freefem++-3.45/debian/patches/ls-locale.patch
--- freefem++-3.45/debian/patches/ls-locale.patch	1970-01-01 01:00:00.0 +0100
+++ freefem++-3.45/debian/patches/ls-locale.patch	2016-04-12 17:57:07.0 +0200
@@ -0,0 +1,85 @@
+Description: Set ls locale to C
+ Set ls locale to C, so that the order is always the same, whatever the
+ current locale is. This makes the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- freefem++-3.45.orig/examples++-3d/Makefile.am
 freefem++-3.45/examples++-3d/Makefile.am
+@@ -16,7 +

[Reproducible-builds] Bug#820809: wsdl4j: please make the build reproducible (environment)

2016-04-12 Thread Alexis Bienvenüe
Source: wsdl4j
Version: 1.6.3-2
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch use a plain text representation of the copyright
character in the build.xml file, to avoid encoding issues with javadoc.
Once applied, wsdl4j can be built reproducibly in our current
experimental framework.

Regards,
Alexis Bienvenüe.

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






diff -Nru wsdl4j-1.6.3/debian/patches/javadoc_encoding.patch wsdl4j-1.6.3/debian/patches/javadoc_encoding.patch
--- wsdl4j-1.6.3/debian/patches/javadoc_encoding.patch	1970-01-01 01:00:00.0 +0100
+++ wsdl4j-1.6.3/debian/patches/javadoc_encoding.patch	2016-04-12 17:11:02.0 +0200
@@ -0,0 +1,18 @@
+Description: Fix javadoc encoding
+ Don't use UTF-8 characters in build.xml, to avoid encoding issues when
+ using javadoc and  make the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: wsdl4j-1.6.3/build.xml
+===
+--- wsdl4j-1.6.3.orig/build.xml
 wsdl4j-1.6.3/build.xml
+@@ -193,7 +193,7 @@ Author:
+  windowtitle="${Name} API"
+  doctitle="${Name}"
+  breakiterator="yes"
+- bottom="Copyright  ${year} IBM. All Rights Reserved."
++ bottom="Copyright (c) ${year} IBM. All Rights Reserved."
+ />
+   
+ 
diff -Nru wsdl4j-1.6.3/debian/patches/series wsdl4j-1.6.3/debian/patches/series
--- wsdl4j-1.6.3/debian/patches/series	1970-01-01 01:00:00.0 +0100
+++ wsdl4j-1.6.3/debian/patches/series	2016-04-12 16:27:06.0 +0200
@@ -0,0 +1 @@
+javadoc_encoding.patch
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820742: gmic: please make the build reproducible (timestamps)

2016-04-11 Thread Alexis Bienvenüe
Source: gmic
Version: 1.6.8-3
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch strips the build date from help messages. Once
applied, gmic can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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



diff -Nru gmic-1.6.8/debian/changelog gmic-1.6.8/debian/changelog
--- gmic-1.6.8/debian/changelog	2016-01-16 17:27:29.0 +0100
+++ gmic-1.6.8/debian/changelog	2016-04-11 23:07:20.0 +0200
@@ -1,3 +1,9 @@
+gmic (1.6.8-3.0~reproducible1) unstable; urgency=medium
+
+  * Strip build date from help output, to make the build reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 11 Apr 2016 23:07:20 +0200
+
 gmic (1.6.8-3) unstable; urgency=medium
 
   * [0e17dac] Add hardening flags.
diff -Nru gmic-1.6.8/debian/patches/series gmic-1.6.8/debian/patches/series
--- gmic-1.6.8/debian/patches/series	2016-01-16 17:27:29.0 +0100
+++ gmic-1.6.8/debian/patches/series	2016-04-11 23:05:34.0 +0200
@@ -1,2 +1,3 @@
 disable-optimization-in-upstream-makefile
 ldconfig-symlink-referencing-wrong-file
+strip_build_date
diff -Nru gmic-1.6.8/debian/patches/strip_build_date gmic-1.6.8/debian/patches/strip_build_date
--- gmic-1.6.8/debian/patches/strip_build_date	1970-01-01 01:00:00.0 +0100
+++ gmic-1.6.8/debian/patches/strip_build_date	2016-04-11 23:06:32.0 +0200
@@ -0,0 +1,27 @@
+Description: Strip build date
+ Strip build date and time from help outputs, to make the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- gmic-1.6.8.orig/src/CImg.h
 gmic-1.6.8/src/CImg.h
+@@ -5175,7 +5175,7 @@ namespace cimg_library_suffixed {
+ if (usage) {
+   std::fprintf(cimg::output(),"\n %s%s%s",cimg::t_red,cimg::basename(argv[0]),cimg::t_normal);
+   std::fprintf(cimg::output(),": %s",usage);
+-  std::fprintf(cimg::output()," (%s, %s)\n\n",__DATE__,__TIME__);
++  std::fprintf(cimg::output(),"\n\n");
+ }
+ if (defaut) std::fprintf(cimg::output(),"%s\n",defaut);
+   }
+@@ -5253,9 +5253,9 @@ namespace cimg_library_suffixed {
+\note Output is done on the default output stream.
+ **/
+ inline void info() {
+-  std::fprintf(cimg::output(),"\n %s%sCImg Library %u.%u.%u%s, compiled %s ( %s ) with the following flags:\n\n",
++  std::fprintf(cimg::output(),"\n %s%sCImg Library %u.%u.%u%s, compiled with the following flags:\n\n",
+cimg::t_red,cimg::t_bold,cimg_version/100,(cimg_version/10)%10,cimg_version%10,
+-   cimg::t_normal,__DATE__,__TIME__);
++   cimg::t_normal);
+ 
+   std::fprintf(cimg::output(),"  > Operating System:   %s%-13s%s %s('cimg_OS'=%d)%s\n",
+cimg::t_bold,
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820741: sim4: please make the build reproducible (fileordering)

2016-04-11 Thread Alexis Bienvenüe
Source: sim4
Version: 0.0.20121010-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 'sim4' could not be built reproducibly.

The attached patch fixes the order in which C files are compiled. Once
applied, sim4 can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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




diff -Nru sim4-0.0.20121010/debian/changelog sim4-0.0.20121010/debian/changelog
--- sim4-0.0.20121010/debian/changelog	2016-01-21 09:55:42.0 +0100
+++ sim4-0.0.20121010/debian/changelog	2016-04-12 00:08:43.0 +0200
@@ -1,3 +1,9 @@
+sim4 (0.0.20121010-2.0~reproducible1) unstable; urgency=medium
+
+  * Sort c files for reproducible build
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Tue, 12 Apr 2016 00:08:43 +0200
+
 sim4 (0.0.20121010-2) unstable; urgency=medium
 
   * Moved debian/upstream to debian/upstream/metadata
diff -Nru sim4-0.0.20121010/debian/patches/compilation_order.patch sim4-0.0.20121010/debian/patches/compilation_order.patch
--- sim4-0.0.20121010/debian/patches/compilation_order.patch	1970-01-01 01:00:00.0 +0100
+++ sim4-0.0.20121010/debian/patches/compilation_order.patch	2016-04-12 00:08:00.0 +0200
@@ -0,0 +1,14 @@
+Description: Compilation order
+ Sort c files for compilation, to make the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- sim4-0.0.20121010.orig/Makefile
 sim4-0.0.20121010/Makefile
+@@ -8,6 +8,6 @@ CFLAGS+=-g -O2 -Wall
+ LDLIBS=-lm
+  
+ sim4:
+-	$(CC) -o sim4 -I. $(CFLAGS) *.c $(LDLIBS) $(LDFLAGS)
++	$(CC) -o sim4 -I. $(CFLAGS) `LC_ALL=C ls *.c` $(LDLIBS) $(LDFLAGS)
+ clean:
+ 	rm -f sim4 *.o
diff -Nru sim4-0.0.20121010/debian/patches/series sim4-0.0.20121010/debian/patches/series
--- sim4-0.0.20121010/debian/patches/series	2013-09-12 11:00:31.0 +0200
+++ sim4-0.0.20121010/debian/patches/series	2016-04-12 00:06:59.0 +0200
@@ -1 +1,2 @@
 hardening.patch
+compilation_order.patch
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820684: fop: please make the build reproducible (username, hostname, timestamps, locale)

2016-04-11 Thread Alexis Bienvenüe
Source: fop
Version: 1:2.1-2
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: username hostname timestamps locale
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the encoding of documentation files, strips the
timestamp from the fop-ttfreader man page, and removes hostname,
username and OS info from MANIFEST files.
Once applied, fop can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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





diff -Nru fop-2.1/debian/changelog fop-2.1/debian/changelog
--- fop-2.1/debian/changelog	2016-02-15 08:56:48.0 +0100
+++ fop-2.1/debian/changelog	2016-04-11 13:51:45.0 +0200
@@ -1,3 +1,11 @@
+fop (1:2.1-2.0~reproducible1) unstable; urgency=medium
+
+  * Use d/changelog date for pod2man
+  * Strip user/host from MANIFEST
+  * Fix javadoc encoding
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 11 Apr 2016 11:48:50 +0200
+
 fop (1:2.1-2) unstable; urgency=medium
 
   [ Sylvestre Ledru ]
diff -Nru fop-2.1/debian/patches/javadoc_encoding.patch fop-2.1/debian/patches/javadoc_encoding.patch
--- fop-2.1/debian/patches/javadoc_encoding.patch	1970-01-01 01:00:00.0 +0100
+++ fop-2.1/debian/patches/javadoc_encoding.patch	2016-04-11 12:18:12.0 +0200
@@ -0,0 +1,16 @@
+Description: Set javadoc output encoding to UTF-8
+ Set javadoc output encoding to UTF-8, to make the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: fop-2.1/build.xml
+===
+--- fop-2.1.orig/build.xml
 fop-2.1/build.xml
+@@ -963,6 +963,7 @@ NOTE:
+   windowtitle="${Name} ${version} API"
+   doctitle="Apache Formatting Objects Processor (FOP)"
+   bottom="Copyright ${year} The Apache Software Foundation. All Rights Reserved."
++  encoding="UTF-8" docencoding="UTF-8" charset="UTF-8"
+   overview="${src.dir}/java/org/apache/fop/overview.html"
+   maxmemory="256M">
+   
diff -Nru fop-2.1/debian/patches/series fop-2.1/debian/patches/series
--- fop-2.1/debian/patches/series	2016-02-15 08:56:48.0 +0100
+++ fop-2.1/debian/patches/series	2016-04-11 12:07:35.0 +0200
@@ -2,3 +2,5 @@
 fixbuildxml.patch
 replace-sRGB-profile.patch
 hyph_stacksize.patch
+strip_user_host_from_manifest.patch
+javadoc_encoding.patch
diff -Nru fop-2.1/debian/patches/strip_user_host_from_manifest.patch fop-2.1/debian/patches/strip_user_host_from_manifest.patch
--- fop-2.1/debian/patches/strip_user_host_from_manifest.patch	1970-01-01 01:00:00.0 +0100
+++ fop-2.1/debian/patches/strip_user_host_from_manifest.patch	2016-04-11 11:25:09.0 +0200
@@ -0,0 +1,81 @@
+Description: Strip user and host from MANIFEST
+ Strip user, host and os variables from MANIFEST.MF, to make the build
+ reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- fop-2.1.orig/build.xml
 fop-2.1/build.xml
+@@ -461,7 +461,7 @@ list of possible build targets.
+ 
+ 
+ http://xmlgraphics.apache.org/fop/)"/>
+-
++
+   
+ 
+   
+@@ -483,7 +483,7 @@ list of possible build targets.
+ 
+   
+ 
+-
++
+ 
+   
+   
+@@ -508,7 +508,7 @@ list of possible build targets.
+ 
+ 
+   
+-
++
+   
+   
+ 
+@@ -638,7 +638,7 @@ list of possible build targets.
+ 
+ 
+ http://xmlgraphics.apache.org/fop/)"/>
+-
++
+   
+   
+ 
+@@ -673,7 +673,7 @@ list of possible build targets.
+ 
+ 
+ http://xmlgraphics.apache.org/fop/)"/>
+-
++
+   
+   
+ 
+@@ -1044,7 +1044,7 @@ NOTE:
+   
+ 
+   
+-
++
+   
+   
+   
+@@ -1348,7 +1348,7 @@ NOTE:
+ 
+ 
+   
+-
++
+   
+   
+ 
+--- fop-2.1.orig/examples/plan/build.xml
 fop-2.1/examples/plan/build.xml
+@@ -133,7 +133,7 @@
+ 
+ 
+ http://xmlgraphics.apache.org/fop/)"/>
+-
++
+ 
+ 
+   
diff -Nru fop-2.1/debian/rules fop-2.1/debian/rules
--- fop-2.1/debian/rules	2016-02-15 08:56:48.0 +0100
+++ fop-2.1/debian/rules	2016-04-11 11:28:53.0 +0200
@@ -37,7 +37,6 @@
 
 	pod2man --section=1 \
 		--release="Fop-TTFReader " \
-		--date="`date`" \
 		debian/fop-ttfreader.pod > build/fop-ttfreader.1
 
 install/fop-doc::
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820668: sawfish: please make the build reproducible (fileordering, timestamps, username, hostname)

2016-04-11 Thread Alexis Bienvenüe
Source: sawfish
Version: 1.11-2
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: fileordering timestamps username hostname
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the order in which files are included in the
theme tgz files, strips hostname and username from the config.h file,
and honours SOURCE_DATE_EPOCH when creating the config.h file. Once
applied, sawfish can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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




diff -Nru sawfish-1.11/debian/changelog sawfish-1.11/debian/changelog
--- sawfish-1.11/debian/changelog	2016-03-19 18:05:17.0 +0100
+++ sawfish-1.11/debian/changelog	2016-04-11 10:30:04.0 +0200
@@ -1,3 +1,10 @@
+sawfish (1:1.11-2.0~reproducible1) unstable; urgency=medium
+
+  * Removes timestamps, and fix files order, to make the build
+reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 11 Apr 2016 10:30:04 +0200
+
 sawfish (1:1.11-2) unstable; urgency=low
 
   * Upload to unstable.
diff -Nru sawfish-1.11/debian/patches/honours_SOURCE_DATE_EPOCH_for_build_h sawfish-1.11/debian/patches/honours_SOURCE_DATE_EPOCH_for_build_h
--- sawfish-1.11/debian/patches/honours_SOURCE_DATE_EPOCH_for_build_h	1970-01-01 01:00:00.0 +0100
+++ sawfish-1.11/debian/patches/honours_SOURCE_DATE_EPOCH_for_build_h	2016-04-11 10:27:07.0 +0200
@@ -0,0 +1,32 @@
+Description: Honours SOURCE_DATE_EPOCH for build.h
+ Honours SOURCE_DATE_EPOCH when building build.h, to get reproducible build.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- sawfish-1.11.orig/build-info
 sawfish-1.11/build-info
+@@ -20,8 +20,11 @@ localedir="$5"
+ sys_name="$HOSTNAME.$LOCALDOMAIN"
+ user_name="$LOGNAME"
+ 
+-build_date="`date +'%a %b %e %Y'`"
+-build_time="`date +'%T %Z'`"
++SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
++DATE_FMT="%Y-%m-%d"
++build_date=$(date -u -d "@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u "+$DATE_FMT")
++DATE_FMT="%T %Z"
++build_time=$(date -u -d "@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u "+$DATE_FMT")
+ 
+ cat >src/build.h <src/build.h <
 
-Index: sawfish.git/themes/Makefile.in
+Index: sawfish-1.11/themes/Makefile.in
 ===
 sawfish.git.orig/themes/Makefile.in	2016-02-07 14:01:21.138285458 +
-+++ sawfish.git/themes/Makefile.in	2016-02-08 20:39:18.072356084 +
+--- sawfish-1.11.orig/themes/Makefile.in
 sawfish-1.11/themes/Makefile.in
 @@ -48,7 +48,7 @@ install : all installdirs
  	  rm -rf $(DESTDIR)$(themedir)/$$d; \
  	  for f in $(srcdir)/$$d/*; do \
  	if [ $$f != $(srcdir)/$$d/CVS ]; then \
 -	  ( cd $(srcdir) && tar czf $$d.tar.gz $$d/* ) ; \
-+	  ( cd $(srcdir) && GZIP=-9n tar czf $$d.tar.gz $$d/* ) ; \
++	  ( cd $(srcdir) && GZIP=-9n tar czf $$d.tar.gz `LC_ALL=C ls $$d/*` ) ; \
  	  $(INSTALL_DATA) $$d.tar.gz $(DESTDIR)$(themedir)/$$d.tar.gz; \
  	fi \
  	  done \
diff -Nru sawfish-1.11/debian/patches/series sawfish-1.11/debian/patches/series
--- sawfish-1.11/debian/patches/series	2016-03-05 01:46:54.0 +0100
+++ sawfish-1.11/debian/patches/series	2016-04-11 10:25:57.0 +0200
@@ -4,3 +4,4 @@
 limit-max-dimensions.patch
 make-build-reproducible
 fix-desktop-entry-lacks-keywords-entry
+honours_SOURCE_DATE_EPOCH_for_build_h
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820603: viking: please make the build reproducible (fileordering)

2016-04-10 Thread Alexis Bienvenüe
Source: viking
Version: 1.6-1
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: fileordering
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org
Control: forwarded -1 https://github.com/viking-gps/viking/pull/13

Dear Maintainer,

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

The attached patch fixes icon headers inclusion order. Once applied,
viking can be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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


diff -Nru viking-1.6/debian/patches/series viking-1.6/debian/patches/series
--- viking-1.6/debian/patches/series	2015-09-15 23:14:43.0 +0200
+++ viking-1.6/debian/patches/series	2016-04-10 14:10:21.0 +0200
@@ -2,3 +2,4 @@
 0003-Add-missing-lz.patch
 no_doc-dir.patch
 fix-IT_PROG_INTLTOOL-and-AM_GNU_GETTEXT-conflict.patch
+sort-icon-headers.patch
diff -Nru viking-1.6/debian/patches/sort-icon-headers.patch viking-1.6/debian/patches/sort-icon-headers.patch
--- viking-1.6/debian/patches/sort-icon-headers.patch	1970-01-01 01:00:00.0 +0100
+++ viking-1.6/debian/patches/sort-icon-headers.patch	2016-04-10 14:22:01.0 +0200
@@ -0,0 +1,17 @@
+Description: Sort icon headers
+ Sort icon headers to build src/cons/icons.c, to get reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: viking-1.6/src/icons/Makefile.am
+===
+--- viking-1.6.orig/src/icons/Makefile.am
 viking-1.6/src/icons/Makefile.am
+@@ -267,7 +267,7 @@ icons.h: $(ALL_ICONS_HEADER)
+ icons.c: $(ALL_ICONS_HEADER)
+ 	echo "/* Generated file */" > $@
+ 	echo "#include " >> $@
+-	for file in *_pixmap.h ; do echo "#include \"$$file\"" >> $@ ; done
++	for file in $(ALL_ICONS_HEADER) ; do echo "#include \"$$file\"" >> $@ ; done
+ 
+ $(BUILT_SOURCES): $(srcdir)/Makefile.am
+ 
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820522: gtkspell: please make the build reproducible (environment)

2016-04-09 Thread Alexis Bienvenüe
Source: gtkspell
Version: 2.0.16-1.1
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch fixes the SHELL used in the examples/Makefile to
/bin/sh instead of current one. Once applied, gtkspell can be built
reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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




diff -Nru gtkspell-2.0.16/debian/changelog gtkspell-2.0.16/debian/changelog
--- gtkspell-2.0.16/debian/changelog	2014-08-30 12:09:50.0 +0200
+++ gtkspell-2.0.16/debian/changelog	2016-04-09 14:05:56.0 +0200
@@ -1,3 +1,9 @@
+gtkspell (2.0.16-1.1.0~reproducible1) unstable; urgency=medium
+
+  * Set the examples SHELL to sh, to get a reproducible build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Sat, 09 Apr 2016 14:05:56 +0200
+
 gtkspell (2.0.16-1.1) unstable; urgency=low
 
   * Non-maintainer upload.
diff -Nru gtkspell-2.0.16/debian/patches/series gtkspell-2.0.16/debian/patches/series
--- gtkspell-2.0.16/debian/patches/series	1970-01-01 01:00:00.0 +0100
+++ gtkspell-2.0.16/debian/patches/series	2016-04-09 14:04:04.0 +0200
@@ -0,0 +1 @@
+set_examples_shell_to_sh.patch
diff -Nru gtkspell-2.0.16/debian/patches/set_examples_shell_to_sh.patch gtkspell-2.0.16/debian/patches/set_examples_shell_to_sh.patch
--- gtkspell-2.0.16/debian/patches/set_examples_shell_to_sh.patch	1970-01-01 01:00:00.0 +0100
+++ gtkspell-2.0.16/debian/patches/set_examples_shell_to_sh.patch	2016-04-09 14:05:09.0 +0200
@@ -0,0 +1,12 @@
+Description: Set examples SHELL to sh
+ Set the examples/Makefile's SHELL to /bin/sh whatever the current SHELL is
+ to get the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- gtkspell-2.0.16.orig/examples/Makefile.am
 gtkspell-2.0.16/examples/Makefile.am
+@@ -4,3 +4,4 @@ INCLUDES = -I$(top_srcdir)
+ LDADD = @GTKSPELL_LIBS@ $(top_builddir)/gtkspell/libgtkspell.la
+ simple_SOURCES = simple.c
+ advanced_SOURCES = advanced.c
++SHELL=/bin/sh
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820457: recode: please make the build reproducible (timestamps)

2016-04-08 Thread Alexis Bienvenüe
Source: recode
Version: 3.6-22
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch makes recode building using a recent version of
help2man (from the debian package) instead of the old one shipped with
the recode sources. This version honours the SOURCE_DATE_EPOCH
environment variable, so that the date used in the documentation is
taken from the last debian/changelog entry. Once applied, recode can be
built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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


diff -Nru recode-3.6/debian/changelog recode-3.6/debian/changelog
--- recode-3.6/debian/changelog	2015-08-26 12:07:35.0 +0200
+++ recode-3.6/debian/changelog	2016-04-08 18:12:42.0 +0200
@@ -1,3 +1,9 @@
+recode (3.6-22.0~reproducible1) unstable; urgency=medium
+
+  * Uses packaged help2man instead of old version shipped with the sources.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Fri, 08 Apr 2016 18:12:42 +0200
+
 recode (3.6-22) unstable; urgency=medium
 
   * Change doc/mdate-sh to use TZ=UTC.
diff -Nru recode-3.6/debian/control recode-3.6/debian/control
--- recode-3.6/debian/control	2013-10-12 17:48:01.0 +0200
+++ recode-3.6/debian/control	2016-04-08 17:44:02.0 +0200
@@ -3,7 +3,7 @@
 Priority: optional
 Maintainer: Santiago Vila <sanv...@debian.org>
 Standards-Version: 3.9.4
-Build-Depends: debhelper (>= 9), gettext, texinfo
+Build-Depends: debhelper (>= 9), gettext, texinfo, help2man
 
 Package: recode
 Architecture: any
diff -Nru recode-3.6/debian/patches/14-use-packaged-help2man recode-3.6/debian/patches/14-use-packaged-help2man
--- recode-3.6/debian/patches/14-use-packaged-help2man	1970-01-01 01:00:00.0 +0100
+++ recode-3.6/debian/patches/14-use-packaged-help2man	2016-04-08 17:58:00.0 +0200
@@ -0,0 +1,58 @@
+Description: Use packaged help2man
+ Use packaged help2man instead of the outdated copy included in the
+ sources. This allows reproducibility, since help2man honours
+ SOURCE_DATE_EPOCH since version 1.47.1.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: recode-3.6/doc/Makefile.am
+===
+--- recode-3.6.orig/doc/Makefile.am
 recode-3.6/doc/Makefile.am
+@@ -20,7 +20,7 @@ AUTOMAKE_OPTIONS = gnits
+ info_TEXINFOS = recode.texi
+ MAKEINFO = LANG= LANGUAGE= @MAKEINFO@
+ 
+-EXTRA_DIST = libiconv.texi rfc1345.texi File-Latin1 help2man Makemore \
++EXTRA_DIST = libiconv.texi rfc1345.texi File-Latin1 Makemore \
+ tables.py
+ 
+ MOSTLYCLEANFILES = recode.ops
+Index: recode-3.6/src/Makefile.am
+===
+--- recode-3.6.orig/src/Makefile.am
 recode-3.6/src/Makefile.am
+@@ -102,7 +102,7 @@ $(srcdir)/merged.c: mergelex.py $(L_STEP
+ $(srcdir)/recode.1: recode
+ 	@if test -r $@ && test ! -w $@; then \
+ 	  echo "WARNING: Page \`$@' read only, not updated"; \
+-	elif $(PERL) $(top_srcdir)/doc/help2man --output=$@ ./recode; then \
++	elif help2man --output=$@ ./recode; then \
+ 	  echo "Page \`$@' has been updated"; \
+ 	else \
+ 	  echo "WARNING: Page \`$@' has *not* been updated."; \
+Index: recode-3.6/src/Makefile.in
+===
+--- recode-3.6.orig/src/Makefile.in
 recode-3.6/src/Makefile.in
+@@ -819,7 +819,7 @@ $(srcdir)/merged.c: mergelex.py $(L_STEP
+ $(srcdir)/recode.1: recode
+ 	@if test -r $@ && test ! -w $@; then \
+ 	  echo "WARNING: Page \`$@' read only, not updated"; \
+-	elif $(PERL) $(top_srcdir)/doc/help2man --name="converts files between character sets" --output=$@ ./recode; then \
++	elif help2man --name="converts files between character sets" --output=$@ ./recode; then \
+ 	  echo "Page \`$@' has been updated"; \
+ 	else \
+ 	  echo "WARNING: Page \`$@' has *not* been updated."; \
+Index: recode-3.6/doc/Makefile.in
+===
+--- recode-3.6.orig/doc/Makefile.in
 recode-3.6/doc/Makefile.in
+@@ -106,7 +106,7 @@ AUTOMAKE_OPTIONS = gnits
+ info_TEXINFOS = recode.texi
+ MAKEINFO = LANG= LANGUAGE= @MAKEINFO@
+ 
+-EXTRA_DIST = libiconv.texi rfc1345.texi File-Latin1 help2man Makemore tables.py
++EXTRA_DIST = libiconv.texi rfc1345.texi File-Latin1 Makemore tables.py
+ 
+ 
+ MOSTLYCLEANFILES = recode.ops
diff -Nru recode-3.6/debian/patches/series recode-3.6/debian/patches/series
--- recode-3.6/debian/patches/series	2015-08-26 01:33:14.0 +0200
+++ recode-3.6/debian/patches/series	2016-04-08 17:30:43.0 +0200
@@ -1

[Reproducible-builds] Bug#820435: asciidoctor: please honour SOURCE_DATE_EPOCH

2016-04-08 Thread Alexis Bienvenüe
Source: asciidoctor
Version: 1.5.4-1
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

While working on the “reproducible builds” effort [1], we have noticed
that several packages (like ruby-build) use asciidoctor in their
building process, resulting in timestamps in man files that break
reproducibility.

To solve this kind of issues, it would be nice to have asciidoctor
support the SOURCE_DATE_EPOCH environment variable [2].

See the attached patch for a proposed solution.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/


diff -Nru asciidoctor-1.5.4/debian/changelog asciidoctor-1.5.4/debian/changelog
--- asciidoctor-1.5.4/debian/changelog	2016-02-29 20:11:19.0 +0100
+++ asciidoctor-1.5.4/debian/changelog	2016-04-08 11:20:04.0 +0200
@@ -1,3 +1,10 @@
+asciidoctor (1.5.4-1.0~reproducible1) unstable; urgency=medium
+
+  * Honour SOURCE_DATE_EPOCH to make build of packages using ronn
+reproducible.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Fri, 08 Apr 2016 11:20:04 +0200
+
 asciidoctor (1.5.4-1) unstable; urgency=medium
 
   * Team upload
diff -Nru asciidoctor-1.5.4/debian/patches/honour_SOURCE_DATE_EPOCH.patch asciidoctor-1.5.4/debian/patches/honour_SOURCE_DATE_EPOCH.patch
--- asciidoctor-1.5.4/debian/patches/honour_SOURCE_DATE_EPOCH.patch	1970-01-01 01:00:00.0 +0100
+++ asciidoctor-1.5.4/debian/patches/honour_SOURCE_DATE_EPOCH.patch	2016-04-08 12:14:52.0 +0200
@@ -0,0 +1,40 @@
+Description: Honour the SOURCE_DATE_EPOCH environment variable
+ Honour the SOURCE_DATE_EPOCH environment variable, so that output documents'
+ timestamp is set to last debian/changelog entry when building packages that
+ use asciidoctor in their building process.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: asciidoctor-1.5.4/lib/asciidoctor/document.rb
+===
+--- asciidoctor-1.5.4.orig/lib/asciidoctor/document.rb
 asciidoctor-1.5.4/lib/asciidoctor/document.rb
+@@ -401,7 +401,11 @@ class Document < AbstractBlock
+   #attrs['infile'] = attrs['docfile']
+ 
+   # dynamic intrinstic attribute values
+-  now = ::Time.now
++  if ENV['SOURCE_DATE_EPOCH'].nil?
++now = ::Time.now
++  else
++now = ::Time.at(ENV['SOURCE_DATE_EPOCH'].to_i).gmtime
++  end
+   localdate = (attrs['localdate'] ||= now.strftime('%Y-%m-%d'))
+   unless (localtime = attrs['localtime'])
+ begin
+Index: asciidoctor-1.5.4/lib/asciidoctor.rb
+===
+--- asciidoctor-1.5.4.orig/lib/asciidoctor.rb
 asciidoctor-1.5.4/lib/asciidoctor.rb
+@@ -1308,7 +1308,11 @@ module Asciidoctor
+ if ::File === input
+   # TODO cli checks if input path can be read and is file, but might want to add check to API
+   input_path = ::File.expand_path input.path
+-  input_mtime = input.mtime
++  if ENV['SOURCE_DATE_EPOCH'].nil?
++input_mtime = input.mtime
++  else
++input_mtime = ::Time.at(ENV['SOURCE_DATE_EPOCH'].to_i).gmtime
++  end
+   lines = input.readlines
+   # hold off on setting infile and indir until we get a better sense of their purpose
+   attributes['docfile'] = input_path
diff -Nru asciidoctor-1.5.4/debian/patches/series asciidoctor-1.5.4/debian/patches/series
--- asciidoctor-1.5.4/debian/patches/series	2016-02-29 19:48:47.0 +0100
+++ asciidoctor-1.5.4/debian/patches/series	2016-04-08 11:18:11.0 +0200
@@ -3,3 +3,4 @@
 skip-asciimath-test.patch
 package-version.patch
 skip-unreadable-file.patch
+honour_SOURCE_DATE_EPOCH.patch
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820240: lua-ldoc: please honour SOURCE_DATE_EPOCH

2016-04-06 Thread Alexis Bienvenüe
Source: lua-ldoc
Version: 1.4.3-5
Severity: wishlist
Tags: patch upstream
User: reproducible-builds@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Control: forwarded -1 https://github.com/stevedonovan/LDoc/pull/233

Dear Maintainer,

While working on the “reproducible builds” effort [1], we have noticed
that some packages (like lua-posix) use LDoc in their building process,
resulting in timestamps in documentation files that break reproducibility.

To solve this kind of issues, it would be nice to have LDoc support
the SOURCE_DATE_EPOCH environment variable [2].

See the attached patch for a solution to this issue.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/

diff -Nru lua-ldoc-1.4.3/debian/changelog lua-ldoc-1.4.3/debian/changelog
--- lua-ldoc-1.4.3/debian/changelog	2015-11-01 10:17:35.0 +0100
+++ lua-ldoc-1.4.3/debian/changelog	2016-04-06 08:57:58.0 +0200
@@ -1,3 +1,9 @@
+lua-ldoc (1.4.3-5.0~reproducible1) unstable; urgency=medium
+
+  * Honour the SOURCE_DATE_EPOCH environment variable
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 06 Apr 2016 08:57:58 +0200
+
 lua-ldoc (1.4.3-5) unstable; urgency=medium
 
   * Fix header used by lua-any adding 5.1 (Closes: #802248) 
diff -Nru lua-ldoc-1.4.3/debian/patches/0005-honour-SOURCE_DATE_EPOCH.patch lua-ldoc-1.4.3/debian/patches/0005-honour-SOURCE_DATE_EPOCH.patch
--- lua-ldoc-1.4.3/debian/patches/0005-honour-SOURCE_DATE_EPOCH.patch	1970-01-01 01:00:00.0 +0100
+++ lua-ldoc-1.4.3/debian/patches/0005-honour-SOURCE_DATE_EPOCH.patch	2016-04-06 08:57:21.0 +0200
@@ -0,0 +1,26 @@
+Description: Honour the SOURCE_DATE_EPOCH environment variable
+ Honour the SOURCE_DATE_EPOCH environment variable for even simpler
+ reproducible builds.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- lua-ldoc-1.4.3.orig/ldoc.lua
 lua-ldoc-1.4.3/ldoc.lua
+@@ -783,10 +783,14 @@ ldoc.modules = module_list
+ ldoc.title = ldoc.title or args.title
+ ldoc.project = ldoc.project or args.project
+ ldoc.package = args.package:match '%a+' and args.package or nil
+-if args.date == 'system' then
+-ldoc.updatetime = os.date("%Y-%m-%d %H:%M:%S")
++if os.getenv("SOURCE_DATE_EPOCH") == nil then
++   if args.date == 'system' then
++  ldoc.updatetime = os.date("%Y-%m-%d %H:%M:%S")
++   else
++  ldoc.updatetime = args.date
++   end
+ else
+-ldoc.updatetime = args.date
++   ldoc.updatetime = os.date("!%Y-%m-%d %H:%M:%S",os.getenv("SOURCE_DATE_EPOCH"))
+ end
+ 
+ local html = require 'ldoc.html'
diff -Nru lua-ldoc-1.4.3/debian/patches/series lua-ldoc-1.4.3/debian/patches/series
--- lua-ldoc-1.4.3/debian/patches/series	2015-11-01 10:17:35.0 +0100
+++ lua-ldoc-1.4.3/debian/patches/series	2016-04-06 08:55:47.0 +0200
@@ -2,3 +2,4 @@
 0002-Remove-non-existing-one-1.md-from-tests-config.ld.patch
 0003-Fix-broken-template-missing-closing-bracket.patch
 0004-make-system-date-override-able-via-date.patch
+0005-honour-SOURCE_DATE_EPOCH.patch
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820183: cython: please make the build reproducible (timestamps)

2016-04-06 Thread Alexis Bienvenüe
Source: cython
Version: 0.23.4+git4-g7eed8d8-1
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch uses debian changelog last entry's year as copyright
year in the documentation (through SOURCE_DATE_EPOCH). Once applied,
cython can be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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


diff -Nru cython-0.23.4+git4-g7eed8d8/debian/changelog cython-0.23.4+git4-g7eed8d8/debian/changelog
--- cython-0.23.4+git4-g7eed8d8/debian/changelog	2016-02-19 16:13:06.0 +0100
+++ cython-0.23.4+git4-g7eed8d8/debian/changelog	2016-04-06 12:03:47.0 +0200
@@ -1,3 +1,9 @@
+cython (0.23.4+git4-g7eed8d8-1.0~reproducible1) unstable; urgency=medium
+
+  * Fix copyright year in documentation for reproducible build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 06 Apr 2016 12:03:47 +0200
+
 cython (0.23.4+git4-g7eed8d8-1) unstable; urgency=medium
 
   * Fresh upstream post bugfix release snapshot
diff -Nru cython-0.23.4+git4-g7eed8d8/debian/patches/honour_SOURCE_DATE_EPOCH_for_copyright_year cython-0.23.4+git4-g7eed8d8/debian/patches/honour_SOURCE_DATE_EPOCH_for_copyright_year
--- cython-0.23.4+git4-g7eed8d8/debian/patches/honour_SOURCE_DATE_EPOCH_for_copyright_year	1970-01-01 01:00:00.0 +0100
+++ cython-0.23.4+git4-g7eed8d8/debian/patches/honour_SOURCE_DATE_EPOCH_for_copyright_year	2016-04-06 12:02:29.0 +0200
@@ -0,0 +1,19 @@
+Description: Honour SOURCE_DATE_EPOCH for copyright year
+ Uses SOURCE_DATE_EPOCH environment variable (if set) to
+ set the copyright year in documentation, to get reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- cython-0.23.4+git4-g7eed8d8.orig/docs/conf.py
 cython-0.23.4+git4-g7eed8d8/docs/conf.py
+@@ -15,7 +15,10 @@ import sys, os, os.path, re
+ import itertools
+ import datetime
+ 
+-YEAR = datetime.date.today().strftime('%Y')
++if os.environ.has_key('SOURCE_DATE_EPOCH'):
++YEAR = datetime.datetime.utcfromtimestamp(float(os.environ.get('SOURCE_DATE_EPOCH'))).strftime('%Y')
++else:
++YEAR = datetime.date.today().strftime('%Y')
+ 
+ # If extensions (or modules to document with autodoc) are in another directory,
+ # add these directories to sys.path here. If the directory is relative to the
diff -Nru cython-0.23.4+git4-g7eed8d8/debian/patches/series cython-0.23.4+git4-g7eed8d8/debian/patches/series
--- cython-0.23.4+git4-g7eed8d8/debian/patches/series	2016-02-19 16:13:06.0 +0100
+++ cython-0.23.4+git4-g7eed8d8/debian/patches/series	2016-04-06 12:00:46.0 +0200
@@ -1,2 +1,3 @@
 deb_disable_googleanalytics
 deb-reproducible.patch
+honour_SOURCE_DATE_EPOCH_for_copyright_year
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820179: aodh: please make the build reproducible (timestamps)

2016-04-06 Thread Alexis Bienvenüe
Source: aodh
Version: 1.0.0-11
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch removes build date from documentation. Once applied,
aodh can be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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

diff -Nru aodh-1.0.0/debian/changelog aodh-1.0.0/debian/changelog
--- aodh-1.0.0/debian/changelog	2015-11-21 14:22:21.0 +0100
+++ aodh-1.0.0/debian/changelog	2016-04-06 10:26:06.0 +0200
@@ -1,3 +1,10 @@
+aodh (1.0.0-11.0~reproducible1) unstable; urgency=medium
+
+  * Use SOURCE_DATE_EPOCH for sample timestamps, to get reproducible
+build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Wed, 06 Apr 2016 10:26:05 +0200
+
 aodh (1.0.0-11) unstable; urgency=medium
 
   * Fixed incorrect python-keystonemiddleware (build-)depends version.
diff -Nru aodh-1.0.0/debian/patches/series aodh-1.0.0/debian/patches/series
--- aodh-1.0.0/debian/patches/series	1970-01-01 01:00:00.0 +0100
+++ aodh-1.0.0/debian/patches/series	2016-04-06 10:23:28.0 +0200
@@ -0,0 +1 @@
+use_SOURCE_DATE_EPOCH_for_sample_timestamps
diff -Nru aodh-1.0.0/debian/patches/use_SOURCE_DATE_EPOCH_for_sample_timestamps aodh-1.0.0/debian/patches/use_SOURCE_DATE_EPOCH_for_sample_timestamps
--- aodh-1.0.0/debian/patches/use_SOURCE_DATE_EPOCH_for_sample_timestamps	1970-01-01 01:00:00.0 +0100
+++ aodh-1.0.0/debian/patches/use_SOURCE_DATE_EPOCH_for_sample_timestamps	2016-04-06 11:11:05.0 +0200
@@ -0,0 +1,42 @@
+Description: Use SOURCE_DATE_EPOCH for sample timestamps
+ To get reproducible build of documentation, use SOURCE_DATE_EPOCH
+ environment variable (if set).
+ See https://wiki.debian.org/ReproducibleBuilds
+ and https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: aodh-1.0.0/aodh/api/controllers/v2/alarms.py
+===
+--- aodh-1.0.0.orig/aodh/api/controllers/v2/alarms.py
 aodh-1.0.0/aodh/api/controllers/v2/alarms.py
+@@ -19,6 +19,8 @@
+ # under the License.
+ 
+ import datetime
++import time
++import os
+ import itertools
+ import json
+ import uuid
+@@ -359,10 +361,10 @@ class Alarm(base.Base):
+user_id="c96c887c216949acbdfbd8b494863567",
+project_id="c96c887c216949acbdfbd8b494863567",
+enabled=True,
+-   timestamp=datetime.datetime.utcnow(),
++   timestamp=datetime.datetime.utcfromtimestamp(float(os.environ.get('SOURCE_DATE_EPOCH', time.time(,
+state="ok",
+severity="moderate",
+-   state_timestamp=datetime.datetime.utcnow(),
++   state_timestamp=datetime.datetime.utcfromtimestamp(float(os.environ.get('SOURCE_DATE_EPOCH', time.time(,
+ok_actions=["http://site:8000/ok;],
+alarm_actions=["http://site:8000/alarm;],
+insufficient_data_actions=["http://site:8000/nodata;],
+@@ -480,7 +482,7 @@ class AlarmChange(base.Base):
+user_id="3e5d11fda79448ac99ccefb20be187ca",
+project_id="b6f16144010811e387e4de429e99ee8c",
+on_behalf_of="92159030020611e3b26dde429e99ee8c",
+-   timestamp=datetime.datetime.utcnow(),
++   timestamp=datetime.datetime.utcfromtimestamp(float(os.environ.get('SOURCE_DATE_EPOCH', time.time(,
+)
+ 
+ 
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] lua-ldoc --date/SOURCE_DATE_EPOCH

2016-04-06 Thread Alexis Bienvenüe
Hi.

lua-ldoc's maintainer added a --date option that helps reproducible
building. It is used by lua-penlight.
However, awesome and lua-posix don't use it already.

What should you recommend?
1) patch awesome and lua-posix to use --date
2) patch lua-ldoc to add SOURCE_DATE_EPOCH, on top of --date. This would
be more reliable, but maybe lua-ldoc will get a little messy/muddled?

Thanks for your advice,
Alexis Bienvenüe.

___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820152: anope: please make the build reproducible (timestamps)

2016-04-05 Thread Alexis Bienvenüe
Source: anope
Version: 2.0.3-1
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch removes build date from the version string. Once
applied, anope can be built reproducibly in our current experimental
framework.

Regards,
Alexis Bienvenüe.

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

diff -Nru anope-2.0.3/debian/patches/series anope-2.0.3/debian/patches/series
--- anope-2.0.3/debian/patches/series	1970-01-01 01:00:00.0 +0100
+++ anope-2.0.3/debian/patches/series	2016-04-05 22:53:41.0 +0200
@@ -0,0 +1 @@
+strip_build_date.patch
diff -Nru anope-2.0.3/debian/patches/strip_build_date.patch anope-2.0.3/debian/patches/strip_build_date.patch
--- anope-2.0.3/debian/patches/strip_build_date.patch	1970-01-01 01:00:00.0 +0100
+++ anope-2.0.3/debian/patches/strip_build_date.patch	2016-04-05 22:54:46.0 +0200
@@ -0,0 +1,26 @@
+Description: Strip build date
+ Strip build date from version string, to get reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- anope-2.0.3.orig/include/anope.h
 anope-2.0.3/include/anope.h
+@@ -336,8 +336,6 @@ namespace Anope
+ 	template class multimap : public std::multimap<string, T, ci::less> { };
+ 	template class hash_map : public TR1NS::unordered_map<string, T, hash_ci, compare> { };
+ 
+-	static const char *const compiled = __TIME__ " " __DATE__;
+-
+ 	/** The time Anope started.
+ 	 */
+ 	extern CoreExport time_t StartTime;
+--- anope-2.0.3.orig/src/misc.cpp
 anope-2.0.3/src/misc.cpp
+@@ -632,7 +632,7 @@ Anope::string Anope::VersionShort()
+ 
+ Anope::string Anope::VersionBuildString()
+ {
+-	Anope::string s = "build #" + stringify(BUILD) + ", compiled " + Anope::compiled;
++	Anope::string s = "build #" + stringify(BUILD);
+ 	Anope::string flags;
+ 
+ #ifdef DEBUG_BUILD
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820148: autopkgtest: please make the build reproducible (environment)

2016-04-05 Thread Alexis Bienvenüe
Source: autopkgtest
Version: 3.20.2
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

Depending on the locale (LC_COLLATE I think), [a-z] can include or not
capitals, so that in the Makefile, [a-z]* can match SKELETON or not.
Thus, depending on the locale, SKELETON will be installed with mode 0644
or 0755.

The (very simple) attached patch can solve this issue, so that
autopkgtest can be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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



diff -Nru autopkgtest-3.20.1/Makefile autopkgtest-3.20.1.0~reproducible1/Makefile
--- autopkgtest-3.20.1/Makefile	2016-03-14 22:36:00.0 +0100
+++ autopkgtest-3.20.1.0~reproducible1/Makefile	2016-04-05 21:51:05.0 +0200
@@ -72,8 +72,8 @@
 	$(INSTALL_DATA) CREDITS $(docdir)
 	$(INSTALL_DATA) $(rstfiles) $(htmlfiles) $(docdir)
 	$(INSTALL_PROG) setup-commands/*[!~] $(datadir)/setup-commands
-	$(INSTALL_DATA) ssh-setup/SKELETON $(datadir)/ssh-setup
 	$(INSTALL_PROG) ssh-setup/[a-z]*[!~] $(datadir)/ssh-setup
+	$(INSTALL_DATA) ssh-setup/SKELETON $(datadir)/ssh-setup
 
 clean:
 	rm -f */*.pyc
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820144: rdtool: please honour SOURCE_DATE_EPOCH

2016-04-05 Thread Alexis Bienvenüe
Source: rdtool
Version: 0.6.38-3
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: toolchain
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

While working on the “reproducible builds” effort [1], we have noticed
that several packages (like apt-listbugs) use rdtool in their building
process, resulting in timestamps (month and year of build) in man files
that break reproducibility.

To solve this kind of issues, it would be nice to have rdtool support
the SOURCE_DATE_EPOCH environment variable [2].

See the attached patch for a proposed solution.

Regards,
Alexis Bienvenüe.

[1] https://wiki.debian.org/ReproducibleBuilds
[2] https://reproducible-builds.org/specs/source-date-epoch/

diff -Nru rdtool-0.6.38/debian/changelog rdtool-0.6.38/debian/changelog
--- rdtool-0.6.38/debian/changelog	2014-09-09 11:16:13.0 +0200
+++ rdtool-0.6.38/debian/changelog	2016-04-05 19:52:49.0 +0200
@@ -1,3 +1,9 @@
+rdtool (0.6.38-3.0~reproducible1) unstable; urgency=medium
+
+  * Honour the SOURCE_DATE_EPOCH environment variable.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Tue, 05 Apr 2016 19:52:49 +0200
+
 rdtool (0.6.38-3) unstable; urgency=medium
 
   * Team upload.
diff -Nru rdtool-0.6.38/debian/patches/040_honour_SOURCE_DATE_EPOCH rdtool-0.6.38/debian/patches/040_honour_SOURCE_DATE_EPOCH
--- rdtool-0.6.38/debian/patches/040_honour_SOURCE_DATE_EPOCH	1970-01-01 01:00:00.0 +0100
+++ rdtool-0.6.38/debian/patches/040_honour_SOURCE_DATE_EPOCH	2016-04-05 20:00:27.0 +0200
@@ -0,0 +1,26 @@
+Description: Honour the SOURCE_DATE_EPOCH environment variable
+ If the environment variable SOURCE_DATE_EPOCH is set, uses this date
+ instead of current date for generated man pages.
+ See https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: rdtool-0.6.38/lib/rd/rd2man-lib.rb
+===
+--- rdtool-0.6.38.orig/lib/rd/rd2man-lib.rb
 rdtool-0.6.38/lib/rd/rd2man-lib.rb
+@@ -43,9 +43,14 @@ module RD
+   content = content.join
+   title = guess_title
+   title = title.sub(/\.rd$/i, '').upcase
++  if ENV['SOURCE_DATE_EPOCH'].nil?
++date=Time.now
++  else
++date=Time.at(ENV['SOURCE_DATE_EPOCH'].to_i).gmtime
++  end
+   <<"EOT"
+ .\\" DO NOT MODIFY THIS FILE! it was generated by rd2
+-.TH #{title} 1 "#{Time.now.strftime '%B %Y'}"
++.TH #{title} 1 "#{date.strftime '%B %Y'}"
+ #{content}
+ EOT
+ end # "
diff -Nru rdtool-0.6.38/debian/patches/series rdtool-0.6.38/debian/patches/series
--- rdtool-0.6.38/debian/patches/series	2014-01-23 19:25:38.0 +0100
+++ rdtool-0.6.38/debian/patches/series	2016-04-05 19:50:18.0 +0200
@@ -1,2 +1,3 @@
 010_change_dot_rd2rc_path
 020_test_load_fix
+040_honour_SOURCE_DATE_EPOCH
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820072: synfig: please make the build reproducible (timestamps)

2016-04-05 Thread Alexis Bienvenüe
Source: synfig
Version: 1.0.2-1
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch removes build date from info output. Once applied,
synfig can be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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


diff -Nru synfig-1.0.2/debian/patches/series synfig-1.0.2/debian/patches/series
--- synfig-1.0.2/debian/patches/series	2015-11-27 10:31:17.0 +0100
+++ synfig-1.0.2/debian/patches/series	2016-04-05 10:36:15.0 +0200
@@ -1,2 +1,3 @@
 c++11.patch
 #no-mod_ffmpeg.patch
+strip-build-date.patch
diff -Nru synfig-1.0.2/debian/patches/strip-build-date.patch synfig-1.0.2/debian/patches/strip-build-date.patch
--- synfig-1.0.2/debian/patches/strip-build-date.patch	1970-01-01 01:00:00.0 +0100
+++ synfig-1.0.2/debian/patches/strip-build-date.patch	2016-04-05 10:37:25.0 +0200
@@ -0,0 +1,27 @@
+Description: Strip build date from source
+ Strip build date from source, to get reproducible build.
+ see https://wiki.debian.org/ReproducibleBuilds
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- synfig-1.0.2.orig/src/synfig/main.cpp
 synfig-1.0.2/src/synfig/main.cpp
+@@ -110,7 +110,7 @@ synfig::get_version()
+ const char *
+ synfig::get_build_date()
+ {
+-	return __DATE__;
++	return "Unknown";
+ }
+ 
+ bool
+--- synfig-1.0.2.orig/src/tool/optionsprocessor.cpp
 synfig-1.0.2/src/tool/optionsprocessor.cpp
+@@ -193,7 +193,7 @@ void OptionsProcessor::process_info_opti
+ #ifdef DEVEL_VERSION
+ 			cout << endl << DEVEL_VERSION << endl << endl;
+ #endif
+-		cout << "Compiled on " __DATE__ /* " at "__TIME__ */;
++cout << "Compiled ";
+ #ifdef __GNUC__
+ 		cout << " with GCC " << __VERSION__;
+ #endif
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820032: bibledit-gtk: please make the build reproducible (environment)

2016-04-04 Thread Alexis Bienvenüe
Source: bibledit-gtk
Version: 4.9-1
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

That comes from the inclusion of the Makefile's used for building into
the package. These files seem however not necessary: please consider
removing them from bibledit-gtk-data, for example  with the attached patch.

Regards,
Alexis Bienvenüe.

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


diff -Nru bibledit-gtk-4.9/debian/rules bibledit-gtk-4.9/debian/rules
--- bibledit-gtk-4.9/debian/rules	2015-09-15 21:29:23.0 +0200
+++ bibledit-gtk-4.9/debian/rules	2016-04-04 23:18:27.0 +0200
@@ -2,4 +2,6 @@
 %:
 	dh $@ --with autoreconf
 
+override_dh_install:
+	dh_install -XMakefile
 
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#820016: gabedit: please make the build reproducible (fileordering)

2016-04-04 Thread Alexis Bienvenüe
Source: gabedit
Version: 2.4.8-2
Severity: wishlist
Tags: patch
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 'gabedit' could not be built reproducibly.

The attached patch sorts object files while building the final gabedit
executable, to get a fixed order. Once applied, gabedit can be built
reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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

diff -Nru gabedit-2.4.8/debian/changelog gabedit-2.4.8/debian/changelog
--- gabedit-2.4.8/debian/changelog	2015-10-19 00:12:22.0 +0200
+++ gabedit-2.4.8/debian/changelog	2016-04-04 20:25:54.0 +0200
@@ -1,3 +1,9 @@
+gabedit (2.4.8-2.0~reproducible1) unstable; urgency=medium
+
+  * Sort object files in Makefile, to get reproducible build
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 04 Apr 2016 20:25:54 +0200
+
 gabedit (2.4.8-2) unstable; urgency=medium
 
   * debian/compat: Raised to level 9.
diff -Nru gabedit-2.4.8/debian/patches/01-sort-object-files-in-makefile.patch gabedit-2.4.8/debian/patches/01-sort-object-files-in-makefile.patch
--- gabedit-2.4.8/debian/patches/01-sort-object-files-in-makefile.patch	1970-01-01 01:00:00.0 +0100
+++ gabedit-2.4.8/debian/patches/01-sort-object-files-in-makefile.patch	2016-04-04 21:16:50.0 +0200
@@ -0,0 +1,24 @@
+Description: Sort object files in Makefile
+ To get reproducible build.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: gabedit-2.4.8/Makefile
+===
+--- gabedit-2.4.8.orig/Makefile
 gabedit-2.4.8/Makefile
+@@ -63,11 +63,14 @@ all: gabedit
+ gabedit: $(SUBDIRS)
+ 	$(MKDIR) tmp
+ 	cp $(OBJECTS) tmp
+-	$(CC) $(LDFLAGS) tmp/*.o -o gabedit $(GLTOPS) $(X11LIB) $(GTKLIB) $(OGLLIB) $(JPEGLIB) $(LIBPTHREAD) $(WIN32LIB) $(OMPLIB) -g -lm
++	$(MAKE) exec
+ 	@$(RMTMP) > ptmp
+ 	rmdir tmp
+ 	@$(RM) ptmp
+  
++exec:
++	$(CC) $(LDFLAGS) $(sort $(wildcard tmp/*.o)) -o gabedit $(GLTOPS) $(X11LIB) $(GTKLIB) $(OGLLIB) $(JPEGLIB) $(LIBPTHREAD) $(WIN32LIB) $(OMPLIB) -g -lm
++
+ clean:
+ 	@$(RM) gabedit
+ 	@$(RM) gabedit.exe
diff -Nru gabedit-2.4.8/debian/patches/series gabedit-2.4.8/debian/patches/series
--- gabedit-2.4.8/debian/patches/series	2014-02-09 13:25:06.0 +0100
+++ gabedit-2.4.8/debian/patches/series	2016-04-04 20:24:35.0 +0200
@@ -0,0 +1 @@
+01-sort-object-files-in-makefile.patch
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] LaTeX's \today

2016-04-04 Thread Alexis Bienvenüe
Hi.

Looking at debian package canl-c, I saw it uses \today in the
documentation LaTeX files, so that it can't build reproducibly.
I also heard about gle-graphics [1], which has to be patched to give a
fixed value to \today.

Can we consider turning LaTeX into using SOURCE_DATE_EPOCH (when
available) as \today's epoch? Maybe a way to do this is telling
get_date_and_time to honour SOURCE_DATE_EPOCH. As this function is used
to give a value to the \day, \month and \year LaTeX primitives, this
should be ok. See attached patch for an example.

However, some little more work has to be done if we need the same result
for lualatex and xelatex, as shown in the attached test.

Regards,
Alexis Bienvenüe.

[1]
https://lists.alioth.debian.org/pipermail/reproducible-builds/Week-of-Mon-20160328/005135.html
diff -Nru texlive-bin-2015.20160222.37495/debian/patches/honour-source-date-epoch-today texlive-bin-2015.20160222.37495/debian/patches/honour-source-date-epoch-today
--- texlive-bin-2015.20160222.37495/debian/patches/honour-source-date-epoch-today	1970-01-01 01:00:00.0 +0100
+++ texlive-bin-2015.20160222.37495/debian/patches/honour-source-date-epoch-today	2016-04-04 17:14:46.0 +0200
@@ -0,0 +1,142 @@
+Description: Make \today honour SOURCE_DATE_EPOCH
+ See https://reproducible-builds.org/ and https://reproducible-builds.org/specs/source-date-epoch/
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+Index: texlive-bin-2015.20160222.37495/texk/web2c/lib/texmfmp.c
+===
+--- texlive-bin-2015.20160222.37495.orig/texk/web2c/lib/texmfmp.c
 texlive-bin-2015.20160222.37495/texk/web2c/lib/texmfmp.c
+@@ -2143,6 +2143,49 @@ catch_interrupt (int arg)
+ }
+ #endif /* not WIN32 */
+ 
++static boolean start_time_set = false;
++static time_t start_time = 0;
++
++void init_start_time() {
++  char *source_date_epoch;
++  unsigned long long epoch;
++  char *endptr;
++  if (!start_time_set) {
++start_time_set = true;
++source_date_epoch = getenv("SOURCE_DATE_EPOCH");
++if (source_date_epoch)
++  {
++errno = 0;
++epoch = strtoull(source_date_epoch, , 10);
++if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0))
++|| (errno != 0 && epoch == 0))
++  {
++fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n", strerror(errno));
++uexit(EXIT_FAILURE);
++  }
++if (endptr == source_date_epoch)
++  {
++fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n", endptr);
++uexit(EXIT_FAILURE);
++  }
++if (*endptr != '\0')
++  {
++fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n", endptr);
++uexit(EXIT_FAILURE);
++  }
++if (epoch > ULONG_MAX)
++  {
++fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to: %lu but was found to be: %llu \n", ULONG_MAX  ,epoch);
++uexit(EXIT_FAILURE);
++  }
++start_time = epoch;
++  }
++else {
++  start_time = time((time_t *) NULL);
++}
++  }
++}
++
+ /* Besides getting the date and time here, we also set up the interrupt
+handler, for no particularly good reason.  It's just that since the
+`fix_date_and_time' routine is called early on (section 1337 in TeX,
+@@ -2153,8 +2196,14 @@ void
+ get_date_and_time (integer *minutes,  integer *day,
+integer *month,  integer *year)
+ {
+-  time_t myclock = time ((time_t *) 0);
+-  struct tm *tmptr = localtime ();
++  struct tm *tmptr;
++  if(getenv("SOURCE_DATE_EPOCH")) {
++init_start_time();
++tmptr = gmtime (_time);
++  } else {
++time_t myclock = time ((time_t *) 0);
++tmptr = localtime ();
++  }
+ 
+   *minutes = tmptr->tm_hour * 60 + tmptr->tm_min;
+   *day = tmptr->tm_mday;
+@@ -2869,11 +2918,10 @@ void pdftex_fail(const char *fmt, ...)
+ }
+ #endif /* not pdfTeX */
+ 
+-static boolean start_time_set = false;
+-static time_t start_time = 0;
+ #define TIME_STR_SIZE 30
+ char start_time_str[TIME_STR_SIZE];
+-static char time_str[TIME_STR_SIZE];
++
++ static char time_str[TIME_STR_SIZE];
+ /* minimum size for time_str is 24: "D:mmddHHMMSS+HH'MM'" */
+ 
+ static void makepdftime(time_t t, char *time_str, int utc)
+@@ -2931,45 +2979,14 @@ static void makepdftime(time_t t, char *
+ 
+ void initstarttime(void)
+ {
+-	char *source_date_epoch;
+-	unsigned long long epoch;
+-	char *endptr;
+-if (!start_time_set) {
+-start_time_set = true;
+-	source_date_epoch = getenv("SOURCE_DATE_EPOCH");
+-	if (source_date_epoch)
+-	{
+-		errno = 0;
+-		epoch = strtoull(source_date_epoch, , 10);
+-		if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch

[Reproducible-builds] Bug#819948: maude: please make the build reproducible (timestamps)

2016-04-04 Thread Alexis Bienvenüe
Source: maude
Version: 2.7-1
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch removes build date from the banner. Once applied,
maude can be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

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

diff -Nru maude-2.7/debian/changelog maude-2.7/debian/changelog
--- maude-2.7/debian/changelog	2015-12-16 22:57:27.0 +0100
+++ maude-2.7/debian/changelog	2016-04-04 09:04:27.0 +0200
@@ -1,3 +1,9 @@
+maude (2.7-1.0~reproducible1) unstable; urgency=medium
+
+  * Strip build date from banner to get reproducible build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Mon, 04 Apr 2016 09:04:16 +0200
+
 maude (2.7-1) unstable; urgency=medium
 
   * New upstream version
diff -Nru maude-2.7/debian/patches/series maude-2.7/debian/patches/series
--- maude-2.7/debian/patches/series	2015-12-16 22:44:15.0 +0100
+++ maude-2.7/debian/patches/series	2016-04-04 09:02:26.0 +0200
@@ -1,3 +1,4 @@
 search-datadir.patch
 bison-parse-param.patch
 getinput-size_t.patch
+strip-build-date.patch
diff -Nru maude-2.7/debian/patches/strip-build-date.patch maude-2.7/debian/patches/strip-build-date.patch
--- maude-2.7/debian/patches/strip-build-date.patch	1970-01-01 01:00:00.0 +0100
+++ maude-2.7/debian/patches/strip-build-date.patch	2016-04-04 09:03:40.0 +0200
@@ -0,0 +1,16 @@
+Description: Strip build date
+ Strip build date from banner, for reproducibility reasons.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- maude-2.7.orig/src/Mixfix/banner.cc
 maude-2.7/src/Mixfix/banner.cc
+@@ -53,8 +53,7 @@ printBanner(std::ostream& s)
+ Tty(Tty::GREEN) << 'e' <<
+ Tty(Tty::RESET) << " ---\n";
+   s << "\t\t /||\\\n";
+-  s << "\t" << PACKAGE_STRING << " built: " <<
+-__DATE__ << ' ' << __TIME__ << '\n';
++  s << "\t" << PACKAGE_STRING << '\n';
+   s << "\tCopyright 1997-2014 SRI International\n";
+   s << "\t\t   " << ctime();
+ }
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#819921: basket: please make the build reproducible (timestamps)

2016-04-03 Thread Alexis Bienvenüe
Source: basket
Version: 2.10~beta+git20160305.487a115-1
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch removes build date from debug info. Once applied,
basket can be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
diff -Nru basket-2.10~beta+git20160305.487a115/debian/changelog basket-2.10~beta+git20160305.487a115/debian/changelog
--- basket-2.10~beta+git20160305.487a115/debian/changelog	2016-03-06 20:38:04.0 +0100
+++ basket-2.10~beta+git20160305.487a115/debian/changelog	2016-04-03 23:41:40.0 +0200
@@ -1,3 +1,9 @@
+basket (2.10~beta+git20160305.487a115-1.0~reproducible1) unstable; urgency=medium
+
+  * Removes build date from debug info, to get a reproducible build.
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Sun, 03 Apr 2016 23:41:39 +0200
+
 basket (2.10~beta+git20160305.487a115-1) unstable; urgency=medium
 
   * New git snapshot:
diff -Nru basket-2.10~beta+git20160305.487a115/debian/patches/15_remove_build_date_from_debug_info.patch basket-2.10~beta+git20160305.487a115/debian/patches/15_remove_build_date_from_debug_info.patch
--- basket-2.10~beta+git20160305.487a115/debian/patches/15_remove_build_date_from_debug_info.patch	1970-01-01 01:00:00.0 +0100
+++ basket-2.10~beta+git20160305.487a115/debian/patches/15_remove_build_date_from_debug_info.patch	2016-04-03 23:40:43.0 +0200
@@ -0,0 +1,14 @@
+Description: Remove build date from debug info
+ This makes the build reproducible.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- basket-2.10~beta+git20160305.487a115.orig/src/crashhandler.cpp
 basket-2.10~beta+git20160305.487a115/src/crashhandler.cpp
+@@ -72,7 +72,6 @@ Crash::crashHandler(int /*signal*/)
+ 
+ body += " DEBUG INFORMATION  ===\n"
+ "Version:" VERSION "\n"
+-"Build date: " __DATE__ "\n"
+ "CC version: " __VERSION__ "\n" //assuming we're using GCC
+ "KDElibs:" KDE_VERSION_STRING "\n"
+ ;//"TagLib: %2.%3.%4\n";
diff -Nru basket-2.10~beta+git20160305.487a115/debian/patches/series basket-2.10~beta+git20160305.487a115/debian/patches/series
--- basket-2.10~beta+git20160305.487a115/debian/patches/series	2015-11-29 12:04:35.0 +0100
+++ basket-2.10~beta+git20160305.487a115/debian/patches/series	2016-04-03 23:39:53.0 +0200
@@ -1 +1,2 @@
 14_update_es_po.diff
+15_remove_build_date_from_debug_info.patch
___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

[Reproducible-builds] Bug#819915: kannel: please make the build reproducible (timestamps)

2016-04-03 Thread Alexis Bienvenüe
Source: kannel
Version: 1.4.4-2
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds@lists.alioth.debian.org

Dear Maintainer,

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

The attached patch makes sure that a fixed date timestamp is used in the
documentation (taken from the last d/changelog entry), so the build date
does not appear anywhere in the output. It also removes the build date
from the return value of version_report_string.

Note than timestamps also appear in postscript files built from FIG and
PNG files from the source tree (as CreationDate meta data). However,
once transfig and imagemagick (which are used for these conversions)
honour the SOURCE_DATE_EPOCH environment variable, these timestamps will
also be replaced by a fixed date.

Once applied, and once bugs #819911 and #819914 regarding transfig and
imagemagick will be resolved in the experimental toolchain, kannel can
be built reproducibly in our current experimental framework.

Regards,
Alexis Bienvenüe.

 [1]: https://wiki.debian.org/ReproducibleBuilds
diff -Nru kannel-1.4.4/debian/changelog kannel-1.4.4/debian/changelog
--- kannel-1.4.4/debian/changelog	2015-11-23 11:09:32.0 +0100
+++ kannel-1.4.4/debian/changelog	2016-04-02 14:46:03.0 +0200
@@ -1,3 +1,10 @@
+kannel (1.4.4-2.0~reproducible1) unstable; urgency=medium
+
+  * Reproducible build
+  * Uses dh-autoreconf, see https://wiki.debian.org/Autoreconf
+
+ -- Alexis Bienvenüe <p...@passoire.fr>  Sat, 02 Apr 2016 09:38:02 +0200
+
 kannel (1.4.4-2) unstable; urgency=medium
 
   * Fix Vcs-* field URLs. Closes: bug#793981.
diff -Nru kannel-1.4.4/debian/control kannel-1.4.4/debian/control
--- kannel-1.4.4/debian/control	2015-11-23 11:03:33.0 +0100
+++ kannel-1.4.4/debian/control	2016-04-02 14:46:24.0 +0200
@@ -6,6 +6,7 @@
  Paul Dwerryhouse <p...@dwerryhouse.com.au>
 Build-Depends: cdbs,
  debhelper,
+ dh-autoreconf,
  libxml2-dev,
  libssl-dev,
  openssl,
diff -Nru kannel-1.4.4/debian/patches/35_use_changelog_date_in_doc.patch kannel-1.4.4/debian/patches/35_use_changelog_date_in_doc.patch
--- kannel-1.4.4/debian/patches/35_use_changelog_date_in_doc.patch	1970-01-01 01:00:00.0 +0100
+++ kannel-1.4.4/debian/patches/35_use_changelog_date_in_doc.patch	2016-04-02 15:05:46.0 +0200
@@ -0,0 +1,139 @@
+Description: Use debian changelog date in doc
+ Uses the date from SOURCE_DATE_EPOCH in documentation,
+ instead of current date.
+Author: Alexis Bienvenüe <p...@passoire.fr>
+
+--- kannel-1.4.4.orig/Makefile.in
 kannel-1.4.4/Makefile.in
+@@ -60,6 +60,7 @@ PACKAGE = @PACKAGE@
+ RANLIB = @RANLIB@
+ SHELL = @SHELL@
+ VERSION = @VERSION@
++BUILD_DATE = @BUILD_DATE@
+ SUFFIX = @SUFFIX@
+ LEX = @LEX@
+ PERL = @PERL@
+@@ -179,17 +180,17 @@ figs = $(figsrcs:.fig=.png)  $(figsrcs:.
+ .SUFFIXES: $(SUFFIXES) .xml .html .rtf .ps .fig .png .y .c .i .o .pdf
+ 
+ .xml.html:
+-	sed "s/#FIGTYPE#/.png/;s/#VERSION#/${VERSION}/;s/#DATE#/`date +%Y.%m.%d`/;s/#DRAFTS#/${DOCDRAFTS}/" $< > $*.tmp
++	sed "s/#FIGTYPE#/.png/;s/#VERSION#/${VERSION}/;s/#DATE#/${BUILD_DATE}/;s/#DRAFTS#/${DOCDRAFTS}/" $< > $*.tmp
+ 	${JADE} -V nochunks -t sgml -d $(HTML_DSL) $(XML_DCL) $*.tmp > $@
+ 	rm -f $*.tmp
+ 
+ .xml.rtf:
+-	sed "s/#FIGTYPE#/.ps/;s/#VERSION#/${VERSION}/;s/#DATE#/`date +%Y.%m.%d`/;s/#DRAFTS#/${DOCDRAFTS}/" $< > $*.tmp
++	sed "s/#FIGTYPE#/.ps/;s/#VERSION#/${VERSION}/;s/#DATE#/${BUILD_DATE}/;s/#DRAFTS#/${DOCDRAFTS}/" $< > $*.tmp
+ 	cd `dirname $<` && $(JADE) -o `basename $*`.rtf -t rtf -d $(TEX_DSL) $(XML_DCL) `basename $*`.tmp
+ 	rm -f $*.tmp
+ 
+ .xml.ps:
+-	sed "s/#FIGTYPE#/.ps/;s/#VERSION#/${VERSION}/;s/#DATE#/`date +%Y.%m.%d`/;s/#DRAFTS#/${DOCDRAFTS}/" $< > $*.tmp
++	sed "s/#FIGTYPE#/.ps/;s/#VERSION#/${VERSION}/;s/#DATE#/${BUILD_DATE}/;s/#DRAFTS#/${DOCDRAFTS}/" $< > $*.tmp
+ 	$(JADE) -o $*.tex -t tex -d $(TEX_DSL) $(XML_DCL) $*.tmp
+ 	rm -f $*.tmp
+ 	cd `dirname $<` && $(JADETEX) `basename $*`.tex >/dev/null || true
+@@ -201,7 +202,7 @@ figs = $(figsrcs:.fig=.png)  $(figsrcs:.
+ 	rm -f $*.dvi $*.tex $*.aux 
+ 
+ .xml.pdf:
+-	sed "s/#FIGTYPE#/.png/;s/#VERSION#/${VERSION}/;s/#DATE#/`date +%Y.%m.%d`/;s/#DRAFTS#/${DOCDRAFTS}/" $< > $*.tmp
++	sed "s/#FIGTYPE#/.png/;s/#VERSION#/${VERSION}/;s/#DATE#/${BUILD_DATE}/;s/#DRAFTS#/${DOCDRAFTS}/" $< > $*.tmp
+ 	$(JADE) -o $*.tex -t tex -d $(TEX_DSL) $(XML_DCL) $*.tmp
+ 	rm -f $*.tmp
+ 	cd `dirname $<` && $(JADETEX) `basename $*`.tex >/dev/null || true
+--- kannel-1.4.4.orig/addons/opensmppbox/Makefile.am
 kannel-1.4.4/addons/opensmppbox/Makefile.am
+@@ -6,6 +6,7 @@ rpmtemp = /tmp/opensmppbox-rpm
+ DOCSTARGET=@DOCSTARGET@
+ DOCDRAFTS=@DOCDRAFTS@
+ RPMPKG=opensmppbox-@PACKAGE_VERSION@
++BU

Re: [Reproducible-builds] Best approach to strip timestamp in postscript files

2016-04-01 Thread Alexis Bienvenüe
Hi.

Le 31/03/2016 18:35, Dhole a écrit :
> And I think it would be very helpful if you work on that :) (and also in
> implementing SOURCE_DATE_EPOCH in graphicsmagick if there is the same
> issue there).

I prepared [1] patches for imagemagick and transfig which make
reproducibility issues with kannel.
I also prepared a patch for kannel itself [2]. With this patch, kannel
does not build reproducibly in the experimental toolchain, but it does
when adding patched imagemagick and transfig to the toolchain.

Should I report a bug to kannel to include the patch?
Since I am not experienced, can anyone have a look at these patches and
help me to improve them or to find them their way?

Regards,
Alexis Bienvenüe.

[1]
http://docs.passoire.fr/alexis/debian/imagemagick_6.8.9.9-7_SOURCE_DATE_EPOCH.diff

http://docs.passoire.fr/alexis/debian/transfig_3.2.5.e-5_SOURCE_DATE_EPOCH.diff

[2] http://docs.passoire.fr/alexis/debian/kannel_1.4.4-2_reproducible.diff


___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds


Re: [Reproducible-builds] Best approach to strip timestamp in postscript files

2016-03-31 Thread Alexis Bienvenüe
Hi.

Le 31/03/2016 18:35, Dhole a écrit :
> I believe the best option would be to make 'convert' honour the
> environment variable SOURCE_DATE_EPOCH when defined, when embedding
> the CreationDate tag.

Thanks for your very clear advice.

I prepared a patch for this [1].
I tested that the convert command now honour SOURCE_DATE_EPOCH for some
output image formats.
Does anyone want to have a look at it and give me some advice?

Regards,
Alexis.

[1]
http://docs.passoire.fr/alexis/debian/imagemagick_6.8.9.9-7_SOURCE_DATE_EPOCH.diff


___
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds