diff --git a/PathTools-3.75-Upgrade-to-3.78.patch b/PathTools-3.75-Upgrade-to-3.78.patch new file mode 100644 index 0000000..67d2581 --- /dev/null +++ b/PathTools-3.75-Upgrade-to-3.78.patch @@ -0,0 +1,283 @@ +From 3c570b93e7ca990b3274219dd828e8fdaac0bf9d Mon Sep 17 00:00:00 2001 +From: Jitka Plesnikova +Date: Thu, 25 Apr 2019 17:04:30 +0200 +Subject: [PATCH] Upgrade to 3.78 + +--- + Cwd.pm | 8 ++++++-- + lib/File/Spec.pm | 2 +- + lib/File/Spec/AmigaOS.pm | 2 +- + lib/File/Spec/Cygwin.pm | 2 +- + lib/File/Spec/Epoc.pm | 2 +- + lib/File/Spec/Functions.pm | 2 +- + lib/File/Spec/Mac.pm | 2 +- + lib/File/Spec/OS2.pm | 2 +- + lib/File/Spec/Unix.pm | 2 +- + lib/File/Spec/Win32.pm | 14 ++------------ + t/Spec.t | 4 ++-- + t/cwd.t | 11 ++++++++++- + t/cwd_enoent.t | 9 ++++++--- + 13 files changed, 34 insertions(+), 28 deletions(-) + +diff --git a/Cwd.pm b/Cwd.pm +index 16d5b11..9b173c2 100644 +--- a/Cwd.pm ++++ b/Cwd.pm +@@ -3,7 +3,7 @@ use strict; + use Exporter; + + +-our $VERSION = '3.75'; ++our $VERSION = '3.78'; + my $xs_version = $VERSION; + $VERSION =~ tr/_//d; + +@@ -171,7 +171,7 @@ if($^O ne 'MSWin32') { + if ($^O =~ /android/) { + # If targetsh is executable, then we're either a full + # perl, or a miniperl for a native build. +- if (-x $Config::Config{targetsh}) { ++ if ( exists($Config::Config{targetsh}) && -x $Config::Config{targetsh}) { + $pwd_cmd = "$Config::Config{targetsh} -c pwd" + } + else { +@@ -659,6 +659,10 @@ if (exists $METHOD_MAP{$^O}) { + } + } + ++# built-in from 5.30 ++*getcwd = \&Internals::getcwd ++ if !defined &getcwd && defined &Internals::getcwd; ++ + # In case the XS version doesn't load. + *abs_path = \&_perl_abs_path unless defined &abs_path; + *getcwd = \&_perl_getcwd unless defined &getcwd; +diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm +index eb3b55a..7fe3272 100644 +--- a/lib/File/Spec.pm ++++ b/lib/File/Spec.pm +@@ -2,7 +2,7 @@ package File::Spec; + + use strict; + +-our $VERSION = '3.75'; ++our $VERSION = '3.78'; + $VERSION =~ tr/_//d; + + my %module = ( +diff --git a/lib/File/Spec/AmigaOS.pm b/lib/File/Spec/AmigaOS.pm +index 1355768..2b7d18a 100644 +--- a/lib/File/Spec/AmigaOS.pm ++++ b/lib/File/Spec/AmigaOS.pm +@@ -3,7 +3,7 @@ package File::Spec::AmigaOS; + use strict; + require File::Spec::Unix; + +-our $VERSION = '3.75'; ++our $VERSION = '3.78'; + $VERSION =~ tr/_//d; + + our @ISA = qw(File::Spec::Unix); +diff --git a/lib/File/Spec/Cygwin.pm b/lib/File/Spec/Cygwin.pm +index 9dc15a1..d44ced3 100644 +--- a/lib/File/Spec/Cygwin.pm ++++ b/lib/File/Spec/Cygwin.pm +@@ -3,7 +3,7 @@ package File::Spec::Cygwin; + use strict; + require File::Spec::Unix; + +-our $VERSION = '3.75'; ++our $VERSION = '3.78'; + $VERSION =~ tr/_//d; + + our @ISA = qw(File::Spec::Unix); +diff --git a/lib/File/Spec/Epoc.pm b/lib/File/Spec/Epoc.pm +index bd87b68..b611cd9 100644 +--- a/lib/File/Spec/Epoc.pm ++++ b/lib/File/Spec/Epoc.pm +@@ -2,7 +2,7 @@ package File::Spec::Epoc; + + use strict; + +-our $VERSION = '3.75'; ++our $VERSION = '3.78'; + $VERSION =~ tr/_//d; + + require File::Spec::Unix; +diff --git a/lib/File/Spec/Functions.pm b/lib/File/Spec/Functions.pm +index 19ab4db..3f617bd 100644 +--- a/lib/File/Spec/Functions.pm ++++ b/lib/File/Spec/Functions.pm +@@ -3,7 +3,7 @@ package File::Spec::Functions; + use File::Spec; + use strict; + +-our $VERSION = '3.75'; ++our $VERSION = '3.78'; + $VERSION =~ tr/_//d; + + require Exporter; +diff --git a/lib/File/Spec/Mac.pm b/lib/File/Spec/Mac.pm +index 926a5dd..d920d2f 100644 +--- a/lib/File/Spec/Mac.pm ++++ b/lib/File/Spec/Mac.pm +@@ -4,7 +4,7 @@ use strict; + use Cwd (); + require File::Spec::Unix; + +-our $VERSION = '3.75'; ++our $VERSION = '3.78'; + $VERSION =~ tr/_//d; + + our @ISA = qw(File::Spec::Unix); +diff --git a/lib/File/Spec/OS2.pm b/lib/File/Spec/OS2.pm +index 4404fe8..603781a 100644 +--- a/lib/File/Spec/OS2.pm ++++ b/lib/File/Spec/OS2.pm +@@ -4,7 +4,7 @@ use strict; + use Cwd (); + require File::Spec::Unix; + +-our $VERSION = '3.75'; ++our $VERSION = '3.78'; + $VERSION =~ tr/_//d; + + our @ISA = qw(File::Spec::Unix); +diff --git a/lib/File/Spec/Unix.pm b/lib/File/Spec/Unix.pm +index cd29f76..6749e60 100644 +--- a/lib/File/Spec/Unix.pm ++++ b/lib/File/Spec/Unix.pm +@@ -3,7 +3,7 @@ package File::Spec::Unix; + use strict; + use Cwd (); + +-our $VERSION = '3.75'; ++our $VERSION = '3.78'; + $VERSION =~ tr/_//d; + + =head1 NAME +diff --git a/lib/File/Spec/Win32.pm b/lib/File/Spec/Win32.pm +index 0cf0e28..5934010 100644 +--- a/lib/File/Spec/Win32.pm ++++ b/lib/File/Spec/Win32.pm +@@ -5,7 +5,7 @@ use strict; + use Cwd (); + require File::Spec::Unix; + +-our $VERSION = '3.75'; ++our $VERSION = '3.78'; + $VERSION =~ tr/_//d; + + our @ISA = qw(File::Spec::Unix); +@@ -137,7 +137,7 @@ sub catfile { + # Legacy / compatibility support + # + shift, return _canon_cat( "/", @_ ) +- if $_[0] eq ""; ++ if !@_ || $_[0] eq ""; + + # Compatibility with File::Spec <= 3.26: + # catfile('A:', 'foo') should return 'A:\foo'. +@@ -407,16 +407,6 @@ sub _canon_cat # @path -> path + )+ # performance boost -- I do not know why + }{\\}gx; + +- # XXX I do not know whether more dots are supported by the OS supporting +- # this ... annotation (NetWare or symbian but not MSWin32). +- # Then .... could easily become ../../.. etc: +- # Replace \.\.\. by (\.\.\.+) and substitute with +- # { $1 . ".." . "\\.." x (length($2)-2) }gex +- # ... --> ../.. +- $path =~ s{ (\A|\\) # at begin or after a slash +- \.\.\. +- (?=\\|\z) # at end or followed by slash +- }{$1..\\..}gx; + # xx\yy\..\zz --> xx\zz + while ( $path =~ s{(?: + (?:\A|\\) # at begin or after a slash +diff --git a/t/Spec.t b/t/Spec.t +index 1b26190..c953391 100644 +--- a/t/Spec.t ++++ b/t/Spec.t +@@ -277,9 +277,9 @@ my @tests = ( + [ "Win32->canonpath('//a/b/../../c')", '\\\\a\\b\\c' ], + [ "Win32->canonpath('//a/b/c/../d')", '\\\\a\\b\\d' ], + [ "Win32->canonpath('//a/b/c/../../d')",'\\\\a\\b\\d' ], +-[ "Win32->canonpath('//a/b/c/.../d')", '\\\\a\\b\\d' ], ++[ "Win32->canonpath('//a/b/c/.../d')", '\\\\a\\b\\c\\...\\d' ], + [ "Win32->canonpath('/a/b/c/../../d')", '\\a\\d' ], +-[ "Win32->canonpath('/a/b/c/.../d')", '\\a\\d' ], ++[ "Win32->canonpath('/a/b/c/.../d')", '\\a\\b\\c\\...\\d' ], + [ "Win32->canonpath('\\../temp\\')", '\\temp' ], + [ "Win32->canonpath('\\../')", '\\' ], + [ "Win32->canonpath('\\..\\')", '\\' ], +diff --git a/t/cwd.t b/t/cwd.t +index 483b437..c056938 100644 +--- a/t/cwd.t ++++ b/t/cwd.t +@@ -10,6 +10,7 @@ chdir 't'; + use Config; + use File::Spec; + use File::Path; ++use Errno qw(EACCES); + + use lib File::Spec->catdir('t', 'lib'); + use Test::More; +@@ -208,7 +209,15 @@ SKIP: { + + like($abs_path, qr|$want$|i, "Cwd::abs_path produced $abs_path"); + like($fast_abs_path, qr|$want$|i, "Cwd::fast_abs_path produced $fast_abs_path"); +- like($pas, qr|$want$|i, "Cwd::_perl_abs_path produced $pas") if $EXTRA_ABSPATH_TESTS; ++ if ($EXTRA_ABSPATH_TESTS) { ++ # _perl_abs_path() can fail if some ancestor directory isn't readable ++ if (defined $pas) { ++ like($pas, qr|$want$|i, "Cwd::_perl_abs_path produced $pas"); ++ } ++ else { ++ is($!+0, EACCES, "check we got the expected error on failure"); ++ } ++ } + + rmtree($test_dirs[0], 0, 0); + 1 while unlink $file; +diff --git a/t/cwd_enoent.t b/t/cwd_enoent.t +index 8f3a1fb..510c65e 100644 +--- a/t/cwd_enoent.t ++++ b/t/cwd_enoent.t +@@ -2,7 +2,7 @@ use warnings; + use strict; + + use Config; +-use Errno qw(ENOENT); ++use Errno qw(); + use File::Temp qw(tempdir); + use Test::More; + +@@ -19,6 +19,7 @@ unless(mkdir("$tmp/testdir") && chdir("$tmp/testdir") && rmdir("$tmp/testdir")){ + plan tests => 8; + require Cwd; + ++my @acceptable_errnos = (&Errno::ENOENT, (defined &Errno::ESTALE ? &Errno::ESTALE : ())); + foreach my $type (qw(regular perl)) { + SKIP: { + skip "_perl_abs_path() not expected to work", 4 +@@ -36,12 +37,14 @@ foreach my $type (qw(regular perl)) { + $res = Cwd::getcwd(); + $eno = 0+$!; + is $res, undef, "$type getcwd result on non-existent directory"; +- is $eno, ENOENT, "$type getcwd errno on non-existent directory"; ++ ok((grep { $eno == $_ } @acceptable_errnos), "$type getcwd errno on non-existent directory") ++ or diag "Got errno code $eno, expected " . join(", ", @acceptable_errnos); + $! = 0; + $res = Cwd::abs_path("."); + $eno = 0+$!; + is $res, undef, "$type abs_path result on non-existent directory"; +- is $eno, ENOENT, "$type abs_path errno on non-existent directory"; ++ ok((grep { $eno == $_ } @acceptable_errnos), "$type abs_path errno on non-existent directory") ++ or diag "Got errno code $eno, expected " . join(", ", @acceptable_errnos); + } + } + +-- +2.20.1 + diff --git a/perl-PathTools.spec b/perl-PathTools.spec index 4ee5f4b..3bf2298 100644 --- a/perl-PathTools.spec +++ b/perl-PathTools.spec @@ -1,14 +1,18 @@ +%global base_version 3.75 + Name: perl-PathTools -Version: 3.75 -Release: 2%{?dist} +Version: 3.78 +Release: 1%{?dist} Summary: PathTools Perl module (Cwd, File::Spec) # Cwd.xs: BSD # other files: GPL+ or Artistic License: (GPL+ or Artistic) and BSD URL: https://metacpan.org/release/PathTools -Source0: https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX/PathTools-%{version}.tar.gz +Source0: https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX/PathTools-%{base_version}.tar.gz # Disable VMS tests (bug #973713) Patch0: PathTools-3.74-Disable-VMS-tests.patch +# Unbundled from perl 5.29.10 +Patch1: PathTools-3.75-Upgrade-to-3.78.patch BuildRequires: coreutils BuildRequires: findutils BuildRequires: gcc @@ -50,8 +54,9 @@ Recommends: perl(XSLoader) This is the combined distribution for the File::Spec and Cwd modules. %prep -%setup -q -n PathTools-%{version} +%setup -q -n PathTools-%{base_version} %patch0 -p1 +%patch1 -p1 # Do not distribute File::Spec::VMS as it works on VMS only (bug #973713) rm lib/File/Spec/VMS.pm @@ -77,6 +82,9 @@ make test %{_mandir}/man3/* %changelog +* Thu Apr 25 2019 Jitka Plesnikova - 3.78-1 +- Upgrade to 3.78 as provided in perl-5.29.10 + * Fri Feb 01 2019 Fedora Release Engineering - 3.75-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild