summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/perl/perl/debian/fixes
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/perl/perl/debian/fixes')
-rw-r--r--meta/recipes-devtools/perl/perl/debian/fixes/document_makemaker_ccflags.diff31
-rw-r--r--meta/recipes-devtools/perl/perl/debian/fixes/memoize_storable_nstore.diff110
-rw-r--r--meta/recipes-devtools/perl/perl/debian/fixes/net_smtp_docs.diff25
-rw-r--r--meta/recipes-devtools/perl/perl/debian/fixes/perl-Cnn.diff73
-rw-r--r--meta/recipes-devtools/perl/perl/debian/fixes/pod_man_reproducible_date.diff170
-rw-r--r--meta/recipes-devtools/perl/perl/debian/fixes/podman-empty-date.diff51
-rw-r--r--meta/recipes-devtools/perl/perl/debian/fixes/podman-pipe.diff109
-rw-r--r--meta/recipes-devtools/perl/perl/debian/fixes/podman-utc-docs.diff86
-rw-r--r--meta/recipes-devtools/perl/perl/debian/fixes/podman-utc.diff33
-rw-r--r--meta/recipes-devtools/perl/perl/debian/fixes/respect_umask.diff153
10 files changed, 841 insertions, 0 deletions
diff --git a/meta/recipes-devtools/perl/perl/debian/fixes/document_makemaker_ccflags.diff b/meta/recipes-devtools/perl/perl/debian/fixes/document_makemaker_ccflags.diff
new file mode 100644
index 0000000000..61a92712e7
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl/debian/fixes/document_makemaker_ccflags.diff
@@ -0,0 +1,31 @@
1From 9faf6dcc3a5c4154484d812eb3cc3dd78b35563b Mon Sep 17 00:00:00 2001
2From: Niko Tyni <ntyni@debian.org>
3Date: Mon, 30 May 2011 22:54:24 +0300
4Subject: Document that CCFLAGS should include $Config{ccflags}
5
6Bug: https://rt.cpan.org/Public/Bug/Display.html?id=68613
7Bug-Debian: http://bugs.debian.org/628522
8
9Compiling XS extensions without $Config{ccflags} can break the
10binary interface on some platforms.
11
12Patch-Name: fixes/document_makemaker_ccflags.diff
13---
14 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm | 4 ++++
15 1 file changed, 4 insertions(+)
16
17diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
18index fe95b27..90403e8 100644
19--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
20+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
21@@ -1774,6 +1774,10 @@ currently used by MakeMaker but may be handy in Makefile.PLs.
22 String that will be included in the compiler call command line between
23 the arguments INC and OPTIMIZE.
24
25+The default value is taken from $Config{ccflags}. When overriding
26+CCFLAGS, make sure to include the $Config{ccflags} settings to avoid
27+binary incompatibilities.
28+
29 =item CONFIG
30
31 Arrayref. E.g. [qw(archname manext)] defines ARCHNAME & MANEXT from
diff --git a/meta/recipes-devtools/perl/perl/debian/fixes/memoize_storable_nstore.diff b/meta/recipes-devtools/perl/perl/debian/fixes/memoize_storable_nstore.diff
new file mode 100644
index 0000000000..525f962c1a
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl/debian/fixes/memoize_storable_nstore.diff
@@ -0,0 +1,110 @@
1From 55d430eb02fc116581847304ca20321687978269 Mon Sep 17 00:00:00 2001
2From: Jonathan Nieder <jrnieder@gmail.com>
3Date: Fri, 27 Jul 2012 10:35:07 -0500
4Subject: Memoize::Storable: respect 'nstore' option not respected
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Memoize(3perl) says:
10
11 tie my %cache => 'Memoize::Storable', $filename, 'nstore';
12 memoize 'function', SCALAR_CACHE => [HASH => \%cache];
13
14 Include the ‘nstore’ option to have the "Storable" database
15 written in ‘network order’. (See Storable for more details
16 about this.)
17
18In fact the "nstore" option does no such thing. Option parsing looks
19like this:
20
21 @options{@_} = ();
22
23$self->{OPTIONS}{'nstore'} is accordingly set to undef. Later
24Memoize::Storable checks if the option is true, and since undef is
25not true, the "else" branch is always taken.
26
27 if ($self->{OPTIONS}{'nstore'}) {
28 Storable::nstore($self->{H}, $self->{FILENAME});
29 } else {
30 Storable::store($self->{H}, $self->{FILENAME});
31 }
32
33Correcting the condition to (exists $self->{OPTIONS}{'nstore'}) fixes
34it.
35
36Noticed because git-svn, which uses the 'nstore' option for its
37on-disk caches, was producing
38
39 Byte order is not compatible at ../../lib/Storable.pm
40
41when run using a perl with a different integer size (and hence
42byteorder).
43
44Reported by Tim Retout (RT#77790)
45
46Bug-Debian: http://bugs.debian.org/587650
47Bug: https://rt.cpan.org/Public/Bug/Display.html?id=77790
48Forwarded: https://rt.cpan.org/Public/Bug/Display.html?id=77790
49Patch-Name: fixes/memoize_storable_nstore.diff
50---
51 cpan/Memoize/Memoize/Storable.pm | 2 +-
52 cpan/Memoize/t/tie_storable.t | 24 ++++++++++++++++++++----
53 2 files changed, 21 insertions(+), 5 deletions(-)
54
55diff --git a/cpan/Memoize/Memoize/Storable.pm b/cpan/Memoize/Memoize/Storable.pm
56index 1314797..87876f2 100644
57--- a/cpan/Memoize/Memoize/Storable.pm
58+++ b/cpan/Memoize/Memoize/Storable.pm
59@@ -55,7 +55,7 @@ sub DESTROY {
60 require Carp if $Verbose;
61 my $self= shift;
62 print STDERR "Memoize::Storable::DESTROY(@_)\n" if $Verbose;
63- if ($self->{OPTIONS}{'nstore'}) {
64+ if (exists $self->{OPTIONS}{'nstore'}) {
65 Storable::nstore($self->{H}, $self->{FILENAME});
66 } else {
67 Storable::store($self->{H}, $self->{FILENAME});
68diff --git a/cpan/Memoize/t/tie_storable.t b/cpan/Memoize/t/tie_storable.t
69index de3b8dc..a624238 100644
70--- a/cpan/Memoize/t/tie_storable.t
71+++ b/cpan/Memoize/t/tie_storable.t
72@@ -31,18 +31,34 @@ if ($@) {
73 exit 0;
74 }
75
76-print "1..4\n";
77+print "1..9\n";
78
79 $file = "storable$$";
80 1 while unlink $file;
81 tryout('Memoize::Storable', $file, 1); # Test 1..4
82 1 while unlink $file;
83+tryout('Memoize::Storable', $file, 5, 'nstore'); # Test 5..8
84+assert_netorder($file, 9); # Test 9
85+1 while unlink $file;
86+
87+
88+sub assert_netorder {
89+ my ($file, $testno) = @_;
90+
91+ my $netorder = Storable::file_magic($file)->{'netorder'};
92+ print ($netorder ? "ok $testno\n" : "not ok $testno\n");
93+}
94
95 sub tryout {
96- my ($tiepack, $file, $testno) = @_;
97+ my ($tiepack, $file, $testno, $option) = @_;
98
99- tie my %cache => $tiepack, $file
100- or die $!;
101+ if (defined $option) {
102+ tie my %cache => $tiepack, $file, $option
103+ or die $!;
104+ } else {
105+ tie my %cache => $tiepack, $file
106+ or die $!;
107+ }
108
109 memoize 'c5',
110 SCALAR_CACHE => [HASH => \%cache],
diff --git a/meta/recipes-devtools/perl/perl/debian/fixes/net_smtp_docs.diff b/meta/recipes-devtools/perl/perl/debian/fixes/net_smtp_docs.diff
new file mode 100644
index 0000000000..3c31972c64
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl/debian/fixes/net_smtp_docs.diff
@@ -0,0 +1,25 @@
1From fa085fedd9c406edcd4a1a256c025d5ff7f6c6de Mon Sep 17 00:00:00 2001
2From: Brendan O'Dea <bod@debian.org>
3Date: Thu, 20 Sep 2007 19:47:14 +1000
4Subject: Document the Net::SMTP 'Port' option
5
6Bug-Debian: http://bugs.debian.org/100195
7Bug: http://rt.cpan.org/Public/Bug/Display.html?id=36038
8
9Patch-Name: fixes/net_smtp_docs.diff
10---
11 cpan/libnet/lib/Net/SMTP.pm | 1 +
12 1 file changed, 1 insertion(+)
13
14diff --git a/cpan/libnet/lib/Net/SMTP.pm b/cpan/libnet/lib/Net/SMTP.pm
15index afd017a..6ae7d9e 100644
16--- a/cpan/libnet/lib/Net/SMTP.pm
17+++ b/cpan/libnet/lib/Net/SMTP.pm
18@@ -738,6 +738,7 @@ Net::SMTP will attempt to extract the address from the value passed.
19
20 B<Debug> - Enable debugging information
21
22+B<Port> - Select a port on the remote host to connect to (default is 25)
23
24 Example:
25
diff --git a/meta/recipes-devtools/perl/perl/debian/fixes/perl-Cnn.diff b/meta/recipes-devtools/perl/perl/debian/fixes/perl-Cnn.diff
new file mode 100644
index 0000000000..b5564fdbc0
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl/debian/fixes/perl-Cnn.diff
@@ -0,0 +1,73 @@
1From 0ecf83f259db09cb38cb37c9b22e72be185afa8f Mon Sep 17 00:00:00 2001
2From: Hugo van der Sanden <hv@crypt.org>
3Date: Thu, 11 Jun 2015 12:25:40 +0100
4Subject: fix -Cnn parsing
5
6Commit 22ff313068 for [perl #123814] inadvertently changed the logic when
7parsing a numeric parameter to the -C option, such that the successfully
8parsed number was not saved as the option value if it parsed to the end
9of the argument.
10
11Bug: https://rt.perl.org/Ticket/Display.html?id=125381
12Bug-Debian: https://bugs.debian.org/788636
13Origin: upstream, http://perl5.git.perl.org/perl.git/commit/89d84ff965
14Patch-Name: fixes/perl-Cnn.diff
15---
16 t/run/switchC.t | 7 ++++++-
17 util.c | 17 ++++++++---------
18 2 files changed, 14 insertions(+), 10 deletions(-)
19
20diff --git a/t/run/switchC.t b/t/run/switchC.t
21index f6aa868..4f63c3b 100644
22--- a/t/run/switchC.t
23+++ b/t/run/switchC.t
24@@ -11,7 +11,7 @@ BEGIN {
25 skip_all_if_miniperl('-C and $ENV{PERL_UNICODE} are disabled on miniperl');
26 }
27
28-plan(tests => 13);
29+plan(tests => 14);
30
31 my $r;
32
33@@ -25,6 +25,11 @@ $r = runperl( switches => [ '-CO', '-w' ],
34 stderr => 1 );
35 like( $r, qr/^$b(?:\r?\n)?$/s, '-CO: no warning on UTF-8 output' );
36
37+$r = runperl( switches => [ '-C2', '-w' ],
38+ prog => 'print chr(256)',
39+ stderr => 1 );
40+like( $r, qr/^$b(?:\r?\n)?$/s, '-C2: no warning on UTF-8 output' );
41+
42 SKIP: {
43 if (exists $ENV{PERL_UNICODE} &&
44 ($ENV{PERL_UNICODE} eq "" || $ENV{PERL_UNICODE} =~ /[SO]/)) {
45diff --git a/util.c b/util.c
46index 8cf62f5..ee23314 100644
47--- a/util.c
48+++ b/util.c
49@@ -4420,16 +4420,15 @@ Perl_parse_unicode_opts(pTHX_ const char **popt)
50 if (isDIGIT(*p)) {
51 const char* endptr;
52 UV uv;
53- if (grok_atoUV(p, &uv, &endptr)
54- && uv <= U32_MAX
55- && (p = endptr)
56- && *p && *p != '\n' && *p != '\r'
57- ) {
58+ if (grok_atoUV(p, &uv, &endptr) && uv <= U32_MAX) {
59 opt = (U32)uv;
60- if (isSPACE(*p))
61- goto the_end_of_the_opts_parser;
62- else
63- Perl_croak(aTHX_ "Unknown Unicode option letter '%c'", *p);
64+ p = endptr;
65+ if (p && *p && *p != '\n' && *p != '\r') {
66+ if (isSPACE(*p))
67+ goto the_end_of_the_opts_parser;
68+ else
69+ Perl_croak(aTHX_ "Unknown Unicode option letter '%c'", *p);
70+ }
71 }
72 }
73 else {
diff --git a/meta/recipes-devtools/perl/perl/debian/fixes/pod_man_reproducible_date.diff b/meta/recipes-devtools/perl/perl/debian/fixes/pod_man_reproducible_date.diff
new file mode 100644
index 0000000000..7c9ca867a9
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl/debian/fixes/pod_man_reproducible_date.diff
@@ -0,0 +1,170 @@
1From 9057adc106d6bbef53c9e706523cd94f1a7a08d4 Mon Sep 17 00:00:00 2001
2From: Russ Allbery <rra@debian.org>
3Date: Sat, 30 Aug 2014 15:10:41 -0700
4Subject: Support POD_MAN_DATE in Pod::Man for the left-hand footer
5
6Honor the environment variable POD_MAN_DATE and use its contents, if
7set, as the value of the left-hand footer if the date option is not
8set, overriding the timestamp of the input file. This is primarily
9useful to ensure reproducible builds of the same output file given the
10same souce and Pod::Man version, even when file timestamps may not be
11consistent. Thanks, Niko Tyni.
12
13Bug-Debian: http://bugs.debian.org/759405
14Origin: upstream
15Patch-Name: fixes/pod_man_reproducible_date.diff
16---
17 cpan/podlators/lib/Pod/Man.pm | 69 +++++++++++++++++++++++++++++++-----------
18 cpan/podlators/t/devise-date.t | 29 +++++++++++++-----
19 2 files changed, 72 insertions(+), 26 deletions(-)
20
21diff --git a/cpan/podlators/lib/Pod/Man.pm b/cpan/podlators/lib/Pod/Man.pm
22index 72ca9ff..0536662 100644
23--- a/cpan/podlators/lib/Pod/Man.pm
24+++ b/cpan/podlators/lib/Pod/Man.pm
25@@ -876,25 +876,42 @@ sub devise_title {
26 }
27
28 # Determine the modification date and return that, properly formatted in ISO
29-# format. If we can't get the modification date of the input, instead use the
30-# current time. Pod::Simple returns a completely unuseful stringified file
31-# handle as the source_filename for input from a file handle, so we have to
32-# deal with that as well.
33+# format.
34+#
35+# If POD_MAN_DATE is set, that overrides anything else. This can be used for
36+# reproducible generation of the same file even if the input file timestamps
37+# are unpredictable or the POD coms from standard input.
38+#
39+# Otherwise, use the modification date of the input if we can stat it. Be
40+# aware that Pod::Simple returns the stringification of the file handle as
41+# source_filename for input from a file handle, so we'll stat some random ref
42+# string in that case. If that fails, instead use the current time.
43+#
44+# $self - Pod::Man object, used to get the source file
45+#
46+# Returns: YYYY-MM-DD date suitable for the left-hand footer
47 sub devise_date {
48 my ($self) = @_;
49+
50+ # If POD_MAN_DATE is set, always use it.
51+ if ($ENV{POD_MAN_DATE}) {
52+ return $ENV{POD_MAN_DATE};
53+ }
54+
55+ # Otherwise, get the input filename and try to stat it. If that fails,
56+ # use the current time.
57 my $input = $self->source_filename;
58 my $time;
59 if ($input) {
60- $time = (stat $input)[9] || time;
61+ $time = (stat($input))[9] || time();
62 } else {
63- $time = time;
64+ $time = time();
65 }
66
67- # Can't use POSIX::strftime(), which uses Fcntl, because MakeMaker
68- # uses this and it has to work in the core which can't load dynamic
69- # libraries.
70- my ($year, $month, $day) = (localtime $time)[5,4,3];
71- return sprintf ("%04d-%02d-%02d", $year + 1900, $month + 1, $day);
72+ # Can't use POSIX::strftime(), which uses Fcntl, because MakeMaker uses
73+ # this and it has to work in the core which can't load dynamic libraries.
74+ my ($year, $month, $day) = (localtime($time))[5,4,3];
75+ return sprintf("%04d-%02d-%02d", $year + 1900, $month + 1, $day);
76 }
77
78 # Print out the preamble and the title. The meaning of the arguments to .TH
79@@ -1632,6 +1649,15 @@ argument.
80 Sets the centered page header to use instead of "User Contributed Perl
81 Documentation".
82
83+=item date
84+
85+Sets the left-hand footer. If this option is not set, the contents of the
86+environment variable POD_MAN_DATE, if set, will be used. Failing that,
87+the modification date of the input file will be used, or the current time
88+if stat() can't find that file (which will be the case if the input is
89+from C<STDIN>). If obtained from the file modification date or the
90+current time, he date will be formatted as C<YYYY-MM-DD>.
91+
92 =item errors
93
94 How to report errors. C<die> says to throw an exception on any POD
95@@ -1642,13 +1668,6 @@ POD errors entirely, as much as possible.
96
97 The default is C<pod>.
98
99-=item date
100-
101-Sets the left-hand footer. By default, the modification date of the input
102-file will be used, or the current date if stat() can't find that file (the
103-case if the input is from C<STDIN>), and the date will be formatted as
104-C<YYYY-MM-DD>.
105-
106 =item fixed
107
108 The fixed-width font to use for verbatim text and code. Defaults to
109@@ -1810,6 +1829,20 @@ option was set to C<die>.
110
111 =back
112
113+=head1 ENVIRONMENT
114+
115+=over 4
116+
117+=item POD_MAN_DATE
118+
119+If set, this will be used as the value of the left-hand footer unless the
120+C<date> option is explicitly set, overriding the timestamp of the input
121+file or the current time. This is primarily useful to ensure reproducible
122+builds of the same output file given the same souce and Pod::Man version,
123+even when file timestamps may not be consistent.
124+
125+=back
126+
127 =head1 BUGS
128
129 Encoding handling assumes that PerlIO is available and does not work
130diff --git a/cpan/podlators/t/devise-date.t b/cpan/podlators/t/devise-date.t
131index 3cce9f5..c610dd9 100644
132--- a/cpan/podlators/t/devise-date.t
133+++ b/cpan/podlators/t/devise-date.t
134@@ -1,15 +1,28 @@
135-#!/usr/bin/perl -w
136-
137-# In order for MakeMaker to build in the core, nothing can use
138-# Fcntl which includes POSIX. devise_date()'s use of strftime()
139-# was replaced. This tests that it's identical.
140+#!/usr/bin/perl
141+#
142+# In order for MakeMaker to build in the core, nothing can use Fcntl which
143+# includes POSIX. devise_date()'s use of strftime() was replaced. This tests
144+# that it's identical. It also tests special handling of the POD_MAN_DATE
145+# environment variable.
146
147+use 5.006;
148 use strict;
149-
150-use Test::More tests => 1;
151+use warnings;
152
153 use Pod::Man;
154 use POSIX qw(strftime);
155
156+use Test::More tests => 2;
157+
158+# Check that the results of device_date matches strftime. There is no input
159+# file name, so this will use the current time.
160 my $parser = Pod::Man->new;
161-is $parser->devise_date, strftime("%Y-%m-%d", localtime);
162+is(
163+ $parser->devise_date,
164+ strftime('%Y-%m-%d', localtime()),
165+ 'devise_date matches strftime'
166+);
167+
168+# Set the override environment variable and ensure that it's honored.
169+local $ENV{POD_MAN_DATE} = '2014-01-01';
170+is($parser->devise_date, '2014-01-01', 'devise_date honors POD_MAN_DATE');
diff --git a/meta/recipes-devtools/perl/perl/debian/fixes/podman-empty-date.diff b/meta/recipes-devtools/perl/perl/debian/fixes/podman-empty-date.diff
new file mode 100644
index 0000000000..7ebbf9c602
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl/debian/fixes/podman-empty-date.diff
@@ -0,0 +1,51 @@
1From 183bb4af7ad862a2cf31d0dcb3dd45c100f76776 Mon Sep 17 00:00:00 2001
2From: Russ Allbery <rra@cpan.org>
3Date: Wed, 15 Apr 2015 22:21:25 -0700
4Subject: Support an empty POD_MAN_DATE environment variable
5
6One may want to set this to an empty string. Handle that correctly.
7
8(backported to Perl 5.20.2 by Niko Tyni <ntyni@debian.org>)
9
10Origin: upstream, http://git.eyrie.org/?p=perl/podlators.git;a=commitdiff;h=e0e9fcb53e8fc954b2b1955385eea18c27f869af
11Bug-Debian: https://bugs.debian.org/780259
12Patch-Name: fixes/podman-empty-date.diff
13---
14 cpan/podlators/lib/Pod/Man.pm | 2 +-
15 cpan/podlators/t/devise-date.t | 6 +++++-
16 2 files changed, 6 insertions(+), 2 deletions(-)
17
18diff --git a/cpan/podlators/lib/Pod/Man.pm b/cpan/podlators/lib/Pod/Man.pm
19index 365892e..8997a15 100644
20--- a/cpan/podlators/lib/Pod/Man.pm
21+++ b/cpan/podlators/lib/Pod/Man.pm
22@@ -894,7 +894,7 @@ sub devise_date {
23 my ($self) = @_;
24
25 # If POD_MAN_DATE is set, always use it.
26- if ($ENV{POD_MAN_DATE}) {
27+ if (defined($ENV{POD_MAN_DATE})) {
28 return $ENV{POD_MAN_DATE};
29 }
30
31diff --git a/cpan/podlators/t/devise-date.t b/cpan/podlators/t/devise-date.t
32index 9da9d1b..27271d9 100644
33--- a/cpan/podlators/t/devise-date.t
34+++ b/cpan/podlators/t/devise-date.t
35@@ -12,7 +12,7 @@ use warnings;
36 use Pod::Man;
37 use POSIX qw(strftime);
38
39-use Test::More tests => 2;
40+use Test::More tests => 3;
41
42 # Check that the results of device_date matches strftime. There is no input
43 # file name, so this will use the current time.
44@@ -26,3 +26,7 @@ is(
45 # Set the override environment variable and ensure that it's honored.
46 local $ENV{POD_MAN_DATE} = '2014-01-01';
47 is($parser->devise_date, '2014-01-01', 'devise_date honors POD_MAN_DATE');
48+
49+# Check that an empty environment variable is honored.
50+local $ENV{POD_MAN_DATE} = q{};
51+is($parser->devise_date, q{}, 'devise_date honors empty POD_MAN_DATE');
diff --git a/meta/recipes-devtools/perl/perl/debian/fixes/podman-pipe.diff b/meta/recipes-devtools/perl/perl/debian/fixes/podman-pipe.diff
new file mode 100644
index 0000000000..1a60361160
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl/debian/fixes/podman-pipe.diff
@@ -0,0 +1,109 @@
1From 7671d101baa75d7a79bfbd8c75c1595fbb3f53ba Mon Sep 17 00:00:00 2001
2From: Russ Allbery <rra@cpan.org>
3Date: Sat, 7 Feb 2015 19:03:34 -0800
4Subject: Better errors for man pages from standard input
5
6[Pod::Man] Attempt to detect if the input came from a pipe and
7therefore has a completely unhelpful (and nonreproducible) source file
8name, and diagnose this as an error. Document that the name option
9(--name to pod2man) is required when processing POD source from
10standard input. (Debian Bug#777405)
11
12(backported to Perl 5.20.2 by Niko Tyni <ntyni@debian.org>)
13
14Origin: upstream, http://git.eyrie.org/?p=perl/podlators.git;a=commitdiff;h=d98872e46c93861b7aba14949e1258712087dc55
15Bug-Debian: https://bugs.debian.org/777405
16Patch-Name: fixes/podman-pipe.diff
17---
18 cpan/podlators/lib/Pod/Man.pm | 15 +++++++++++++++
19 cpan/podlators/scripts/pod2man.PL | 4 ++++
20 cpan/podlators/t/devise-title.t | 32 ++++++++++++++++++++++++++++++++
21 3 files changed, 51 insertions(+)
22 create mode 100755 cpan/podlators/t/devise-title.t
23
24diff --git a/cpan/podlators/lib/Pod/Man.pm b/cpan/podlators/lib/Pod/Man.pm
25index 8997a15..969eaff 100644
26--- a/cpan/podlators/lib/Pod/Man.pm
27+++ b/cpan/podlators/lib/Pod/Man.pm
28@@ -828,6 +828,17 @@ sub devise_title {
29 $section = 3 if (!$$self{section} && $name =~ /\.pm\z/i);
30 $name =~ s/\.p(od|[lm])\z//i;
31
32+ # If Pod::Parser gave us an IO::File reference as the source file name,
33+ # convert that to the empty string as well. Then, if we don't have a
34+ # valid name, emit a warning and convert it to STDIN.
35+ if ($name =~ /^IO::File(?:=\w+)\(0x[\da-f]+\)$/i) {
36+ $name = '';
37+ }
38+ if ($name eq '') {
39+ $self->whine (1, 'No name given for document');
40+ $name = 'STDIN';
41+ }
42+
43 # If the section isn't 3, then the name defaults to just the basename of
44 # the file. Otherwise, assume we're dealing with a module. We want to
45 # figure out the full module name from the path to the file, but we don't
46@@ -1705,6 +1716,10 @@ module path. If it is, a path like C<.../lib/Pod/Man.pm> is converted into
47 a name like C<Pod::Man>. This option, if given, overrides any automatic
48 determination of the name.
49
50+If generating a manual page from standard input, this option is required,
51+since there's otherwise no way for Pod::Man to know what to use for the
52+manual page name.
53+
54 =item nourls
55
56 Normally, LZ<><> formatting codes with a URL but anchor text are formatted
57diff --git a/cpan/podlators/scripts/pod2man.PL b/cpan/podlators/scripts/pod2man.PL
58index 38695f8..43e35df 100644
59--- a/cpan/podlators/scripts/pod2man.PL
60+++ b/cpan/podlators/scripts/pod2man.PL
61@@ -236,6 +236,10 @@ Note that this option is probably not useful when converting multiple POD
62 files at once. The convention for Unix man pages for commands is for the
63 man page title to be in all-uppercase even if the command isn't.
64
65+When converting POD source from standard input, this option is required,
66+since there's otherwise no way to know what to use as the name of the
67+manual page.
68+
69 =item B<--nourls>
70
71 Normally, LZ<><> formatting codes with a URL but anchor text are formatted
72diff --git a/cpan/podlators/t/devise-title.t b/cpan/podlators/t/devise-title.t
73new file mode 100755
74index 0000000..8639441
75--- /dev/null
76+++ b/cpan/podlators/t/devise-title.t
77@@ -0,0 +1,32 @@
78+#!/usr/bin/perl
79+#
80+# Tests for the automatic determination of the manual page title if not
81+# specified via options to pod2man or the Pod::Man constructor.
82+
83+use 5.006;
84+use strict;
85+use warnings;
86+
87+use File::Spec;
88+use IO::File;
89+use Test::More tests => 3;
90+
91+BEGIN {
92+ use_ok('Pod::Man');
93+}
94+
95+# Create a parser and set it up with an input source. There isn't a way to do
96+# this in Pod::Simple without actually parsing the document, so send the
97+# output to a string that we'll ignore.
98+my $path = File::Spec->catdir('t', 'data', 'basic.pod');
99+my $handle = IO::File->new($path, 'r');
100+my $parser = Pod::Man->new(errors => 'pod');
101+my $output;
102+$parser->output_string(\$output);
103+$parser->parse_file($handle);
104+
105+# Check the results of devise_title for this. We should get back STDIN, and
106+# we should have reported an error.
107+my ($name, $section) = $parser->devise_title;
108+is($name, 'STDIN', 'devise_title uses STDIN for file handle input');
109+ok($parser->errors_seen, '...and errors were seen');
diff --git a/meta/recipes-devtools/perl/perl/debian/fixes/podman-utc-docs.diff b/meta/recipes-devtools/perl/perl/debian/fixes/podman-utc-docs.diff
new file mode 100644
index 0000000000..0cdfeffd1f
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl/debian/fixes/podman-utc-docs.diff
@@ -0,0 +1,86 @@
1From 6198856b5323d6204094293f01b890472618f182 Mon Sep 17 00:00:00 2001
2From: Russ Allbery <rra@cpan.org>
3Date: Wed, 15 Apr 2015 20:49:07 -0700
4Subject: Documentation and test suite updates for UTC fix
5
6Update the Pod::Man and pod2man documentation and the test suite
7for the new UTC-based default page footer, and add a Changes
8entry.
9
10(backported to Perl 5.20.2 by Niko Tyni <ntyni@debian.org>)
11
12Origin: upstream, http://git.eyrie.org/?p=perl/podlators.git;a=commitdiff;h=52db93bf80e4a06f8497e4ebade0506b6ee0e70d
13Bug-Debian: https://bugs.debian.org/780259
14Patch-Name: fixes/podman-utc-docs.diff
15---
16 cpan/podlators/lib/Pod/Man.pm | 6 +++++-
17 cpan/podlators/scripts/pod2man.PL | 11 ++++++-----
18 cpan/podlators/t/devise-date.t | 2 +-
19 3 files changed, 12 insertions(+), 7 deletions(-)
20
21diff --git a/cpan/podlators/lib/Pod/Man.pm b/cpan/podlators/lib/Pod/Man.pm
22index c3ba201..365892e 100644
23--- a/cpan/podlators/lib/Pod/Man.pm
24+++ b/cpan/podlators/lib/Pod/Man.pm
25@@ -910,6 +910,8 @@ sub devise_date {
26
27 # Can't use POSIX::strftime(), which uses Fcntl, because MakeMaker uses
28 # this and it has to work in the core which can't load dynamic libraries.
29+ # Use gmtime instead of localtime so that the generated man page does not
30+ # depend on the local time zone setting and is more reproducible
31 my ($year, $month, $day) = (gmtime($time))[5,4,3];
32 return sprintf("%04d-%02d-%02d", $year + 1900, $month + 1, $day);
33 }
34@@ -1656,7 +1658,9 @@ environment variable POD_MAN_DATE, if set, will be used. Failing that,
35 the modification date of the input file will be used, or the current time
36 if stat() can't find that file (which will be the case if the input is
37 from C<STDIN>). If obtained from the file modification date or the
38-current time, he date will be formatted as C<YYYY-MM-DD>.
39+current time, the date will be formatted as C<YYYY-MM-DD> and will be based
40+on UTC (so that the output will be reproducible regardless of local time
41+zone).
42
43 =item errors
44
45diff --git a/cpan/podlators/scripts/pod2man.PL b/cpan/podlators/scripts/pod2man.PL
46index 6af3474..38695f8 100644
47--- a/cpan/podlators/scripts/pod2man.PL
48+++ b/cpan/podlators/scripts/pod2man.PL
49@@ -174,9 +174,10 @@ Contributed Perl Documentation", but also see B<--official> below.
50
51 =item B<-d> I<string>, B<--date>=I<string>
52
53-Set the left-hand footer string to this value. By default, the modification
54-date of the input file will be used, or the current date if input comes from
55-C<STDIN>.
56+Set the left-hand footer string to this value. By default, the
57+modification date of the input file will be used, or the current date if
58+input comes from C<STDIN>, and will be based on UTC (so that the output
59+will be reproducible regardless of local time zone).
60
61 =item B<-errors>=I<style>
62
63@@ -383,8 +384,8 @@ B<pod2man> by Larry Wall and Tom Christiansen.
64
65 =head1 COPYRIGHT AND LICENSE
66
67-Copyright 1999, 2000, 2001, 2004, 2006, 2008, 2010, 2012, 2013 Russ
68-Allbery <rra@stanford.edu>.
69+Copyright 1999, 2000, 2001, 2004, 2006, 2008, 2010, 2012, 2013, 2014,
70+2015 Russ Allbery <rra@cpan.org>.
71
72 This program is free software; you may redistribute it and/or modify it
73 under the same terms as Perl itself.
74diff --git a/cpan/podlators/t/devise-date.t b/cpan/podlators/t/devise-date.t
75index c610dd9..9da9d1b 100644
76--- a/cpan/podlators/t/devise-date.t
77+++ b/cpan/podlators/t/devise-date.t
78@@ -19,7 +19,7 @@ use Test::More tests => 2;
79 my $parser = Pod::Man->new;
80 is(
81 $parser->devise_date,
82- strftime('%Y-%m-%d', localtime()),
83+ strftime('%Y-%m-%d', gmtime()),
84 'devise_date matches strftime'
85 );
86
diff --git a/meta/recipes-devtools/perl/perl/debian/fixes/podman-utc.diff b/meta/recipes-devtools/perl/perl/debian/fixes/podman-utc.diff
new file mode 100644
index 0000000000..fbd7b9db99
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl/debian/fixes/podman-utc.diff
@@ -0,0 +1,33 @@
1From c796775cdbd2cce06acbb7ac355187d4063017a2 Mon Sep 17 00:00:00 2001
2From: Chris Lamb <lamby@debian.org>
3Date: Wed, 15 Apr 2015 20:42:53 -0700
4Subject: Make the embedded date from Pod::Man reproducible
5
6While working on the "reproducible builds" effort, we have noticed
7that Pod::Man generates output that varies depending on the current
8timezone.
9
10The attached patch fixes this by using GMT (~UTC) dates instead.
11
12(backported to Perl 5.20.2 by Niko Tyni <ntyni@debian.org>)
13
14Origin: upstream, http://git.eyrie.org/?p=perl/podlators.git;a=commitdiff;h=913fbb2bd2ce071e20128629302ae2852554cad4
15Bug-Debian: https://bugs.debian.org/780259
16Patch-Name: fixes/podman-utc.diff
17---
18 cpan/podlators/lib/Pod/Man.pm | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/cpan/podlators/lib/Pod/Man.pm b/cpan/podlators/lib/Pod/Man.pm
22index 0536662..c3ba201 100644
23--- a/cpan/podlators/lib/Pod/Man.pm
24+++ b/cpan/podlators/lib/Pod/Man.pm
25@@ -910,7 +910,7 @@ sub devise_date {
26
27 # Can't use POSIX::strftime(), which uses Fcntl, because MakeMaker uses
28 # this and it has to work in the core which can't load dynamic libraries.
29- my ($year, $month, $day) = (localtime($time))[5,4,3];
30+ my ($year, $month, $day) = (gmtime($time))[5,4,3];
31 return sprintf("%04d-%02d-%02d", $year + 1900, $month + 1, $day);
32 }
33
diff --git a/meta/recipes-devtools/perl/perl/debian/fixes/respect_umask.diff b/meta/recipes-devtools/perl/perl/debian/fixes/respect_umask.diff
new file mode 100644
index 0000000000..d1b498b527
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl/debian/fixes/respect_umask.diff
@@ -0,0 +1,153 @@
1From d9d535ef97f57af6e9728075944c33f3b0b5372f Mon Sep 17 00:00:00 2001
2From: Brendan O'Dea <bod@debian.org>
3Date: Tue, 8 Mar 2005 19:30:38 +1100
4Subject: Respect umask during installation
5
6This is needed to satisfy Debian policy regarding group-writable
7site directories.
8
9Patch-Name: fixes/respect_umask.diff
10---
11 cpan/ExtUtils-Install/lib/ExtUtils/Install.pm | 18 +++++++++---------
12 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm | 18 +++++++++---------
13 2 files changed, 18 insertions(+), 18 deletions(-)
14
15diff --git a/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm b/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm
16index 1e8ac4c..3e79121 100644
17--- a/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm
18+++ b/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm
19@@ -451,7 +451,7 @@ sub _can_write_dir {
20
21 =pod
22
23-=item _mkpath($dir,$show,$mode,$verbose,$dry_run)
24+=item _mkpath($dir,$show,$verbose,$dry_run)
25
26 Wrapper around File::Path::mkpath() to handle errors.
27
28@@ -468,13 +468,13 @@ writable.
29 =cut
30
31 sub _mkpath {
32- my ($dir,$show,$mode,$verbose,$dry_run)=@_;
33+ my ($dir,$show,$verbose,$dry_run)=@_;
34 if ( $verbose && $verbose > 1 && ! -d $dir) {
35 $show= 1;
36- printf "mkpath(%s,%d,%#o)\n", $dir, $show, $mode;
37+ printf "mkpath(%s,%d)\n", $dir, $show;
38 }
39 if (!$dry_run) {
40- if ( ! eval { File::Path::mkpath($dir,$show,$mode); 1 } ) {
41+ if ( ! eval { File::Path::mkpath($dir,$show); 1 } ) {
42 _choke("Can't create '$dir'","$@");
43 }
44
45@@ -783,7 +783,7 @@ sub install { #XXX OS-SPECIFIC
46 _chdir($cwd);
47 }
48 foreach my $targetdir (sort keys %check_dirs) {
49- _mkpath( $targetdir, 0, 0755, $verbose, $dry_run );
50+ _mkpath( $targetdir, 0, $verbose, $dry_run );
51 }
52 foreach my $found (@found_files) {
53 my ($diff, $ffd, $origfile, $mode, $size, $atime, $mtime,
54@@ -797,7 +797,7 @@ sub install { #XXX OS-SPECIFIC
55 $targetfile= _unlink_or_rename( $targetfile, 'tryhard', 'install' )
56 unless $dry_run;
57 } elsif ( ! -d $targetdir ) {
58- _mkpath( $targetdir, 0, 0755, $verbose, $dry_run );
59+ _mkpath( $targetdir, 0, $verbose, $dry_run );
60 }
61 print "Installing $targetfile\n";
62
63@@ -837,7 +837,7 @@ sub install { #XXX OS-SPECIFIC
64
65 if ($pack{'write'}) {
66 $dir = install_rooted_dir(dirname($pack{'write'}));
67- _mkpath( $dir, 0, 0755, $verbose, $dry_run );
68+ _mkpath( $dir, 0, $verbose, $dry_run );
69 print "Writing $pack{'write'}\n" if $verbose;
70 $packlist->write(install_rooted_file($pack{'write'})) unless $dry_run;
71 }
72@@ -1180,7 +1180,7 @@ environment variable will silence this output.
73 sub pm_to_blib {
74 my($fromto,$autodir,$pm_filter) = @_;
75
76- _mkpath($autodir,0,0755);
77+ _mkpath($autodir,0);
78 while(my($from, $to) = each %$fromto) {
79 if( -f $to && -s $from == -s $to && -M $to < -M $from ) {
80 print "Skip $to (unchanged)\n" unless $INSTALL_QUIET;
81@@ -1203,7 +1203,7 @@ sub pm_to_blib {
82 # we wont try hard here. its too likely to mess things up.
83 forceunlink($to);
84 } else {
85- _mkpath(dirname($to),0,0755);
86+ _mkpath(dirname($to),0);
87 }
88 if ($need_filtering) {
89 run_filter($pm_filter, $from, $to);
90diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
91index f63145c..197f102 100644
92--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
93+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
94@@ -2118,7 +2118,7 @@ doc__install : doc_site_install
95 $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
96
97 pure_perl_install :: all
98- $(NOECHO) $(MOD_INSTALL) \
99+ $(NOECHO) umask 022; $(MOD_INSTALL) \
100 };
101
102 push @m,
103@@ -2138,7 +2138,7 @@ q{ "$(INST_LIB)" "$(DESTINSTALLPRIVLIB)" \
104
105
106 pure_site_install :: all
107- $(NOECHO) $(MOD_INSTALL) \
108+ $(NOECHO) umask 022; $(MOD_INSTALL) \
109 };
110 push @m,
111 q{ read "}.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{" \
112@@ -2156,7 +2156,7 @@ q{ "$(INST_LIB)" "$(DESTINSTALLSITELIB)" \
113 "}.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{"
114
115 pure_vendor_install :: all
116- $(NOECHO) $(MOD_INSTALL) \
117+ $(NOECHO) umask 022; $(MOD_INSTALL) \
118 };
119 push @m,
120 q{ read "}.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{" \
121@@ -2188,8 +2188,8 @@ doc_vendor_install :: all
122 push @m, q{
123 doc_perl_install :: all
124 $(NOECHO) $(ECHO) Appending installation info to "$(DESTINSTALLARCHLIB)/perllocal.pod"
125- -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)"
126- -$(NOECHO) $(DOC_INSTALL) \
127+ -$(NOECHO) umask 022; $(MKPATH) "$(DESTINSTALLARCHLIB)"
128+ -$(NOECHO) umask 022; $(DOC_INSTALL) \
129 "Module" "$(NAME)" \
130 "installed into" $(INSTALLPRIVLIB) \
131 LINKTYPE "$(LINKTYPE)" \
132@@ -2199,8 +2199,8 @@ doc_perl_install :: all
133
134 doc_site_install :: all
135 $(NOECHO) $(ECHO) Appending installation info to "$(DESTINSTALLARCHLIB)/perllocal.pod"
136- -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)"
137- -$(NOECHO) $(DOC_INSTALL) \
138+ -$(NOECHO) umask 022; $(MKPATH) "$(DESTINSTALLARCHLIB)"
139+ -$(NOECHO) umask 022; $(DOC_INSTALL) \
140 "Module" "$(NAME)" \
141 "installed into" $(INSTALLSITELIB) \
142 LINKTYPE "$(LINKTYPE)" \
143@@ -2210,8 +2210,8 @@ doc_site_install :: all
144
145 doc_vendor_install :: all
146 $(NOECHO) $(ECHO) Appending installation info to "$(DESTINSTALLARCHLIB)/perllocal.pod"
147- -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)"
148- -$(NOECHO) $(DOC_INSTALL) \
149+ -$(NOECHO) umask 022; $(MKPATH) "$(DESTINSTALLARCHLIB)"
150+ -$(NOECHO) umask 022; $(DOC_INSTALL) \
151 "Module" "$(NAME)" \
152 "installed into" $(INSTALLVENDORLIB) \
153 LINKTYPE "$(LINKTYPE)" \