Make Perl build more reproducibly.
Differential Revision: https://reviews.freebsd.org/D2016 Some bits from: Jérémy Bobbio <lunar@debian.org> Sponsored by: Absolight
This commit is contained in:
parent
bddf326fa5
commit
bfee655ccf
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=383641
18 changed files with 691 additions and 14 deletions
|
@ -3,7 +3,7 @@
|
|||
|
||||
PORTNAME= perl
|
||||
PORTVERSION= ${PERL_VERSION}
|
||||
PORTREVISION= 18
|
||||
PORTREVISION= 19
|
||||
CATEGORIES= lang devel perl5
|
||||
MASTER_SITES= CPAN
|
||||
MASTER_SITE_SUBDIR= ../../src
|
||||
|
@ -67,7 +67,9 @@ CONFIGURE_ARGS= -sde -Dprefix=${PREFIX} \
|
|||
-Dsiteman1dir=${PREFIX}/man/man1 \
|
||||
-Dotherlibdirs=${PREFIX}/lib/perl5/site_perl/${PERL_VER}:${PREFIX}/lib/perl5/site_perl/${PERL_VER}/${PERL_ARCH} \
|
||||
-Ui_malloc -Ui_iconv -Uinstallusrbinperl -Dusenm=n \
|
||||
-Dcc="${CC}" -Duseshrplib -Dinc_version_list=none
|
||||
-Dcc="${CC}" -Duseshrplib -Dinc_version_list=none \
|
||||
-Dcf_by=${MAINTAINER:C,@.*,,} -Dcf_email=${MAINTAINER} \
|
||||
-Dcf_time="`env LANG=C ${STAT} -t \"%a %b %d %T %Z %Y\" -f %Sm ${_DISTDIR}/${DISTNAME}${EXTRACT_SUFX}`"
|
||||
# Keep the following two in sync.
|
||||
# lddlflags is used for all .so linking
|
||||
# shrpldflags is used for libperl.so, so remove all the extra bits inherited from lddlflags.
|
||||
|
|
|
@ -1,6 +1,18 @@
|
|||
--- Configure.orig 2010-07-14 15:28:45.000000000 +0000
|
||||
+++ Configure 2010-07-14 15:29:23.000000000 +0000
|
||||
@@ -4798,7 +4798,7 @@
|
||||
--- Configure.orig 2013-03-04 15:16:21 UTC
|
||||
+++ Configure
|
||||
@@ -3625,7 +3625,10 @@ esac
|
||||
. ./posthint.sh
|
||||
|
||||
: who configured the system
|
||||
-cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
|
||||
+case "$cf_time" in
|
||||
+"")
|
||||
+ cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1` ;;
|
||||
+esac
|
||||
case "$cf_by" in
|
||||
"")
|
||||
cf_by=`(logname) 2>/dev/null`
|
||||
@@ -4721,7 +4724,7 @@ esac
|
||||
libpth=''
|
||||
for xxx in $dlist
|
||||
do
|
||||
|
@ -9,7 +21,7 @@
|
|||
case " $libpth " in
|
||||
*" $xxx "*) ;;
|
||||
*) libpth="$libpth $xxx";;
|
||||
@@ -9125,8 +9125,7 @@
|
||||
@@ -9089,8 +9092,7 @@ prefixvar=siteman3dir
|
||||
|
||||
: determine where add-on public executable scripts go
|
||||
case "$sitescript" in
|
||||
|
|
94
lang/perl5.16/files/patch-cpan_podlators_lib_Pod_Man.pm
Normal file
94
lang/perl5.16/files/patch-cpan_podlators_lib_Pod_Man.pm
Normal file
|
@ -0,0 +1,94 @@
|
|||
--- cpan/podlators/lib/Pod/Man.pm.orig 2013-03-04 15:16:21 UTC
|
||||
+++ cpan/podlators/lib/Pod/Man.pm
|
||||
@@ -851,25 +851,42 @@ sub devise_title {
|
||||
}
|
||||
|
||||
# Determine the modification date and return that, properly formatted in ISO
|
||||
-# format. If we can't get the modification date of the input, instead use the
|
||||
-# current time. Pod::Simple returns a completely unuseful stringified file
|
||||
-# handle as the source_filename for input from a file handle, so we have to
|
||||
-# deal with that as well.
|
||||
+# format.
|
||||
+#
|
||||
+# If POD_MAN_DATE is set, that overrides anything else. This can be used for
|
||||
+# reproducible generation of the same file even if the input file timestamps
|
||||
+# are unpredictable or the POD coms from standard input.
|
||||
+#
|
||||
+# Otherwise, use the modification date of the input if we can stat it. Be
|
||||
+# aware that Pod::Simple returns the stringification of the file handle as
|
||||
+# source_filename for input from a file handle, so we'll stat some random ref
|
||||
+# string in that case. If that fails, instead use the current time.
|
||||
+#
|
||||
+# $self - Pod::Man object, used to get the source file
|
||||
+#
|
||||
+# Returns: YYYY-MM-DD date suitable for the left-hand footer
|
||||
sub devise_date {
|
||||
my ($self) = @_;
|
||||
+
|
||||
+ # If POD_MAN_DATE is set, always use it.
|
||||
+ if ($ENV{POD_MAN_DATE}) {
|
||||
+ return $ENV{POD_MAN_DATE};
|
||||
+ }
|
||||
+
|
||||
+ # Otherwise, get the input filename and try to stat it. If that fails,
|
||||
+ # use the current time.
|
||||
my $input = $self->source_filename;
|
||||
my $time;
|
||||
if ($input) {
|
||||
- $time = (stat $input)[9] || time;
|
||||
+ $time = (stat($input))[9] || time();
|
||||
} else {
|
||||
- $time = time;
|
||||
+ $time = time();
|
||||
}
|
||||
|
||||
- # Can't use POSIX::strftime(), which uses Fcntl, because MakeMaker
|
||||
- # uses this and it has to work in the core which can't load dynamic
|
||||
- # libraries.
|
||||
- my ($year, $month, $day) = (localtime $time)[5,4,3];
|
||||
- return sprintf ("%04d-%02d-%02d", $year + 1900, $month + 1, $day);
|
||||
+ # Can't use POSIX::strftime(), which uses Fcntl, because MakeMaker uses
|
||||
+ # this and it has to work in the core which can't load dynamic libraries.
|
||||
+ my ($year, $month, $day) = (localtime($time))[5,4,3];
|
||||
+ return sprintf("%04d-%02d-%02d", $year + 1900, $month + 1, $day);
|
||||
}
|
||||
|
||||
# Print out the preamble and the title. The meaning of the arguments to .TH
|
||||
@@ -1553,10 +1570,12 @@ Documentation".
|
||||
|
||||
=item date
|
||||
|
||||
-Sets the left-hand footer. By default, the modification date of the input
|
||||
-file will be used, or the current date if stat() can't find that file (the
|
||||
-case if the input is from C<STDIN>), and the date will be formatted as
|
||||
-C<YYYY-MM-DD>.
|
||||
+Sets the left-hand footer. If this option is not set, the contents of the
|
||||
+environment variable POD_MAN_DATE, if set, will be used. Failing that,
|
||||
+the modification date of the input file will be used, or the current time
|
||||
+if stat() can't find that file (which will be the case if the input is
|
||||
+from C<STDIN>). If obtained from the file modification date or the
|
||||
+current time, he date will be formatted as C<YYYY-MM-DD>.
|
||||
|
||||
=item fixed
|
||||
|
||||
@@ -1685,6 +1704,20 @@ invalid. A quote specification must be
|
||||
|
||||
=back
|
||||
|
||||
+=head1 ENVIRONMENT
|
||||
+
|
||||
+=over 4
|
||||
+
|
||||
+=item POD_MAN_DATE
|
||||
+
|
||||
+If set, this will be used as the value of the left-hand footer unless the
|
||||
+C<date> option is explicitly set, overriding the timestamp of the input
|
||||
+file or the current time. This is primarily useful to ensure reproducible
|
||||
+builds of the same output file given the same souce and Pod::Man version,
|
||||
+even when file timestamps may not be consistent.
|
||||
+
|
||||
+=back
|
||||
+
|
||||
=head1 BUGS
|
||||
|
||||
Encoding handling assumes that PerlIO is available and does not work
|
39
lang/perl5.16/files/patch-cpan_podlators_t_devise-date.t
Normal file
39
lang/perl5.16/files/patch-cpan_podlators_t_devise-date.t
Normal file
|
@ -0,0 +1,39 @@
|
|||
--- cpan/podlators/t/devise-date.t.orig 2013-03-04 15:16:21 UTC
|
||||
+++ cpan/podlators/t/devise-date.t
|
||||
@@ -1,15 +1,28 @@
|
||||
-#!/usr/bin/perl -w
|
||||
-
|
||||
-# In order for MakeMaker to build in the core, nothing can use
|
||||
-# Fcntl which includes POSIX. devise_date()'s use of strftime()
|
||||
-# was replaced. This tests that it's identical.
|
||||
+#!/usr/bin/perl
|
||||
+#
|
||||
+# In order for MakeMaker to build in the core, nothing can use Fcntl which
|
||||
+# includes POSIX. devise_date()'s use of strftime() was replaced. This tests
|
||||
+# that it's identical. It also tests special handling of the POD_MAN_DATE
|
||||
+# environment variable.
|
||||
|
||||
+use 5.006;
|
||||
use strict;
|
||||
-
|
||||
-use Test::More tests => 1;
|
||||
+use warnings;
|
||||
|
||||
use Pod::Man;
|
||||
use POSIX qw(strftime);
|
||||
|
||||
+use Test::More tests => 2;
|
||||
+
|
||||
+# Check that the results of device_date matches strftime. There is no input
|
||||
+# file name, so this will use the current time.
|
||||
my $parser = Pod::Man->new;
|
||||
-is $parser->devise_date, strftime("%Y-%m-%d", localtime);
|
||||
+is(
|
||||
+ $parser->devise_date,
|
||||
+ strftime('%Y-%m-%d', localtime()),
|
||||
+ 'devise_date matches strftime'
|
||||
+);
|
||||
+
|
||||
+# Set the override environment variable and ensure that it's honored.
|
||||
+local $ENV{POD_MAN_DATE} = '2014-01-01';
|
||||
+is($parser->devise_date, '2014-01-01', 'devise_date honors POD_MAN_DATE');
|
21
lang/perl5.16/files/patch-perl.c
Normal file
21
lang/perl5.16/files/patch-perl.c
Normal file
|
@ -0,0 +1,21 @@
|
|||
--- perl.c.orig 2013-03-04 15:16:22 UTC
|
||||
+++ perl.c
|
||||
@@ -1754,18 +1754,7 @@ S_Internals_V(pTHX_ CV *cv)
|
||||
PUSHs(Perl_newSVpvn_flags(aTHX_ non_bincompat_options,
|
||||
sizeof(non_bincompat_options) - 1, SVs_TEMP));
|
||||
|
||||
-#ifdef __DATE__
|
||||
-# ifdef __TIME__
|
||||
- PUSHs(Perl_newSVpvn_flags(aTHX_
|
||||
- STR_WITH_LEN("Compiled at " __DATE__ " " __TIME__),
|
||||
- SVs_TEMP));
|
||||
-# else
|
||||
- PUSHs(Perl_newSVpvn_flags(aTHX_ STR_WITH_LEN("Compiled on " __DATE__),
|
||||
- SVs_TEMP));
|
||||
-# endif
|
||||
-#else
|
||||
PUSHs(&PL_sv_undef);
|
||||
-#endif
|
||||
|
||||
for (i = 1; i <= local_patch_count; i++) {
|
||||
/* This will be an undef, if PL_localpatches[i] is NULL. */
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
PORTNAME= perl
|
||||
PORTVERSION= ${PERL_VERSION}
|
||||
PORTREVISION= 11
|
||||
PORTREVISION= 12
|
||||
CATEGORIES= lang devel perl5
|
||||
MASTER_SITES= CPAN
|
||||
MASTER_SITE_SUBDIR= ../../src
|
||||
|
@ -84,7 +84,9 @@ CONFIGURE_ARGS= -sde -Dprefix=${PREFIX} \
|
|||
-Dsiteman1dir=${PREFIX}/man/man1 \
|
||||
-Dotherlibdirs=${PREFIX}/lib/perl5/site_perl/${PERL_VER}:${PREFIX}/lib/perl5/site_perl/${PERL_VER}/${PERL_ARCH} \
|
||||
-Ui_malloc -Ui_iconv -Uinstallusrbinperl -Dusenm=n \
|
||||
-Dcc="${CC}" -Duseshrplib -Dinc_version_list=none
|
||||
-Dcc="${CC}" -Duseshrplib -Dinc_version_list=none \
|
||||
-Dcf_by=${MAINTAINER:C,@.*,,} -Dcf_email=${MAINTAINER} \
|
||||
-Dcf_time="`env LANG=C ${STAT} -t \"%a %b %d %T %Z %Y\" -f %Sm ${_DISTDIR}/${DISTNAME}${EXTRACT_SUFX}`"
|
||||
# Keep the following two in sync.
|
||||
# lddlflags is used for all .so linking
|
||||
# shrpldflags is used for libperl.so, so remove all the extra bits inherited from lddlflags.
|
||||
|
|
|
@ -1,6 +1,18 @@
|
|||
--- Configure.orig 2014-10-01 01:32:59 UTC
|
||||
+++ Configure
|
||||
@@ -4730,7 +4730,7 @@
|
||||
@@ -3634,7 +3634,10 @@ esac
|
||||
. ./posthint.sh
|
||||
|
||||
: who configured the system
|
||||
-cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
|
||||
+case "$cf_time" in
|
||||
+"")
|
||||
+ cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1` ;;
|
||||
+esac
|
||||
case "$cf_by" in
|
||||
"")
|
||||
cf_by=`(logname) 2>/dev/null`
|
||||
@@ -4730,7 +4733,7 @@ esac
|
||||
libpth=''
|
||||
for xxx in $dlist
|
||||
do
|
||||
|
@ -9,7 +21,7 @@
|
|||
case " $libpth " in
|
||||
*" $xxx "*) ;;
|
||||
*) libpth="$libpth $xxx";;
|
||||
@@ -9143,8 +9143,7 @@
|
||||
@@ -9143,8 +9146,7 @@ prefixvar=siteman3dir
|
||||
|
||||
: determine where add-on public executable scripts go
|
||||
case "$sitescript" in
|
||||
|
|
107
lang/perl5.18/files/patch-cpan_podlators_lib_Pod_Man.pm
Normal file
107
lang/perl5.18/files/patch-cpan_podlators_lib_Pod_Man.pm
Normal file
|
@ -0,0 +1,107 @@
|
|||
--- cpan/podlators/lib/Pod/Man.pm.orig 2014-10-01 01:33:00 UTC
|
||||
+++ cpan/podlators/lib/Pod/Man.pm
|
||||
@@ -883,25 +883,42 @@ sub devise_title {
|
||||
}
|
||||
|
||||
# Determine the modification date and return that, properly formatted in ISO
|
||||
-# format. If we can't get the modification date of the input, instead use the
|
||||
-# current time. Pod::Simple returns a completely unuseful stringified file
|
||||
-# handle as the source_filename for input from a file handle, so we have to
|
||||
-# deal with that as well.
|
||||
+# format.
|
||||
+#
|
||||
+# If POD_MAN_DATE is set, that overrides anything else. This can be used for
|
||||
+# reproducible generation of the same file even if the input file timestamps
|
||||
+# are unpredictable or the POD coms from standard input.
|
||||
+#
|
||||
+# Otherwise, use the modification date of the input if we can stat it. Be
|
||||
+# aware that Pod::Simple returns the stringification of the file handle as
|
||||
+# source_filename for input from a file handle, so we'll stat some random ref
|
||||
+# string in that case. If that fails, instead use the current time.
|
||||
+#
|
||||
+# $self - Pod::Man object, used to get the source file
|
||||
+#
|
||||
+# Returns: YYYY-MM-DD date suitable for the left-hand footer
|
||||
sub devise_date {
|
||||
my ($self) = @_;
|
||||
+
|
||||
+ # If POD_MAN_DATE is set, always use it.
|
||||
+ if ($ENV{POD_MAN_DATE}) {
|
||||
+ return $ENV{POD_MAN_DATE};
|
||||
+ }
|
||||
+
|
||||
+ # Otherwise, get the input filename and try to stat it. If that fails,
|
||||
+ # use the current time.
|
||||
my $input = $self->source_filename;
|
||||
my $time;
|
||||
if ($input) {
|
||||
- $time = (stat $input)[9] || time;
|
||||
+ $time = (stat($input))[9] || time();
|
||||
} else {
|
||||
- $time = time;
|
||||
+ $time = time();
|
||||
}
|
||||
|
||||
- # Can't use POSIX::strftime(), which uses Fcntl, because MakeMaker
|
||||
- # uses this and it has to work in the core which can't load dynamic
|
||||
- # libraries.
|
||||
- my ($year, $month, $day) = (localtime $time)[5,4,3];
|
||||
- return sprintf ("%04d-%02d-%02d", $year + 1900, $month + 1, $day);
|
||||
+ # Can't use POSIX::strftime(), which uses Fcntl, because MakeMaker uses
|
||||
+ # this and it has to work in the core which can't load dynamic libraries.
|
||||
+ my ($year, $month, $day) = (localtime($time))[5,4,3];
|
||||
+ return sprintf("%04d-%02d-%02d", $year + 1900, $month + 1, $day);
|
||||
}
|
||||
|
||||
# Print out the preamble and the title. The meaning of the arguments to .TH
|
||||
@@ -1613,6 +1630,15 @@ argument.
|
||||
Sets the centered page header to use instead of "User Contributed Perl
|
||||
Documentation".
|
||||
|
||||
+=item date
|
||||
+
|
||||
+Sets the left-hand footer. If this option is not set, the contents of the
|
||||
+environment variable POD_MAN_DATE, if set, will be used. Failing that,
|
||||
+the modification date of the input file will be used, or the current time
|
||||
+if stat() can't find that file (which will be the case if the input is
|
||||
+from C<STDIN>). If obtained from the file modification date or the
|
||||
+current time, he date will be formatted as C<YYYY-MM-DD>.
|
||||
+
|
||||
=item errors
|
||||
|
||||
How to report errors. C<die> says to throw an exception on any POD
|
||||
@@ -1623,13 +1649,6 @@ POD errors entirely, as much as possible
|
||||
|
||||
The default is C<output>.
|
||||
|
||||
-=item date
|
||||
-
|
||||
-Sets the left-hand footer. By default, the modification date of the input
|
||||
-file will be used, or the current date if stat() can't find that file (the
|
||||
-case if the input is from C<STDIN>), and the date will be formatted as
|
||||
-C<YYYY-MM-DD>.
|
||||
-
|
||||
=item fixed
|
||||
|
||||
The fixed-width font to use for verbatim text and code. Defaults to
|
||||
@@ -1785,6 +1804,20 @@ option was set to C<die>.
|
||||
|
||||
=back
|
||||
|
||||
+=head1 ENVIRONMENT
|
||||
+
|
||||
+=over 4
|
||||
+
|
||||
+=item POD_MAN_DATE
|
||||
+
|
||||
+If set, this will be used as the value of the left-hand footer unless the
|
||||
+C<date> option is explicitly set, overriding the timestamp of the input
|
||||
+file or the current time. This is primarily useful to ensure reproducible
|
||||
+builds of the same output file given the same souce and Pod::Man version,
|
||||
+even when file timestamps may not be consistent.
|
||||
+
|
||||
+=back
|
||||
+
|
||||
=head1 BUGS
|
||||
|
||||
Encoding handling assumes that PerlIO is available and does not work
|
39
lang/perl5.18/files/patch-cpan_podlators_t_devise-date.t
Normal file
39
lang/perl5.18/files/patch-cpan_podlators_t_devise-date.t
Normal file
|
@ -0,0 +1,39 @@
|
|||
--- cpan/podlators/t/devise-date.t.orig 2014-01-31 21:55:51 UTC
|
||||
+++ cpan/podlators/t/devise-date.t
|
||||
@@ -1,15 +1,28 @@
|
||||
-#!/usr/bin/perl -w
|
||||
-
|
||||
-# In order for MakeMaker to build in the core, nothing can use
|
||||
-# Fcntl which includes POSIX. devise_date()'s use of strftime()
|
||||
-# was replaced. This tests that it's identical.
|
||||
+#!/usr/bin/perl
|
||||
+#
|
||||
+# In order for MakeMaker to build in the core, nothing can use Fcntl which
|
||||
+# includes POSIX. devise_date()'s use of strftime() was replaced. This tests
|
||||
+# that it's identical. It also tests special handling of the POD_MAN_DATE
|
||||
+# environment variable.
|
||||
|
||||
+use 5.006;
|
||||
use strict;
|
||||
-
|
||||
-use Test::More tests => 1;
|
||||
+use warnings;
|
||||
|
||||
use Pod::Man;
|
||||
use POSIX qw(strftime);
|
||||
|
||||
+use Test::More tests => 2;
|
||||
+
|
||||
+# Check that the results of device_date matches strftime. There is no input
|
||||
+# file name, so this will use the current time.
|
||||
my $parser = Pod::Man->new;
|
||||
-is $parser->devise_date, strftime("%Y-%m-%d", localtime);
|
||||
+is(
|
||||
+ $parser->devise_date,
|
||||
+ strftime('%Y-%m-%d', localtime()),
|
||||
+ 'devise_date matches strftime'
|
||||
+);
|
||||
+
|
||||
+# Set the override environment variable and ensure that it's honored.
|
||||
+local $ENV{POD_MAN_DATE} = '2014-01-01';
|
||||
+is($parser->devise_date, '2014-01-01', 'devise_date honors POD_MAN_DATE');
|
21
lang/perl5.18/files/patch-perl.c
Normal file
21
lang/perl5.18/files/patch-perl.c
Normal file
|
@ -0,0 +1,21 @@
|
|||
--- perl.c.orig 2014-10-01 01:33:00 UTC
|
||||
+++ perl.c
|
||||
@@ -1789,18 +1789,7 @@ S_Internals_V(pTHX_ CV *cv)
|
||||
PUSHs(Perl_newSVpvn_flags(aTHX_ non_bincompat_options,
|
||||
sizeof(non_bincompat_options) - 1, SVs_TEMP));
|
||||
|
||||
-#ifdef __DATE__
|
||||
-# ifdef __TIME__
|
||||
- PUSHs(Perl_newSVpvn_flags(aTHX_
|
||||
- STR_WITH_LEN("Compiled at " __DATE__ " " __TIME__),
|
||||
- SVs_TEMP));
|
||||
-# else
|
||||
- PUSHs(Perl_newSVpvn_flags(aTHX_ STR_WITH_LEN("Compiled on " __DATE__),
|
||||
- SVs_TEMP));
|
||||
-# endif
|
||||
-#else
|
||||
PUSHs(&PL_sv_undef);
|
||||
-#endif
|
||||
|
||||
for (i = 1; i <= local_patch_count; i++) {
|
||||
/* This will be an undef, if PL_localpatches[i] is NULL. */
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
PORTNAME= perl
|
||||
PORTVERSION= ${PERL_VERSION}
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= lang devel perl5
|
||||
MASTER_SITES= CPAN
|
||||
MASTER_SITE_SUBDIR= ../../src
|
||||
|
@ -83,7 +84,9 @@ CONFIGURE_ARGS= -sde -Dprefix=${PREFIX} \
|
|||
-Dsiteman3dir=${SITE_MAN3} \
|
||||
-Dsiteman1dir=${PREFIX}/man/man1 \
|
||||
-Ui_malloc -Ui_iconv -Uinstallusrbinperl -Dusenm=n \
|
||||
-Dcc="${CC}" -Duseshrplib -Dinc_version_list=none
|
||||
-Dcc="${CC}" -Duseshrplib -Dinc_version_list=none \
|
||||
-Dcf_by=${MAINTAINER:C,@.*,,} -Dcf_email=${MAINTAINER} \
|
||||
-Dcf_time="`env LANG=C ${STAT} -t \"%a %b %d %T %Z %Y\" -f %Sm ${_DISTDIR}/${DISTNAME}${EXTRACT_SUFX}`"
|
||||
# Keep the following two in sync.
|
||||
# lddlflags is used for all .so linking
|
||||
# shrpldflags is used for libperl.so, so remove all the extra bits inherited from lddlflags.
|
||||
|
|
|
@ -1,6 +1,18 @@
|
|||
--- Configure.orig 2015-01-10 12:06:37 UTC
|
||||
+++ Configure
|
||||
@@ -4948,7 +4948,7 @@ esac
|
||||
@@ -3767,7 +3767,10 @@ esac
|
||||
. ./posthint.sh
|
||||
|
||||
: who configured the system
|
||||
-cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
|
||||
+case "$cf_time" in
|
||||
+"")
|
||||
+ cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1` ;;
|
||||
+esac
|
||||
case "$cf_by" in
|
||||
"")
|
||||
cf_by=`(logname) 2>/dev/null`
|
||||
@@ -4948,7 +4951,7 @@ esac
|
||||
: Now check and see which directories actually exist, avoiding duplicates
|
||||
for xxx in $dlist
|
||||
do
|
||||
|
@ -9,7 +21,7 @@
|
|||
case " $libpth " in
|
||||
*" $xxx "*) ;;
|
||||
*) libpth="$libpth $xxx";;
|
||||
@@ -9342,8 +9342,7 @@ prefixvar=siteman3dir
|
||||
@@ -9342,8 +9345,7 @@ prefixvar=siteman3dir
|
||||
|
||||
: determine where add-on public executable scripts go
|
||||
case "$sitescript" in
|
||||
|
|
107
lang/perl5.20/files/patch-cpan_podlators_lib_Pod_Man.pm
Normal file
107
lang/perl5.20/files/patch-cpan_podlators_lib_Pod_Man.pm
Normal file
|
@ -0,0 +1,107 @@
|
|||
--- cpan/podlators/lib/Pod/Man.pm.orig 2014-12-27 11:48:48 UTC
|
||||
+++ cpan/podlators/lib/Pod/Man.pm
|
||||
@@ -876,25 +876,42 @@ sub devise_title {
|
||||
}
|
||||
|
||||
# Determine the modification date and return that, properly formatted in ISO
|
||||
-# format. If we can't get the modification date of the input, instead use the
|
||||
-# current time. Pod::Simple returns a completely unuseful stringified file
|
||||
-# handle as the source_filename for input from a file handle, so we have to
|
||||
-# deal with that as well.
|
||||
+# format.
|
||||
+#
|
||||
+# If POD_MAN_DATE is set, that overrides anything else. This can be used for
|
||||
+# reproducible generation of the same file even if the input file timestamps
|
||||
+# are unpredictable or the POD coms from standard input.
|
||||
+#
|
||||
+# Otherwise, use the modification date of the input if we can stat it. Be
|
||||
+# aware that Pod::Simple returns the stringification of the file handle as
|
||||
+# source_filename for input from a file handle, so we'll stat some random ref
|
||||
+# string in that case. If that fails, instead use the current time.
|
||||
+#
|
||||
+# $self - Pod::Man object, used to get the source file
|
||||
+#
|
||||
+# Returns: YYYY-MM-DD date suitable for the left-hand footer
|
||||
sub devise_date {
|
||||
my ($self) = @_;
|
||||
+
|
||||
+ # If POD_MAN_DATE is set, always use it.
|
||||
+ if ($ENV{POD_MAN_DATE}) {
|
||||
+ return $ENV{POD_MAN_DATE};
|
||||
+ }
|
||||
+
|
||||
+ # Otherwise, get the input filename and try to stat it. If that fails,
|
||||
+ # use the current time.
|
||||
my $input = $self->source_filename;
|
||||
my $time;
|
||||
if ($input) {
|
||||
- $time = (stat $input)[9] || time;
|
||||
+ $time = (stat($input))[9] || time();
|
||||
} else {
|
||||
- $time = time;
|
||||
+ $time = time();
|
||||
}
|
||||
|
||||
- # Can't use POSIX::strftime(), which uses Fcntl, because MakeMaker
|
||||
- # uses this and it has to work in the core which can't load dynamic
|
||||
- # libraries.
|
||||
- my ($year, $month, $day) = (localtime $time)[5,4,3];
|
||||
- return sprintf ("%04d-%02d-%02d", $year + 1900, $month + 1, $day);
|
||||
+ # Can't use POSIX::strftime(), which uses Fcntl, because MakeMaker uses
|
||||
+ # this and it has to work in the core which can't load dynamic libraries.
|
||||
+ my ($year, $month, $day) = (localtime($time))[5,4,3];
|
||||
+ return sprintf("%04d-%02d-%02d", $year + 1900, $month + 1, $day);
|
||||
}
|
||||
|
||||
# Print out the preamble and the title. The meaning of the arguments to .TH
|
||||
@@ -1632,6 +1649,15 @@ argument.
|
||||
Sets the centered page header to use instead of "User Contributed Perl
|
||||
Documentation".
|
||||
|
||||
+=item date
|
||||
+
|
||||
+Sets the left-hand footer. If this option is not set, the contents of the
|
||||
+environment variable POD_MAN_DATE, if set, will be used. Failing that,
|
||||
+the modification date of the input file will be used, or the current time
|
||||
+if stat() can't find that file (which will be the case if the input is
|
||||
+from C<STDIN>). If obtained from the file modification date or the
|
||||
+current time, he date will be formatted as C<YYYY-MM-DD>.
|
||||
+
|
||||
=item errors
|
||||
|
||||
How to report errors. C<die> says to throw an exception on any POD
|
||||
@@ -1642,13 +1668,6 @@ POD errors entirely, as much as possible
|
||||
|
||||
The default is C<pod>.
|
||||
|
||||
-=item date
|
||||
-
|
||||
-Sets the left-hand footer. By default, the modification date of the input
|
||||
-file will be used, or the current date if stat() can't find that file (the
|
||||
-case if the input is from C<STDIN>), and the date will be formatted as
|
||||
-C<YYYY-MM-DD>.
|
||||
-
|
||||
=item fixed
|
||||
|
||||
The fixed-width font to use for verbatim text and code. Defaults to
|
||||
@@ -1810,6 +1829,20 @@ option was set to C<die>.
|
||||
|
||||
=back
|
||||
|
||||
+=head1 ENVIRONMENT
|
||||
+
|
||||
+=over 4
|
||||
+
|
||||
+=item POD_MAN_DATE
|
||||
+
|
||||
+If set, this will be used as the value of the left-hand footer unless the
|
||||
+C<date> option is explicitly set, overriding the timestamp of the input
|
||||
+file or the current time. This is primarily useful to ensure reproducible
|
||||
+builds of the same output file given the same souce and Pod::Man version,
|
||||
+even when file timestamps may not be consistent.
|
||||
+
|
||||
+=back
|
||||
+
|
||||
=head1 BUGS
|
||||
|
||||
Encoding handling assumes that PerlIO is available and does not work
|
39
lang/perl5.20/files/patch-cpan_podlators_t_devise-date.t
Normal file
39
lang/perl5.20/files/patch-cpan_podlators_t_devise-date.t
Normal file
|
@ -0,0 +1,39 @@
|
|||
--- cpan/podlators/t/devise-date.t.orig 2014-12-27 11:48:48 UTC
|
||||
+++ cpan/podlators/t/devise-date.t
|
||||
@@ -1,15 +1,28 @@
|
||||
-#!/usr/bin/perl -w
|
||||
-
|
||||
-# In order for MakeMaker to build in the core, nothing can use
|
||||
-# Fcntl which includes POSIX. devise_date()'s use of strftime()
|
||||
-# was replaced. This tests that it's identical.
|
||||
+#!/usr/bin/perl
|
||||
+#
|
||||
+# In order for MakeMaker to build in the core, nothing can use Fcntl which
|
||||
+# includes POSIX. devise_date()'s use of strftime() was replaced. This tests
|
||||
+# that it's identical. It also tests special handling of the POD_MAN_DATE
|
||||
+# environment variable.
|
||||
|
||||
+use 5.006;
|
||||
use strict;
|
||||
-
|
||||
-use Test::More tests => 1;
|
||||
+use warnings;
|
||||
|
||||
use Pod::Man;
|
||||
use POSIX qw(strftime);
|
||||
|
||||
+use Test::More tests => 2;
|
||||
+
|
||||
+# Check that the results of device_date matches strftime. There is no input
|
||||
+# file name, so this will use the current time.
|
||||
my $parser = Pod::Man->new;
|
||||
-is $parser->devise_date, strftime("%Y-%m-%d", localtime);
|
||||
+is(
|
||||
+ $parser->devise_date,
|
||||
+ strftime('%Y-%m-%d', localtime()),
|
||||
+ 'devise_date matches strftime'
|
||||
+);
|
||||
+
|
||||
+# Set the override environment variable and ensure that it's honored.
|
||||
+local $ENV{POD_MAN_DATE} = '2014-01-01';
|
||||
+is($parser->devise_date, '2014-01-01', 'devise_date honors POD_MAN_DATE');
|
21
lang/perl5.20/files/patch-perl.c
Normal file
21
lang/perl5.20/files/patch-perl.c
Normal file
|
@ -0,0 +1,21 @@
|
|||
--- perl.c.orig 2015-01-28 21:12:04 UTC
|
||||
+++ perl.c
|
||||
@@ -1776,18 +1776,7 @@ S_Internals_V(pTHX_ CV *cv)
|
||||
PUSHs(Perl_newSVpvn_flags(aTHX_ non_bincompat_options,
|
||||
sizeof(non_bincompat_options) - 1, SVs_TEMP));
|
||||
|
||||
-#ifdef __DATE__
|
||||
-# ifdef __TIME__
|
||||
- PUSHs(Perl_newSVpvn_flags(aTHX_
|
||||
- STR_WITH_LEN("Compiled at " __DATE__ " " __TIME__),
|
||||
- SVs_TEMP));
|
||||
-# else
|
||||
- PUSHs(Perl_newSVpvn_flags(aTHX_ STR_WITH_LEN("Compiled on " __DATE__),
|
||||
- SVs_TEMP));
|
||||
-# endif
|
||||
-#else
|
||||
PUSHs(&PL_sv_undef);
|
||||
-#endif
|
||||
|
||||
for (i = 1; i <= local_patch_count; i++) {
|
||||
/* This will be an undef, if PL_localpatches[i] is NULL. */
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
PORTNAME= podlators
|
||||
PORTVERSION= 2.5.3
|
||||
PORTREVISION= 1
|
||||
PORTREVISION= 2
|
||||
CATEGORIES= textproc perl5
|
||||
MASTER_SITES= CPAN
|
||||
MASTER_SITE_SUBDIR= Pod
|
||||
|
|
107
textproc/p5-podlators/files/patch-lib_Pod_Man.pm
Normal file
107
textproc/p5-podlators/files/patch-lib_Pod_Man.pm
Normal file
|
@ -0,0 +1,107 @@
|
|||
--- lib/Pod/Man.pm.orig 2013-10-06 06:09:56 UTC
|
||||
+++ lib/Pod/Man.pm
|
||||
@@ -876,25 +876,42 @@ sub devise_title {
|
||||
}
|
||||
|
||||
# Determine the modification date and return that, properly formatted in ISO
|
||||
-# format. If we can't get the modification date of the input, instead use the
|
||||
-# current time. Pod::Simple returns a completely unuseful stringified file
|
||||
-# handle as the source_filename for input from a file handle, so we have to
|
||||
-# deal with that as well.
|
||||
+# format.
|
||||
+#
|
||||
+# If POD_MAN_DATE is set, that overrides anything else. This can be used for
|
||||
+# reproducible generation of the same file even if the input file timestamps
|
||||
+# are unpredictable or the POD coms from standard input.
|
||||
+#
|
||||
+# Otherwise, use the modification date of the input if we can stat it. Be
|
||||
+# aware that Pod::Simple returns the stringification of the file handle as
|
||||
+# source_filename for input from a file handle, so we'll stat some random ref
|
||||
+# string in that case. If that fails, instead use the current time.
|
||||
+#
|
||||
+# $self - Pod::Man object, used to get the source file
|
||||
+#
|
||||
+# Returns: YYYY-MM-DD date suitable for the left-hand footer
|
||||
sub devise_date {
|
||||
my ($self) = @_;
|
||||
+
|
||||
+ # If POD_MAN_DATE is set, always use it.
|
||||
+ if ($ENV{POD_MAN_DATE}) {
|
||||
+ return $ENV{POD_MAN_DATE};
|
||||
+ }
|
||||
+
|
||||
+ # Otherwise, get the input filename and try to stat it. If that fails,
|
||||
+ # use the current time.
|
||||
my $input = $self->source_filename;
|
||||
my $time;
|
||||
if ($input) {
|
||||
- $time = (stat $input)[9] || time;
|
||||
+ $time = (stat($input))[9] || time();
|
||||
} else {
|
||||
- $time = time;
|
||||
+ $time = time();
|
||||
}
|
||||
|
||||
- # Can't use POSIX::strftime(), which uses Fcntl, because MakeMaker
|
||||
- # uses this and it has to work in the core which can't load dynamic
|
||||
- # libraries.
|
||||
- my ($year, $month, $day) = (localtime $time)[5,4,3];
|
||||
- return sprintf ("%04d-%02d-%02d", $year + 1900, $month + 1, $day);
|
||||
+ # Can't use POSIX::strftime(), which uses Fcntl, because MakeMaker uses
|
||||
+ # this and it has to work in the core which can't load dynamic libraries.
|
||||
+ my ($year, $month, $day) = (localtime($time))[5,4,3];
|
||||
+ return sprintf("%04d-%02d-%02d", $year + 1900, $month + 1, $day);
|
||||
}
|
||||
|
||||
# Print out the preamble and the title. The meaning of the arguments to .TH
|
||||
@@ -1632,6 +1649,15 @@ argument.
|
||||
Sets the centered page header to use instead of "User Contributed Perl
|
||||
Documentation".
|
||||
|
||||
+=item date
|
||||
+
|
||||
+Sets the left-hand footer. If this option is not set, the contents of the
|
||||
+environment variable POD_MAN_DATE, if set, will be used. Failing that,
|
||||
+the modification date of the input file will be used, or the current time
|
||||
+if stat() can't find that file (which will be the case if the input is
|
||||
+from C<STDIN>). If obtained from the file modification date or the
|
||||
+current time, he date will be formatted as C<YYYY-MM-DD>.
|
||||
+
|
||||
=item errors
|
||||
|
||||
How to report errors. C<die> says to throw an exception on any POD
|
||||
@@ -1642,13 +1668,6 @@ POD errors entirely, as much as possible
|
||||
|
||||
The default is C<pod>.
|
||||
|
||||
-=item date
|
||||
-
|
||||
-Sets the left-hand footer. By default, the modification date of the input
|
||||
-file will be used, or the current date if stat() can't find that file (the
|
||||
-case if the input is from C<STDIN>), and the date will be formatted as
|
||||
-C<YYYY-MM-DD>.
|
||||
-
|
||||
=item fixed
|
||||
|
||||
The fixed-width font to use for verbatim text and code. Defaults to
|
||||
@@ -1810,6 +1829,20 @@ option was set to C<die>.
|
||||
|
||||
=back
|
||||
|
||||
+=head1 ENVIRONMENT
|
||||
+
|
||||
+=over 4
|
||||
+
|
||||
+=item POD_MAN_DATE
|
||||
+
|
||||
+If set, this will be used as the value of the left-hand footer unless the
|
||||
+C<date> option is explicitly set, overriding the timestamp of the input
|
||||
+file or the current time. This is primarily useful to ensure reproducible
|
||||
+builds of the same output file given the same souce and Pod::Man version,
|
||||
+even when file timestamps may not be consistent.
|
||||
+
|
||||
+=back
|
||||
+
|
||||
=head1 BUGS
|
||||
|
||||
Encoding handling assumes that PerlIO is available and does not work
|
39
textproc/p5-podlators/files/patch-t_devise-date.t
Normal file
39
textproc/p5-podlators/files/patch-t_devise-date.t
Normal file
|
@ -0,0 +1,39 @@
|
|||
--- t/devise-date.t.orig 2013-10-06 06:09:56 UTC
|
||||
+++ t/devise-date.t
|
||||
@@ -1,15 +1,28 @@
|
||||
-#!/usr/bin/perl -w
|
||||
-
|
||||
-# In order for MakeMaker to build in the core, nothing can use
|
||||
-# Fcntl which includes POSIX. devise_date()'s use of strftime()
|
||||
-# was replaced. This tests that it's identical.
|
||||
+#!/usr/bin/perl
|
||||
+#
|
||||
+# In order for MakeMaker to build in the core, nothing can use Fcntl which
|
||||
+# includes POSIX. devise_date()'s use of strftime() was replaced. This tests
|
||||
+# that it's identical. It also tests special handling of the POD_MAN_DATE
|
||||
+# environment variable.
|
||||
|
||||
+use 5.006;
|
||||
use strict;
|
||||
-
|
||||
-use Test::More tests => 1;
|
||||
+use warnings;
|
||||
|
||||
use Pod::Man;
|
||||
use POSIX qw(strftime);
|
||||
|
||||
+use Test::More tests => 2;
|
||||
+
|
||||
+# Check that the results of device_date matches strftime. There is no input
|
||||
+# file name, so this will use the current time.
|
||||
my $parser = Pod::Man->new;
|
||||
-is $parser->devise_date, strftime("%Y-%m-%d", localtime);
|
||||
+is(
|
||||
+ $parser->devise_date,
|
||||
+ strftime('%Y-%m-%d', localtime()),
|
||||
+ 'devise_date matches strftime'
|
||||
+);
|
||||
+
|
||||
+# Set the override environment variable and ensure that it's honored.
|
||||
+local $ENV{POD_MAN_DATE} = '2014-01-01';
|
||||
+is($parser->devise_date, '2014-01-01', 'devise_date honors POD_MAN_DATE');
|
Loading…
Reference in a new issue