gnu: perl: Build deterministically, and make byproducts deterministic.

With this, a --rounds=2 build passes, and timestamps in POD files can be
controlled with 'SOURCE_DATE_EPOCH'.

* gnu/packages/patches/perl-deterministic-ordering.patch,
gnu/packages/patches/perl-no-build-time.patch,
gnu/packages/patches/perl-source-date-epoch.patch: New files.
* gnu/packages/perl.scm (perl)[source]: Use them.
* gnu-system.am (dist_patch_DATA): Add them.
This commit is contained in:
Ludovic Courtès 2015-12-13 11:25:24 +01:00
parent 4de3507483
commit 4187fe750f
5 changed files with 81 additions and 1 deletions

View file

@ -0,0 +1,26 @@
Do not record the configuration and build time so that builds can be
reproduced bit-for-bit.
--- perl-5.22.0/Configure 1970-01-01 01:00:00.000000000 +0100
+++ perl-5.22.0/Configure 2015-12-13 00:14:43.148165080 +0100
@@ -3834,6 +3817,7 @@ esac
: who configured the system
cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
+cf_time='Thu Jan 1 00:00:01 UTC 1970'
case "$cf_by" in
"")
cf_by=`(logname) 2>/dev/null`
--- perl-5.22.0/perl.c 2015-12-13 00:25:30.269156627 +0100
+++ perl-5.22.0/perl.c 2015-12-13 00:25:38.265218175 +0100
@@ -1795,7 +1795,7 @@ S_Internals_V(pTHX_ CV *cv)
PUSHs(Perl_newSVpvn_flags(aTHX_ non_bincompat_options,
sizeof(non_bincompat_options) - 1, SVs_TEMP));
-#ifdef __DATE__
+#if 0
# ifdef __TIME__
PUSHs(Perl_newSVpvn_flags(aTHX_
STR_WITH_LEN("Compiled at " __DATE__ " " __TIME__),