[Reproducible-builds] Bug#820745: gap: please make the build reproducible
Dhole
dhole at openmailbox.org
Mon Apr 11 22:53:49 UTC 2016
Source: gap
Version: 4r7p9-1
Severity: wishlist
Tags: patch
User: reproducible-builds at lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-builds at lists.alioth.debian.org
Hi,
While working on the "reproducible builds" effort [1], we have noticed that
gap embeds timestamps of the current time in htm files generated by
etc/convert.pl.
This makes packages that use etc/convert.pl generate unreproducible
documentation files.
The attached patch fixes this by making convert.pl embed the date taken
from the SOURCE_DATE_EPOCH env var if this env var is set, or the
localtime otherwise. Once applied, convert.pl can generate reproducible
htm files in our current experimental framework.
[1]: https://wiki.debian.org/ReproducibleBuilds
Regards,
--
Dhole
-------------- next part --------------
diff -Nru gap-4r7p9/debian/changelog gap-4r7p9/debian/changelog
--- gap-4r7p9/debian/changelog 2015-12-07 20:06:14.000000000 +0100
+++ gap-4r7p9/debian/changelog 2016-04-10 18:36:58.000000000 +0200
@@ -1,3 +1,10 @@
+gap (4r7p9-1.1) UNRELEASED; urgency=medium
+
+ * Non-maintainer upload.
+ * Honour SOURCE_DATE_EPOCH when embedding timestamps in convert.pl
+
+ -- Eduard Sanou <dhole at openmailbox.org> Sun, 10 Apr 2016 18:36:37 +0200
+
gap (4r7p9-1) unstable; urgency=low
* New upstream release
diff -Nru gap-4r7p9/debian/patches/honour-SOURCE_DATE_EPOCH-in-convert.pl.patch gap-4r7p9/debian/patches/honour-SOURCE_DATE_EPOCH-in-convert.pl.patch
--- gap-4r7p9/debian/patches/honour-SOURCE_DATE_EPOCH-in-convert.pl.patch 1970-01-01 01:00:00.000000000 +0100
+++ gap-4r7p9/debian/patches/honour-SOURCE_DATE_EPOCH-in-convert.pl.patch 2016-04-11 23:19:31.000000000 +0200
@@ -0,0 +1,57 @@
+Description: Honour SOURCE_DATE_EPOCH in convert.pl
+ Honour SOURCE_DATE_EPOCH in convert.pl when embedding timestamps in the
+ html files.
+Author: Eduard Sanou <dhole at openmailbox.org>
+
+Index: gap-4r7p9/etc/convert.pl
+===================================================================
+--- gap-4r7p9.orig/etc/convert.pl
++++ gap-4r7p9/etc/convert.pl
+@@ -140,6 +140,7 @@
+ $] > 5 or die "Needs perl 5";
+
+ use Getopt::Std;
++use POSIX qw(strftime setlocale LC_TIME);
+
+ $gaproot="/usr/share/gap/";
+ #Added by Bill Allombert to absorb ../../.. from caller. Any pkg/*/* would do.
+@@ -410,8 +411,26 @@ sub printchaps {
+ }
+ }
+
+-# Printed at the bottom of every page.
+-$footer = "<P>\n" . sansserif( "GAP 4 manual<br>" . `date +"%B %Y"` ) .
++#
++# Get the local date or a reproducible date from the environment variable
++# SOURCE_DATE_EPOCH if set.
++#
++sub get_date {
++ my $date = "";
++
++ if (defined $ENV{SOURCE_DATE_EPOCH}) {
++ my $locale = setlocale(LC_TIME);
++ setlocale(LC_TIME, "C");
++ $date = strftime("%B %Y", gmtime($ENV{SOURCE_DATE_EPOCH}));
++ setlocale(LC_TIME, $locale);
++ } else {
++ $date = strftime("%B %Y", gmtime(time));
++ }
++
++ return $date;
++}
++
++$footer = "<P>\n" . sansserif( "GAP 4 manual<br>" . get_date ) .
+ "</body></html>";
+
+ # Section label ... this is the bit that goes after a # in an HREF link
+@@ -2091,8 +2110,8 @@ if ($opt_n) {
+ $booktitle = "$opt_n : a GAP 4 package";
+ $booktitle_body = booktitle_body($booktitle, ("GAP", $opt_n));
+ $mainman=0;
+- $footer = "<P>\n<address>$opt_n manual<br>" .
+- `date +"%B %Y"` . "</address></body></html>";
++ $footer = "<P>\n<address>$opt_n manual<br>" . get_date .
++ "</address></body></html>";
+ #print "c: $opt_c \n";
+ } else {
+ if ($opt_f) {
diff -Nru gap-4r7p9/debian/patches/series gap-4r7p9/debian/patches/series
--- gap-4r7p9/debian/patches/series 2015-06-17 18:27:52.000000000 +0200
+++ gap-4r7p9/debian/patches/series 2016-04-10 18:37:18.000000000 +0200
@@ -8,3 +8,4 @@
upstream-env-tmpdir
fix-basecc
fix-testinstall.g
+honour-SOURCE_DATE_EPOCH-in-convert.pl.patch
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/reproducible-builds/attachments/20160412/900e23da/attachment.sig>
More information about the Reproducible-builds
mailing list