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.000000000 +0100 +++ kannel-1.4.4/debian/changelog 2016-04-02 14:46:03.000000000 +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.000000000 +0100 +++ kannel-1.4.4/debian/control 2016-04-02 14:46:24.000000000 +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.000000000 +0100 +++ kannel-1.4.4/debian/patches/35_use_changelog_date_in_doc.patch 2016-04-02 15:05:46.000000000 +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@ ++BUILD_DATE=@BUILD_DATE@ + + pssrcs = $(wildcard doc/*.png) + ps = $(pssrcs:.png=.ps) +@@ -14,17 +15,17 @@ figsrcs = $(wildcard doc/*.fig) + figs = $(figsrcs:.fig=.png) $(figsrcs:.fig=.ps) + + .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 +@@ -36,7 +37,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/sqlbox/Makefile.am ++++ kannel-1.4.4/addons/sqlbox/Makefile.am +@@ -6,6 +6,7 @@ rpmtemp = /tmp/sqlbox-rpm + DOCSTARGET=@DOCSTARGET@ + DOCDRAFTS=@DOCDRAFTS@ + RPMPKG=sqlbox-@PACKAGE_VERSION@ ++BUILD_DATE=@BUILD_DATE@ + + pssrcs = $(wildcard doc/*.png) + ps = $(pssrcs:.png=.ps) +@@ -14,17 +15,17 @@ figsrcs = $(wildcard doc/*.fig) + figs = $(figsrcs:.fig=.png) $(figsrcs:.fig=.ps) + + .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 +@@ -36,7 +37,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/configure.in ++++ kannel-1.4.4/configure.in +@@ -71,6 +71,11 @@ AC_CONFIG_AUX_DIR(.) + AC_SET_TERMINAL_SEQUENCES() + AC_CONFIG_NICE(config.nice) + ++dnl Set build date from SOURCE_DATE_EPOCH or current date ++SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}" ++BUILD_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(BUILD_DATE) ++ + dnl Check gateway version number. + VERSION=`head -n 1 VERSION` + if test "x$VERSION" = "xsvn"; then diff -Nru kannel-1.4.4/debian/patches/36_strip_date_from_version_report_string.patch kannel-1.4.4/debian/patches/36_strip_date_from_version_report_string.patch --- kannel-1.4.4/debian/patches/36_strip_date_from_version_report_string.patch 1970-01-01 01:00:00.000000000 +0100 +++ kannel-1.4.4/debian/patches/36_strip_date_from_version_report_string.patch 2016-04-02 14:45:27.000000000 +0200 @@ -0,0 +1,28 @@ +Description: Strip build date from version_report_string + Strip the build date from the version_report_string return value, + for reproducibility reasons. +Author: Alexis Bienvenüe <p...@passoire.fr> + +--- kannel-1.4.4.orig/gwlib/utils.c ++++ kannel-1.4.4/gwlib/utils.c +@@ -553,7 +553,7 @@ Octstr *version_report_string(const char + struct utsname u; + + uname(&u); +- return octstr_format(GW_NAME " %s version `%s'.\nBuild `%s', compiler `%s'.\n" ++ return octstr_format(GW_NAME " %s version `%s'.\nCompiler `%s'.\n" + "System %s, release %s, version %s, machine %s.\n" + "Hostname %s, IP %s.\n" + "Libxml version %s.\n" +@@ -589,10 +589,9 @@ Octstr *version_report_string(const char + "Using %s malloc.\n", + boxname, GW_VERSION, + #ifdef __GNUC__ +- (__DATE__ " " __TIME__) , + __VERSION__, + #else +- "unknown" , "unknown", ++ "unknown", + #endif + u.sysname, u.release, u.version, u.machine, + octstr_get_cstr(get_official_name()), diff -Nru kannel-1.4.4/debian/patches/series kannel-1.4.4/debian/patches/series --- kannel-1.4.4/debian/patches/series 2015-08-02 10:52:45.000000000 +0200 +++ kannel-1.4.4/debian/patches/series 2016-04-02 14:45:27.000000000 +0200 @@ -1,2 +1,4 @@ 33_docpatch.patch 34_sqlite3_libversion.patch +35_use_changelog_date_in_doc.patch +36_strip_date_from_version_report_string.patch diff -Nru kannel-1.4.4/debian/rules kannel-1.4.4/debian/rules --- kannel-1.4.4/debian/rules 2015-11-22 20:43:35.000000000 +0100 +++ kannel-1.4.4/debian/rules 2016-04-02 14:46:14.000000000 +0200 @@ -1,8 +1,11 @@ #!/usr/bin/make -f +export AUTOHEADER = true + include /usr/share/cdbs/1/rules/upstream-tarball.mk include /usr/share/cdbs/1/class/autotools.mk include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/rules/autoreconf.mk DEB_UPSTREAM_PACKAGE = gateway DEB_UPSTREAM_URL = http://www.kannel.org/download/$(DEB_UPSTREAM_VERSION)
_______________________________________________ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds