commit 74b5ea51accc7753554d08141e21cb003c6161bf Author: James Antill Date: Thu Feb 23 13:11:46 2023 -0500 Import rpm: 7f497f0f16378519e1207dc29430dc60b3d59fe5 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..778326e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/PathTools-3.62.tar.gz diff --git a/PathTools-3.47-Disable-VMS-tests.patch b/PathTools-3.47-Disable-VMS-tests.patch new file mode 100644 index 0000000..8de2deb --- /dev/null +++ b/PathTools-3.47-Disable-VMS-tests.patch @@ -0,0 +1,203 @@ +diff -up PathTools-3.47/t/Spec.t.orig PathTools-3.47/t/Spec.t +--- PathTools-3.47/t/Spec.t.orig 2014-05-23 18:39:28.000000000 +0200 ++++ PathTools-3.47/t/Spec.t 2014-05-27 12:32:22.473486887 +0200 +@@ -38,7 +38,7 @@ if ( $@ ) { + $INC{"VMS/Filespec.pm"} = 1 ; + } + +-foreach (qw(Unix Win32 VMS OS2 Mac Epoc Cygwin)) { ++foreach (qw(Unix Win32 OS2 Mac Epoc Cygwin)) { + require_ok("File::Spec::$_"); + } + +@@ -322,190 +322,6 @@ my @tests = ( + [ "FakeWin32->rel2abs('../','//prague_main/work')", '\\\\prague_main\\work' ], + [ "FakeWin32->rel2abs('D:foo.txt')", 'D:\\alpha\\beta\\foo.txt' ], + +-[ "VMS->case_tolerant()", '1' ], +- +-[ "VMS->catfile('a','b','c')", $vms_unix_rpt ? 'a/b/c' : '[.a.b]c' ], +-[ "VMS->catfile('a','b','[]c')", $vms_unix_rpt ? 'a/b/c' : '[.a.b]c' ], +-[ "VMS->catfile('[.a]','b','c')", $vms_unix_rpt ? 'a/b/c' : '[.a.b]c' ], +-[ "VMS->catfile('a/b/','c')", $vms_unix_rpt ? 'a/b/c' : '[.a.b]c' ], +-[ "VMS->catfile('c')", 'c' ], +-[ "VMS->catfile('[]c')", 'c' ], +- +-[ "VMS->catfile('0','b','c')", $vms_unix_rpt ? '0/b/c' : '[.0.b]c' ], +-[ "VMS->catfile('a','0','c')", $vms_unix_rpt ? 'a/0/c' : '[.a.0]c' ], +-[ "VMS->catfile('a','b','0')", $vms_unix_rpt ? 'a/b/0' : '[.a.b]0' ], +-[ "VMS->catfile('0','0','c')", $vms_unix_rpt ? '0/0/c' : '[.0.0]c' ], +-[ "VMS->catfile('a','0','0')", $vms_unix_rpt ? 'a/0/0' : '[.a.0]0' ], +-[ "VMS->catfile('0','b','0')", $vms_unix_rpt ? '0/b/0' : '[.0.b]0' ], +-[ "VMS->catfile('0','0','0')", $vms_unix_rpt ? '0/0/0' : '[.0.0]0' ], +- +- +-[ "VMS->splitpath('file')", ',,file' ], +-[ "VMS->splitpath('[d1.d2.d3]')", ',[d1.d2.d3],' ], +-[ "VMS->splitpath('[.d1.d2.d3]')", ',[.d1.d2.d3],' ], +-[ "VMS->splitpath('[d1.d2.d3]file')", ',[d1.d2.d3],file' ], +-[ "VMS->splitpath('d1/d2/d3/file')", +- $vms_unix_rpt ? ',d1/d2/d3/,file' : ',[.d1.d2.d3],file' ], +-[ "VMS->splitpath('/d1/d2/d3/file')", +- $vms_unix_rpt ? ',/d1/d2/d3/,file' : 'd1:,[d2.d3],file' ], +-[ "VMS->splitpath('[.d1.d2.d3]file')", ',[.d1.d2.d3],file' ], +-[ "VMS->splitpath('node::volume:[d1.d2.d3]')", 'node::volume:,[d1.d2.d3],' ], +-[ "VMS->splitpath('node::volume:[d1.d2.d3]file')", 'node::volume:,[d1.d2.d3],file' ], +-[ "VMS->splitpath('node\"access_spec\"::volume:[d1.d2.d3]')", 'node"access_spec"::volume:,[d1.d2.d3],' ], +-[ "VMS->splitpath('node\"access_spec\"::volume:[d1.d2.d3]file')", 'node"access_spec"::volume:,[d1.d2.d3],file' ], +- +-[ "VMS->splitpath('[]')", ',[],' ], +-[ "VMS->splitpath('[-]')", ',[-],' ], +-[ "VMS->splitpath('[]file')", ',[],file' ], +-[ "VMS->splitpath('[-]file')", ',[-],file' ], +-[ "VMS->splitpath('')", ',,' ], +-[ "VMS->splitpath('0')", ',,0' ], +-[ "VMS->splitpath('[0]')", ',[0],' ], +-[ "VMS->splitpath('[.0]')", ',[.0],' ], +-[ "VMS->splitpath('[0.0.0]')", ',[0.0.0],' ], +-[ "VMS->splitpath('[.0.0.0]')", ',[.0.0.0],' ], +-[ "VMS->splitpath('[0]0')", ',[0],0' ], +-[ "VMS->splitpath('[0.0.0]0')", ',[0.0.0],0' ], +-[ "VMS->splitpath('[.0.0.0]0')", ',[.0.0.0],0' ], +-[ "VMS->splitpath('0/0')", $vms_unix_rpt ? ',0/,0' : ',[.0],0' ], +-[ "VMS->splitpath('0/0/0')", $vms_unix_rpt ? ',0/0/,0' : ',[.0.0],0' ], +-[ "VMS->splitpath('/0/0')", $vms_unix_rpt ? ',/0/,0' : '0:,[000000],0' ], +-[ "VMS->splitpath('/0/0/0')", $vms_unix_rpt ? ',/0/0/,0' : '0:,[0],0' ], +-[ "VMS->splitpath('d1',1)", ',d1,' ], +-# $no_file tests +-[ "VMS->splitpath('[d1.d2.d3]',1)", ',[d1.d2.d3],' ], +-[ "VMS->splitpath('[.d1.d2.d3]',1)", ',[.d1.d2.d3],' ], +-[ "VMS->splitpath('d1/d2/d3',1)", $vms_unix_rpt ? ',d1/d2/d3,' : ',[.d1.d2.d3],' ], +-[ "VMS->splitpath('/d1/d2/d3',1)", $vms_unix_rpt ? ',/d1/d2/d3,' : 'd1:,[d2.d3],' ], +-[ "VMS->splitpath('node::volume:[d1.d2.d3]',1)", 'node::volume:,[d1.d2.d3],' ], +-[ "VMS->splitpath('node\"access_spec\"::volume:[d1.d2.d3]',1)", 'node"access_spec"::volume:,[d1.d2.d3],' ], +-[ "VMS->splitpath('[]',1)", ',[],' ], +-[ "VMS->splitpath('[-]',1)", ',[-],' ], +-[ "VMS->splitpath('',1)", ',,' ], +-[ "VMS->splitpath('0',1)", ',0,' ], +-[ "VMS->splitpath('[0]',1)", ',[0],' ], +-[ "VMS->splitpath('[.0]',1)", ',[.0],' ], +-[ "VMS->splitpath('[0.0.0]',1)", ',[0.0.0],' ], +-[ "VMS->splitpath('[.0.0.0]',1)", ',[.0.0.0],' ], +-[ "VMS->splitpath('0/0',1)", $vms_unix_rpt ? ',0/0,' : ',[.0.0],' ], +-[ "VMS->splitpath('0/0/0',1)", $vms_unix_rpt ? ',0/0/0,' : ',[.0.0.0],' ], +-[ "VMS->splitpath('/0/0',1)", $vms_unix_rpt ? ',/0/0,' : '0:,[000000.0],' ], +-[ "VMS->splitpath('/0/0/0',1)", $vms_unix_rpt ? ',/0/0/0,' : '0:,[0.0],' ], +- +-[ "VMS->catpath('','','file')", 'file' ], +-[ "VMS->catpath('','[d1.d2.d3]','')", '[d1.d2.d3]' ], +-[ "VMS->catpath('','[.d1.d2.d3]','')", '[.d1.d2.d3]' ], +-[ "VMS->catpath('','[d1.d2.d3]','file')", '[d1.d2.d3]file' ], +-[ "VMS->catpath('','[.d1.d2.d3]','file')", '[.d1.d2.d3]file' ], +-[ "VMS->catpath('','d1/d2/d3','file')", +- $vms_unix_rpt ? 'd1/d2/d3/file' : '[.d1.d2.d3]file' ], +-[ "VMS->catpath('v','d1/d2/d3','file')", 'v:[.d1.d2.d3]file' ], +-[ "VMS->catpath('v','','file')", 'v:file' ], +-[ "VMS->catpath('v','w:[d1.d2.d3]','file')", 'v:[d1.d2.d3]file' ], +-[ "VMS->catpath('node::volume:','[d1.d2.d3]','')", 'node::volume:[d1.d2.d3]' ], +-[ "VMS->catpath('node::volume:','[d1.d2.d3]','file')", 'node::volume:[d1.d2.d3]file' ], +-[ "VMS->catpath('node\"access_spec\"::volume:','[d1.d2.d3]','')", 'node"access_spec"::volume:[d1.d2.d3]' ], +-[ "VMS->catpath('node\"access_spec\"::volume:','[d1.d2.d3]','file')", 'node"access_spec"::volume:[d1.d2.d3]file' ], +- +-[ "VMS->canonpath('')", '' ], +-[ "VMS->canonpath('volume:[d1]file')", $vms_unix_rpt ? '/volume/d1/file' : 'volume:[d1]file' ], +-[ "VMS->canonpath('volume:[d1.-.d2.][d3.d4.-]')", $vms_unix_rpt ? '/volume/d2/d3/' : 'volume:[d2.d3]' ], +-[ "VMS->canonpath('volume:[000000.d1]d2.dir;1')", $vms_unix_rpt ? '/volume/d1/d2.dir.1' : 'volume:[d1]d2.dir;1' ], +-[ "VMS->canonpath('volume:[d1.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/d1/d2/d3/file.txt' : 'volume:[d1.d2.d3]file.txt' ], +-[ "VMS->canonpath('[d1.d2.d3]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/d2/d3/file.txt' : '[d1.d2.d3]file.txt' ], +-[ "VMS->canonpath('volume:[-.d1.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/../d1/d2/d3/file.txt' : 'volume:[-.d1.d2.d3]file.txt' ], +-[ "VMS->canonpath('[-.d1.d2.d3]file.txt')", $vms_unix_rpt ? '../d1/d2/d3/file.txt' : '[-.d1.d2.d3]file.txt' ], +-[ "VMS->canonpath('volume:[--.d1.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/../../d1/d2/d3/file.txt' : 'volume:[--.d1.d2.d3]file.txt' ], +-[ "VMS->canonpath('[--.d1.d2.d3]file.txt')", $vms_unix_rpt ? '../../d1/d2/d3/file.txt' : '[--.d1.d2.d3]file.txt' ], +-[ "VMS->canonpath('volume:[d1.-.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/d2/d3/file.txt' : 'volume:[d2.d3]file.txt' ], +-[ "VMS->canonpath('[d1.-.d2.d3]file.txt')", $vms_unix_rpt ? '/sys$disk/d2/d3/file.txt' : '[d2.d3]file.txt' ], +-[ "VMS->canonpath('volume:[d1.--.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/../d2/d3/file.txt' : 'volume:[-.d2.d3]file.txt' ], +-[ "VMS->canonpath('[d1.--.d2.d3]file.txt')", $vms_unix_rpt ? '../d2/d3/file.txt' : '[-.d2.d3]file.txt' ], +-[ "VMS->canonpath('volume:[d1.d2.-.d3]file.txt')", $vms_unix_rpt ? '/volume/d1/d3/file.txt' : 'volume:[d1.d3]file.txt' ], +-[ "VMS->canonpath('[d1.d2.-.d3]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/d3/file.txt' : '[d1.d3]file.txt' ], +-[ "VMS->canonpath('volume:[d1.d2.--.d3]file.txt')", $vms_unix_rpt ? '/volume/d3/file.txt' : 'volume:[d3]file.txt' ], +-[ "VMS->canonpath('[d1.d2.--.d3]file.txt')", $vms_unix_rpt ? '/sys$disk/d3/file.txt' : '[d3]file.txt' ], +-[ "VMS->canonpath('volume:[d1.d2.d3.-]file.txt')", $vms_unix_rpt ? '/volume/d1/d2/file.txt' : 'volume:[d1.d2]file.txt' ], +-[ "VMS->canonpath('[d1.d2.d3.-]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/d2/file.txt' : '[d1.d2]file.txt' ], +-[ "VMS->canonpath('volume:[d1.d2.d3.--]file.txt')", $vms_unix_rpt ? '/volume/d1/file.txt' : 'volume:[d1]file.txt' ], +-[ "VMS->canonpath('[d1.d2.d3.--]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/file.txt' : '[d1]file.txt' ], +-[ "VMS->canonpath('volume:[d1.000000.][000000.][d3.--]file.txt')", $vms_unix_rpt ? '/volume/d1/file.txt' +- : 'volume:[d1]file.txt' ], +-[ "VMS->canonpath('[d1.000000.][000000.][d3.--]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/file.txt' +- : '[d1]file.txt' ], +-[ "VMS->canonpath('volume:[d1.000000.][000000.][d2.000000]file.txt')", $vms_unix_rpt ? '/volume/d1/000000/d2/000000/file.txt' +- : 'volume:[d1.000000.d2.000000]file.txt' ], +-[ "VMS->canonpath('[d1.000000.][000000.][d2.000000]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/000000/d2/000000/file.txt' +- : '[d1.000000.d2.000000]file.txt' ], +-[ "VMS->canonpath('volume:[d1.000000.][000000.][d3.--.000000]file.txt')", $vms_unix_rpt ? '/volume/d1/000000/file.txt' +- : 'volume:[d1.000000]file.txt' ], +-[ "VMS->canonpath('[d1.000000.][000000.][d3.--.000000]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/000000/file.txt' +- : '[d1.000000]file.txt' ], +-[ "VMS->canonpath('volume:[d1.000000.][000000.][-.-.000000]file.txt')", $vms_unix_rpt ? '/volume/file.txt' +- : 'volume:[000000]file.txt' ], +-[ "VMS->canonpath('[d1.000000.][000000.][--.-.000000]file.txt')", $vms_unix_rpt ? '../file.txt' : '[-.000000]file.txt' ], +-[ "VMS->canonpath('[d1.d2.--]file')", $vms_unix_rpt ? '../file.txt' : '[000000]file' ], +-# During the Perl 5.8 era, FS::Unix stopped eliminating redundant path elements, so mimic that here. +-[ "VMS->canonpath('a/../../b/c.dat')", $vms_unix_rpt ? 'a/../../b/c.dat' : '[-.b]c.dat' ], +-[ "VMS->canonpath('^')", '^' ], +- +-[ "VMS->splitdir('')", '' ], +-[ "VMS->splitdir('[]')", '' ], +-[ "VMS->splitdir('d1.d2.d3')", 'd1,d2,d3' ], +-[ "VMS->splitdir('[d1.d2.d3]')", 'd1,d2,d3' ], +-[ "VMS->splitdir('.d1.d2.d3')", 'd1,d2,d3' ], +-[ "VMS->splitdir('[.d1.d2.d3]')", 'd1,d2,d3' ], +-[ "VMS->splitdir('.-.d2.d3')", '-,d2,d3' ], +-[ "VMS->splitdir('[.-.d2.d3]')", '-,d2,d3' ], +-[ "VMS->splitdir('[d1.d2]')", 'd1,d2' ], +-[ "VMS->splitdir('[d1-.--d2]')", 'd1-,--d2' ], +-[ "VMS->splitdir('[d1---.-.d2]')", 'd1---,-,d2' ], +-[ "VMS->splitdir('[d1.---.d2]')", 'd1,-,-,-,d2' ], +-[ "VMS->splitdir('[d1---d2]')", 'd1---d2' ], +-[ "VMS->splitdir('[d1.][000000.d2]')", 'd1,d2' ], +-[ "VMS->splitdir('[.d1.d2^.d3]')", 'd1,d2^.d3' ], +- +-[ "VMS->catdir('')", '' ], +-[ "VMS->catdir('foo')", $vms_unix_rpt ? 'foo' : '[.foo]' ], +-[ "VMS->catdir('d1','d2','d3')", $vms_unix_rpt ? 'd1/d2/d3' : '[.d1.d2.d3]' ], +-[ "VMS->catdir('d1','d2/','d3')", $vms_unix_rpt ? 'd1/d2/d3' : '[.d1.d2.d3]' ], +-[ "VMS->catdir('','d1','d2','d3')",$vms_unix_rpt ? '/d1/d2/d3' : '[.d1.d2.d3]' ], +-[ "VMS->catdir('','-','d2','d3')", $vms_unix_rpt ? '-/d2/d3' : '[-.d2.d3]' ], +-[ "VMS->catdir('','-','','d3')", $vms_unix_rpt ? '-/d3' : '[-.d3]' ], +-[ "VMS->catdir('dir.dir','d2.dir','d3.dir')", $vms_unix_rpt ? 'dir/d2/d3' +- : '[.dir.d2.d3]' ], +-[ "VMS->catdir('[.name]')", $vms_unix_rpt ? 'name/' : '[.name]' ], +-[ "VMS->catdir('[.name]','[.name]')", $vms_unix_rpt ? 'name/name' :'[.name.name]' ], +-[ "VMS->catdir('/a/b/c','[-]')", $vms_unix_rpt ? '/a/b/c/..' : 'a:[b]'], +-[ "VMS->catdir('a:[b.c]','..')", $vms_unix_rpt ? '/a/b/c/..' : 'a:[b]'], +- +-[ "VMS->abs2rel('node::volume:[t1.t2.t3]','node::volume:[t1.t2.t3]')", $vms_unix_rpt ? './' : '[]' ], +-[ "VMS->abs2rel('node::volume:[t1.t2.t3]','[t1.t2.t3]')", $vms_unix_rpt ? '/node//volume/t1/t2/t3/' : 'node::volume:[t1.t2.t3]' ], +-[ "VMS->abs2rel('node::volume:[t1.t2.t4]','node::volume:[t1.t2.t3]')", $vms_unix_rpt ? '../t4/' : '[-.t4]' ], +-[ "VMS->abs2rel('node::volume:[t1.t2.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/node//volume/t1/t2/t4/' : 'node::volume:[t1.t2.t4]' ], +-[ "VMS->abs2rel('[t1.t2.t3]','[t1.t2.t3]')", $vms_unix_rpt ? './' : '[]' ], +-[ "VMS->abs2rel('[t1.t2.t3]file','[t1.t2.t3]')", 'file' ], +-[ "VMS->abs2rel('[t1.t2.t3]file','[t1.t2]')", $vms_unix_rpt ? 't3/file' : '[.t3]file' ], +-[ "VMS->abs2rel('v:[t1.t2.t3]file','v:[t1.t2]')", $vms_unix_rpt ? 't3/file' : '[.t3]file' ], +-[ "VMS->abs2rel('[t1.t2.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '../t4/' : '[-.t4]' ], +-[ "VMS->abs2rel('[t1.t2]file','[t1.t2.t3]')", $vms_unix_rpt ? '../file' : '[-]file' ], +-[ "VMS->abs2rel('[t1.t2.t3.t4]','[t1.t2.t3]')", $vms_unix_rpt ? 't4/' : '[.t4]' ], +-[ "VMS->abs2rel('[t4.t5.t6]','[t1.t2.t3]')", $vms_unix_rpt ? '../../../t4/t5/t6/' : '[---.t4.t5.t6]' ], +-[ "VMS->abs2rel('[000000]','[t1.t2.t3]')", $vms_unix_rpt ? '../../../' : '[---]' ], +-[ "VMS->abs2rel('a:[t1.t2.t4]','a:[t1.t2.t3]')", $vms_unix_rpt ? '../t4/' : '[-.t4]' ], +-[ "VMS->abs2rel('a:[t1.t2.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/a/t1/t2/t4/' : 'a:[t1.t2.t4]' ], +-[ "VMS->abs2rel('[a.-.b.c.-]','[t1.t2.t3]')", $vms_unix_rpt ? '../../../b/' : '[---.b]' ], +- +-[ "VMS->rel2abs('[.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/t3/t4/' : '[t1.t2.t3.t4]' ], +-[ "VMS->rel2abs('[.t4.t5]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/t3/t4/t5/' : '[t1.t2.t3.t4.t5]' ], +-[ "VMS->rel2abs('[]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/t3/' : '[t1.t2.t3]' ], +-[ "VMS->rel2abs('[-]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/' : '[t1.t2]' ], +-[ "VMS->rel2abs('[-.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/t4/' : '[t1.t2.t4]' ], +-[ "VMS->rel2abs('[t1]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/' : '[t1]' ], +- +-[ "VMS->file_name_is_absolute('foo:')", '1' ], +-[ "VMS->file_name_is_absolute('foo:bar.dat')", '1' ], +-[ "VMS->file_name_is_absolute('foo:[000000]bar.dat')", '1' ], + + [ "OS2->case_tolerant()", '1' ], + diff --git a/PathTools-3.62-Upgrade-to-3.63.patch b/PathTools-3.62-Upgrade-to-3.63.patch new file mode 100644 index 0000000..98e1a5f --- /dev/null +++ b/PathTools-3.62-Upgrade-to-3.63.patch @@ -0,0 +1,204 @@ +diff --git a/Cwd.pm b/Cwd.pm +index 9b5183e..e8b9f19 100644 +--- a/Cwd.pm ++++ b/Cwd.pm +@@ -3,7 +3,7 @@ use strict; + use Exporter; + use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); + +-$VERSION = '3.62'; ++$VERSION = '3.63'; + my $xs_version = $VERSION; + $VERSION =~ tr/_//d; + +diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm +index 2709c39..32b987e 100644 +--- a/lib/File/Spec.pm ++++ b/lib/File/Spec.pm +@@ -3,7 +3,7 @@ package File::Spec; + use strict; + use vars qw(@ISA $VERSION); + +-$VERSION = '3.62'; ++$VERSION = '3.63'; + $VERSION =~ tr/_//d; + + my %module = (MacOS => 'Mac', +diff --git a/lib/File/Spec/AmigaOS.pm b/lib/File/Spec/AmigaOS.pm +index e6d6f5f2a..7a5889c 100644 +--- a/lib/File/Spec/AmigaOS.pm ++++ b/lib/File/Spec/AmigaOS.pm +@@ -4,7 +4,7 @@ use strict; + use vars qw(@ISA $VERSION); + require File::Spec::Unix; + +-$VERSION = '3.62'; ++$VERSION = '3.64'; + $VERSION =~ tr/_//d; + + @ISA = qw(File::Spec::Unix); +@@ -15,7 +15,8 @@ File::Spec::AmigaOS - File::Spec for AmigaOS + + =head1 SYNOPSIS + +- require File::Spec::AmigaOS; # Done automatically by File::Spec if needed ++ require File::Spec::AmigaOS; # Done automatically by File::Spec ++ # if needed + + =head1 DESCRIPTION + +diff --git a/lib/File/Spec/Cygwin.pm b/lib/File/Spec/Cygwin.pm +index 67f056f..2092eb8 100644 +--- a/lib/File/Spec/Cygwin.pm ++++ b/lib/File/Spec/Cygwin.pm +@@ -4,7 +4,7 @@ use strict; + use vars qw(@ISA $VERSION); + require File::Spec::Unix; + +-$VERSION = '3.62'; ++$VERSION = '3.63'; + $VERSION =~ tr/_//d; + + @ISA = qw(File::Spec::Unix); +diff --git a/lib/File/Spec/Epoc.pm b/lib/File/Spec/Epoc.pm +index 17e3f54..22f0192 100644 +--- a/lib/File/Spec/Epoc.pm ++++ b/lib/File/Spec/Epoc.pm +@@ -3,7 +3,7 @@ package File::Spec::Epoc; + use strict; + use vars qw($VERSION @ISA); + +-$VERSION = '3.62'; ++$VERSION = '3.63'; + $VERSION =~ tr/_//d; + + require File::Spec::Unix; +diff --git a/lib/File/Spec/Functions.pm b/lib/File/Spec/Functions.pm +index 470c771..af2c498 100644 +--- a/lib/File/Spec/Functions.pm ++++ b/lib/File/Spec/Functions.pm +@@ -5,7 +5,7 @@ use strict; + + use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION); + +-$VERSION = '3.62'; ++$VERSION = '3.63'; + $VERSION =~ tr/_//d; + + require Exporter; +diff --git a/lib/File/Spec/Mac.pm b/lib/File/Spec/Mac.pm +index 329451f..52c3bfe 100644 +--- a/lib/File/Spec/Mac.pm ++++ b/lib/File/Spec/Mac.pm +@@ -4,7 +4,7 @@ use strict; + use vars qw(@ISA $VERSION); + require File::Spec::Unix; + +-$VERSION = '3.62'; ++$VERSION = '3.63'; + $VERSION =~ tr/_//d; + + @ISA = qw(File::Spec::Unix); +diff --git a/lib/File/Spec/OS2.pm b/lib/File/Spec/OS2.pm +index 55e6d33..804ecdb 100644 +--- a/lib/File/Spec/OS2.pm ++++ b/lib/File/Spec/OS2.pm +@@ -4,7 +4,7 @@ use strict; + use vars qw(@ISA $VERSION); + require File::Spec::Unix; + +-$VERSION = '3.62'; ++$VERSION = '3.63'; + $VERSION =~ tr/_//d; + + @ISA = qw(File::Spec::Unix); +diff --git a/lib/File/Spec/Unix.pm b/lib/File/Spec/Unix.pm +index 586e9b0..3916a11 100644 +--- a/lib/File/Spec/Unix.pm ++++ b/lib/File/Spec/Unix.pm +@@ -3,7 +3,7 @@ package File::Spec::Unix; + use strict; + use vars qw($VERSION); + +-$VERSION = '3.62'; ++$VERSION = '3.63'; + my $xs_version = $VERSION; + $VERSION =~ tr/_//d; + +diff --git a/lib/File/Spec/VMS.pm b/lib/File/Spec/VMS.pm +index 600c49f..02cc0b0 100644 +--- a/lib/File/Spec/VMS.pm ++++ b/lib/File/Spec/VMS.pm +@@ -4,7 +4,7 @@ use strict; + use vars qw(@ISA $VERSION); + require File::Spec::Unix; + +-$VERSION = '3.62'; ++$VERSION = '3.63'; + $VERSION =~ tr/_//d; + + @ISA = qw(File::Spec::Unix); +@@ -437,15 +437,13 @@ Attempt to convert an absolute file specification to a relative specification. + + sub abs2rel { + my $self = shift; +- return vmspath(File::Spec::Unix::abs2rel( $self, @_ )) +- if ((grep m{/}, @_) && !(grep m{(?_cwd() unless defined $base and length $base; + + # If there is no device or directory syntax on $base, make sure it + # is treated as a directory. +- $base = VMS::Filespec::vmspath($base) unless $base =~ m{(?rel2abs($_) } + +@@ -461,7 +459,7 @@ sub abs2rel { + + my ($path_volume, $path_directories, $path_file) = $self->splitpath($path); + my ($base_volume, $base_directories, $base_file) = $self->splitpath($base); +- return $path unless lc($path_volume) eq lc($base_volume); ++ return $self->canonpath( $path ) unless lc($path_volume) eq lc($base_volume); + + # Now, remove all leading components that are the same + my @pathchunks = $self->splitdir( $path_directories ); +diff --git a/lib/File/Spec/Win32.pm b/lib/File/Spec/Win32.pm +index 6df7ee8..1105b67 100644 +--- a/lib/File/Spec/Win32.pm ++++ b/lib/File/Spec/Win32.pm +@@ -5,7 +5,7 @@ use strict; + use vars qw(@ISA $VERSION); + require File::Spec::Unix; + +-$VERSION = '3.62'; ++$VERSION = '3.63'; + $VERSION =~ tr/_//d; + + @ISA = qw(File::Spec::Unix); +diff --git a/t/abs2rel.t b/t/abs2rel.t +index 5e33ab6..b77a1c2 100644 +--- a/t/abs2rel.t ++++ b/t/abs2rel.t +@@ -6,7 +6,7 @@ use Test::More; + use Cwd qw(cwd getcwd abs_path); + use File::Spec(); + use File::Temp qw(tempdir); +-use File::Path qw(make_path); ++use File::Path qw(mkpath); + + my $startdir = cwd(); + my @files = ( 'anyfile', './anyfile', '../first_sub_dir/anyfile', '../second_sub_dir/second_file' ); +@@ -25,8 +25,8 @@ sub test_rel2abs { + File::Spec->catdir('first_sub_dir', 'sub_sub_dir'), + 'second_sub_dir' + ); +- make_path(@subdirs, { mode => 0711 }) +- or die "Unable to make_path: $!"; ++ mkpath(@subdirs, { mode => 0711 }) ++ or die "Unable to mkpath: $!"; + + open my $OUT2, '>', + File::Spec->catfile('second_sub_dir', 'second_file') diff --git a/PathTools-3.63-CVE-2016-1238-avoid-loading-optional-modules-from.patch b/PathTools-3.63-CVE-2016-1238-avoid-loading-optional-modules-from.patch new file mode 100644 index 0000000..98d1075 --- /dev/null +++ b/PathTools-3.63-CVE-2016-1238-avoid-loading-optional-modules-from.patch @@ -0,0 +1,62 @@ +diff -up PathTools/Cwd.pm.cve PathTools/Cwd.pm +--- PathTools/Cwd.pm.cve 2016-03-01 13:33:02.000000000 +0100 ++++ PathTools/Cwd.pm 2016-08-02 13:39:39.814316060 +0200 +@@ -40,7 +40,10 @@ if ($^O eq 'os2') { + my $use_vms_feature; + BEGIN { + if ($^O eq 'VMS') { +- if (eval { local $SIG{__DIE__}; require VMS::Feature; }) { ++ if (eval { local $SIG{__DIE__}; ++ local @INC = @INC; ++ pop @INC if $INC[-1] eq '.'; ++ require VMS::Feature; }) { + $use_vms_feature = 1; + } + } +diff -up PathTools/lib/File/Spec/Cygwin.pm.cve PathTools/lib/File/Spec/Cygwin.pm +--- PathTools/lib/File/Spec/Cygwin.pm.cve 2016-03-01 13:33:02.000000000 +0100 ++++ PathTools/lib/File/Spec/Cygwin.pm 2016-08-02 13:39:39.814316060 +0200 +@@ -137,7 +137,11 @@ sub case_tolerant { + if ($mntopts and ($mntopts =~ /,managed/)) { + return 0; + } +- eval { require Win32API::File; } or return 1; ++ eval { ++ local @INC = @INC; ++ pop @INC if $INC[-1] eq '.'; ++ require Win32API::File; ++ } or return 1; + my $osFsType = "\0"x256; + my $osVolName = "\0"x256; + my $ouFsFlags = 0; +diff -up PathTools/lib/File/Spec/VMS.pm.cve PathTools/lib/File/Spec/VMS.pm +--- PathTools/lib/File/Spec/VMS.pm.cve 2016-03-01 13:33:02.000000000 +0100 ++++ PathTools/lib/File/Spec/VMS.pm 2016-08-02 13:39:39.814316060 +0200 +@@ -39,7 +39,10 @@ via the C CRT + + my $use_feature; + BEGIN { +- if (eval { local $SIG{__DIE__}; require VMS::Feature; }) { ++ if (eval { local $SIG{__DIE__}; ++ local @INC = @INC; ++ pop @INC if $INC[-1] eq '.'; ++ require VMS::Feature; }) { + $use_feature = 1; + } + } +diff -up PathTools/lib/File/Spec/Win32.pm.cve PathTools/lib/File/Spec/Win32.pm +--- PathTools/lib/File/Spec/Win32.pm.cve 2016-03-01 13:33:02.000000000 +0100 ++++ PathTools/lib/File/Spec/Win32.pm 2016-08-02 13:39:39.814316060 +0200 +@@ -90,7 +90,11 @@ Default: 1 + =cut + + sub case_tolerant { +- eval { require Win32API::File; } or return 1; ++ eval { ++ local @INC = @INC; ++ pop @INC if $INC[-1] eq '.'; ++ require Win32API::File; ++ } or return 1; + my $drive = shift || "C:"; + my $osFsType = "\0"x256; + my $osVolName = "\0"x256; diff --git a/PathTools-3.74-Disable-VMS-tests.patch b/PathTools-3.74-Disable-VMS-tests.patch new file mode 100644 index 0000000..b4a93e0 --- /dev/null +++ b/PathTools-3.74-Disable-VMS-tests.patch @@ -0,0 +1,230 @@ +From 27cd91c8d8c0aa03a954097e24d78df08905dc8e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Thu, 11 May 2017 11:36:46 +0200 +Subject: [PATCH] Disable VMS test (bug #973713) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + t/Spec.t | 196 +-------------------------------------------------------------- + 1 file changed, 1 insertion(+), 195 deletions(-) + +diff --git a/t/Spec.t b/t/Spec.t +index 84ed6b1..7ef976f 100644 +--- a/t/Spec.t ++++ b/t/Spec.t +@@ -38,7 +38,7 @@ if ( $@ ) { + $INC{"VMS/Filespec.pm"} = 1 ; + } + +-foreach (qw(Unix Win32 VMS OS2 Mac Epoc Cygwin)) { ++foreach (qw(Unix Win32 OS2 Mac Epoc Cygwin)) { + require_ok("File::Spec::$_"); + } + +@@ -326,200 +326,6 @@ my @tests = ( + [ "FakeWin32->rel2abs('../','//prague_main/work')", '\\\\prague_main\\work' ], + [ "FakeWin32->rel2abs('D:foo.txt')", 'D:\\alpha\\beta\\foo.txt' ], + +-[ "VMS->case_tolerant()", '1' ], +- +-[ "VMS->catfile('a','b','c')", $vms_unix_rpt ? 'a/b/c' : '[.a.b]c' ], +-[ "VMS->catfile('a','b','[]c')", $vms_unix_rpt ? 'a/b/c' : '[.a.b]c' ], +-[ "VMS->catfile('[.a]','b','c')", $vms_unix_rpt ? 'a/b/c' : '[.a.b]c' ], +-[ "VMS->catfile('a/b/','c')", $vms_unix_rpt ? 'a/b/c' : '[.a.b]c' ], +-[ "VMS->catfile('c')", 'c' ], +-[ "VMS->catfile('[]c')", 'c' ], +- +-[ "VMS->catfile('0','b','c')", $vms_unix_rpt ? '0/b/c' : '[.0.b]c' ], +-[ "VMS->catfile('a','0','c')", $vms_unix_rpt ? 'a/0/c' : '[.a.0]c' ], +-[ "VMS->catfile('a','b','0')", $vms_unix_rpt ? 'a/b/0' : '[.a.b]0' ], +-[ "VMS->catfile('0','0','c')", $vms_unix_rpt ? '0/0/c' : '[.0.0]c' ], +-[ "VMS->catfile('a','0','0')", $vms_unix_rpt ? 'a/0/0' : '[.a.0]0' ], +-[ "VMS->catfile('0','b','0')", $vms_unix_rpt ? '0/b/0' : '[.0.b]0' ], +-[ "VMS->catfile('0','0','0')", $vms_unix_rpt ? '0/0/0' : '[.0.0]0' ], +- +- +-[ "VMS->splitpath('file')", ',,file' ], +-[ "VMS->splitpath('[d1.d2.d3]')", ',[d1.d2.d3],' ], +-[ "VMS->splitpath('[.d1.d2.d3]')", ',[.d1.d2.d3],' ], +-[ "VMS->splitpath('[d1.d2.d3]file')", ',[d1.d2.d3],file' ], +-[ "VMS->splitpath('d1/d2/d3/file')", +- $vms_unix_rpt ? ',d1/d2/d3/,file' : ',[.d1.d2.d3],file' ], +-[ "VMS->splitpath('/d1/d2/d3/file')", +- $vms_unix_rpt ? ',/d1/d2/d3/,file' : 'd1:,[d2.d3],file' ], +-[ "VMS->splitpath('[.d1.d2.d3]file')", ',[.d1.d2.d3],file' ], +-[ "VMS->splitpath('node::volume:[d1.d2.d3]')", 'node::volume:,[d1.d2.d3],' ], +-[ "VMS->splitpath('node::volume:[d1.d2.d3]file')", 'node::volume:,[d1.d2.d3],file' ], +-[ "VMS->splitpath('node\"access_spec\"::volume:[d1.d2.d3]')", 'node"access_spec"::volume:,[d1.d2.d3],' ], +-[ "VMS->splitpath('node\"access_spec\"::volume:[d1.d2.d3]file')", 'node"access_spec"::volume:,[d1.d2.d3],file' ], +- +-[ "VMS->splitpath('[]')", ',[],' ], +-[ "VMS->splitpath('[-]')", ',[-],' ], +-[ "VMS->splitpath('[]file')", ',[],file' ], +-[ "VMS->splitpath('[-]file')", ',[-],file' ], +-[ "VMS->splitpath('')", ',,' ], +-[ "VMS->splitpath('0')", ',,0' ], +-[ "VMS->splitpath('[0]')", ',[0],' ], +-[ "VMS->splitpath('[.0]')", ',[.0],' ], +-[ "VMS->splitpath('[0.0.0]')", ',[0.0.0],' ], +-[ "VMS->splitpath('[.0.0.0]')", ',[.0.0.0],' ], +-[ "VMS->splitpath('[0]0')", ',[0],0' ], +-[ "VMS->splitpath('[0.0.0]0')", ',[0.0.0],0' ], +-[ "VMS->splitpath('[.0.0.0]0')", ',[.0.0.0],0' ], +-[ "VMS->splitpath('0/0')", $vms_unix_rpt ? ',0/,0' : ',[.0],0' ], +-[ "VMS->splitpath('0/0/0')", $vms_unix_rpt ? ',0/0/,0' : ',[.0.0],0' ], +-[ "VMS->splitpath('/0/0')", $vms_unix_rpt ? ',/0/,0' : '0:,[000000],0' ], +-[ "VMS->splitpath('/0/0/0')", $vms_unix_rpt ? ',/0/0/,0' : '0:,[0],0' ], +-[ "VMS->splitpath('d1',1)", ',d1,' ], +-# $no_file tests +-[ "VMS->splitpath('[d1.d2.d3]',1)", ',[d1.d2.d3],' ], +-[ "VMS->splitpath('[.d1.d2.d3]',1)", ',[.d1.d2.d3],' ], +-[ "VMS->splitpath('d1/d2/d3',1)", $vms_unix_rpt ? ',d1/d2/d3,' : ',[.d1.d2.d3],' ], +-[ "VMS->splitpath('/d1/d2/d3',1)", $vms_unix_rpt ? ',/d1/d2/d3,' : 'd1:,[d2.d3],' ], +-[ "VMS->splitpath('node::volume:[d1.d2.d3]',1)", 'node::volume:,[d1.d2.d3],' ], +-[ "VMS->splitpath('node\"access_spec\"::volume:[d1.d2.d3]',1)", 'node"access_spec"::volume:,[d1.d2.d3],' ], +-[ "VMS->splitpath('[]',1)", ',[],' ], +-[ "VMS->splitpath('[-]',1)", ',[-],' ], +-[ "VMS->splitpath('',1)", ',,' ], +-[ "VMS->splitpath('0',1)", ',0,' ], +-[ "VMS->splitpath('[0]',1)", ',[0],' ], +-[ "VMS->splitpath('[.0]',1)", ',[.0],' ], +-[ "VMS->splitpath('[0.0.0]',1)", ',[0.0.0],' ], +-[ "VMS->splitpath('[.0.0.0]',1)", ',[.0.0.0],' ], +-[ "VMS->splitpath('0/0',1)", $vms_unix_rpt ? ',0/0,' : ',[.0.0],' ], +-[ "VMS->splitpath('0/0/0',1)", $vms_unix_rpt ? ',0/0/0,' : ',[.0.0.0],' ], +-[ "VMS->splitpath('/0/0',1)", $vms_unix_rpt ? ',/0/0,' : '0:,[000000.0],' ], +-[ "VMS->splitpath('/0/0/0',1)", $vms_unix_rpt ? ',/0/0/0,' : '0:,[0.0],' ], +- +-[ "VMS->catpath('','','file')", 'file' ], +-[ "VMS->catpath('','[d1.d2.d3]','')", '[d1.d2.d3]' ], +-[ "VMS->catpath('','[.d1.d2.d3]','')", '[.d1.d2.d3]' ], +-[ "VMS->catpath('','[d1.d2.d3]','file')", '[d1.d2.d3]file' ], +-[ "VMS->catpath('','[.d1.d2.d3]','file')", '[.d1.d2.d3]file' ], +-[ "VMS->catpath('','d1/d2/d3','file')", +- $vms_unix_rpt ? 'd1/d2/d3/file' : '[.d1.d2.d3]file' ], +-[ "VMS->catpath('v','d1/d2/d3','file')", 'v:[.d1.d2.d3]file' ], +-[ "VMS->catpath('v','','file')", 'v:file' ], +-[ "VMS->catpath('v','w:[d1.d2.d3]','file')", 'v:[d1.d2.d3]file' ], +-[ "VMS->catpath('node::volume:','[d1.d2.d3]','')", 'node::volume:[d1.d2.d3]' ], +-[ "VMS->catpath('node::volume:','[d1.d2.d3]','file')", 'node::volume:[d1.d2.d3]file' ], +-[ "VMS->catpath('node\"access_spec\"::volume:','[d1.d2.d3]','')", 'node"access_spec"::volume:[d1.d2.d3]' ], +-[ "VMS->catpath('node\"access_spec\"::volume:','[d1.d2.d3]','file')", 'node"access_spec"::volume:[d1.d2.d3]file' ], +- +-[ "VMS->canonpath('')", '' ], +-[ "VMS->canonpath('volume:[d1]file')", $vms_unix_rpt ? '/volume/d1/file' : 'volume:[d1]file' ], +-[ "VMS->canonpath('volume:[d1.-.d2.][d3.d4.-]')", $vms_unix_rpt ? '/volume/d2/d3/' : 'volume:[d2.d3]' ], +-[ "VMS->canonpath('volume:[000000.d1]d2.dir;1')", $vms_unix_rpt ? '/volume/d1/d2.dir.1' : 'volume:[d1]d2.dir;1' ], +-[ "VMS->canonpath('volume:[d1.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/d1/d2/d3/file.txt' : 'volume:[d1.d2.d3]file.txt' ], +-[ "VMS->canonpath('[d1.d2.d3]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/d2/d3/file.txt' : '[d1.d2.d3]file.txt' ], +-[ "VMS->canonpath('volume:[-.d1.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/../d1/d2/d3/file.txt' : 'volume:[-.d1.d2.d3]file.txt' ], +-[ "VMS->canonpath('[-.d1.d2.d3]file.txt')", $vms_unix_rpt ? '../d1/d2/d3/file.txt' : '[-.d1.d2.d3]file.txt' ], +-[ "VMS->canonpath('volume:[--.d1.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/../../d1/d2/d3/file.txt' : 'volume:[--.d1.d2.d3]file.txt' ], +-[ "VMS->canonpath('[--.d1.d2.d3]file.txt')", $vms_unix_rpt ? '../../d1/d2/d3/file.txt' : '[--.d1.d2.d3]file.txt' ], +-[ "VMS->canonpath('volume:[d1.-.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/d2/d3/file.txt' : 'volume:[d2.d3]file.txt' ], +-[ "VMS->canonpath('[d1.-.d2.d3]file.txt')", $vms_unix_rpt ? '/sys$disk/d2/d3/file.txt' : '[d2.d3]file.txt' ], +-[ "VMS->canonpath('volume:[d1.--.d2.d3]file.txt')", $vms_unix_rpt ? '/volume/../d2/d3/file.txt' : 'volume:[-.d2.d3]file.txt' ], +-[ "VMS->canonpath('[d1.--.d2.d3]file.txt')", $vms_unix_rpt ? '../d2/d3/file.txt' : '[-.d2.d3]file.txt' ], +-[ "VMS->canonpath('volume:[d1.d2.-.d3]file.txt')", $vms_unix_rpt ? '/volume/d1/d3/file.txt' : 'volume:[d1.d3]file.txt' ], +-[ "VMS->canonpath('[d1.d2.-.d3]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/d3/file.txt' : '[d1.d3]file.txt' ], +-[ "VMS->canonpath('volume:[d1.d2.--.d3]file.txt')", $vms_unix_rpt ? '/volume/d3/file.txt' : 'volume:[d3]file.txt' ], +-[ "VMS->canonpath('[d1.d2.--.d3]file.txt')", $vms_unix_rpt ? '/sys$disk/d3/file.txt' : '[d3]file.txt' ], +-[ "VMS->canonpath('volume:[d1.d2.d3.-]file.txt')", $vms_unix_rpt ? '/volume/d1/d2/file.txt' : 'volume:[d1.d2]file.txt' ], +-[ "VMS->canonpath('[d1.d2.d3.-]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/d2/file.txt' : '[d1.d2]file.txt' ], +-[ "VMS->canonpath('volume:[d1.d2.d3.--]file.txt')", $vms_unix_rpt ? '/volume/d1/file.txt' : 'volume:[d1]file.txt' ], +-[ "VMS->canonpath('[d1.d2.d3.--]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/file.txt' : '[d1]file.txt' ], +-[ "VMS->canonpath('volume:[d1.000000.][000000.][d3.--]file.txt')", $vms_unix_rpt ? '/volume/d1/file.txt' +- : 'volume:[d1]file.txt' ], +-[ "VMS->canonpath('[d1.000000.][000000.][d3.--]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/file.txt' +- : '[d1]file.txt' ], +-[ "VMS->canonpath('volume:[d1.000000.][000000.][d2.000000]file.txt')", $vms_unix_rpt ? '/volume/d1/000000/d2/000000/file.txt' +- : 'volume:[d1.000000.d2.000000]file.txt' ], +-[ "VMS->canonpath('[d1.000000.][000000.][d2.000000]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/000000/d2/000000/file.txt' +- : '[d1.000000.d2.000000]file.txt' ], +-[ "VMS->canonpath('volume:[d1.000000.][000000.][d3.--.000000]file.txt')", $vms_unix_rpt ? '/volume/d1/000000/file.txt' +- : 'volume:[d1.000000]file.txt' ], +-[ "VMS->canonpath('[d1.000000.][000000.][d3.--.000000]file.txt')", $vms_unix_rpt ? '/sys$disk/d1/000000/file.txt' +- : '[d1.000000]file.txt' ], +-[ "VMS->canonpath('volume:[d1.000000.][000000.][-.-.000000]file.txt')", $vms_unix_rpt ? '/volume/file.txt' +- : 'volume:[000000]file.txt' ], +-[ "VMS->canonpath('[d1.000000.][000000.][--.-.000000]file.txt')", $vms_unix_rpt ? '../file.txt' : '[-.000000]file.txt' ], +-[ "VMS->canonpath('[d1.d2.--]file')", $vms_unix_rpt ? '../file.txt' : '[000000]file' ], +-# During the Perl 5.8 era, FS::Unix stopped eliminating redundant path elements, so mimic that here. +-[ "VMS->canonpath('a/../../b/c.dat')", $vms_unix_rpt ? 'a/../../b/c.dat' : '[-.b]c.dat' ], +-[ "VMS->canonpath('^')", $vms_unix_rpt ? '/' : '^' ], +-# Check that directory specs with caret-dot component is treated correctly +-[ "VMS->canonpath('foo:[bar.coo.kie.--]file.txt')", $vms_unix_rpt ? '/foo/bar/file.txt' : "foo:[bar]file.txt" ], +-[ "VMS->canonpath('foo:[bar^.coo.kie.--]file.txt')", $vms_unix_rpt ? '/foo/file.txt' : "foo:[000000]file.txt" ], +-[ "VMS->canonpath('foo:[bar.coo^.kie.--]file.txt')", $vms_unix_rpt ? '/foo/file.txt' : "foo:[000000]file.txt" ], +-[ "VMS->canonpath('foo:[bar.coo.kie.-]file.txt')", $vms_unix_rpt ? '/foo/bar/coo/file.txt' : "foo:[bar.coo]file.txt" ], +-[ "VMS->canonpath('foo:[bar^.coo.kie.-]file.txt')", $vms_unix_rpt ? '/foo/bar.coo/file.txt' : "foo:[bar^.coo]file.txt" ], +-[ "VMS->canonpath('foo:[bar.coo^.kie.-]file.txt')", $vms_unix_rpt ? '/foo/bar/file.txt' : "foo:[bar]file.txt" ], +- +-[ "VMS->splitdir('')", '' ], +-[ "VMS->splitdir('[]')", '' ], +-[ "VMS->splitdir('d1.d2.d3')", 'd1,d2,d3' ], +-[ "VMS->splitdir('[d1.d2.d3]')", 'd1,d2,d3' ], +-[ "VMS->splitdir('.d1.d2.d3')", 'd1,d2,d3' ], +-[ "VMS->splitdir('[.d1.d2.d3]')", 'd1,d2,d3' ], +-[ "VMS->splitdir('.-.d2.d3')", '-,d2,d3' ], +-[ "VMS->splitdir('[.-.d2.d3]')", '-,d2,d3' ], +-[ "VMS->splitdir('[d1.d2]')", 'd1,d2' ], +-[ "VMS->splitdir('[d1-.--d2]')", 'd1-,--d2' ], +-[ "VMS->splitdir('[d1---.-.d2]')", 'd1---,-,d2' ], +-[ "VMS->splitdir('[d1.---.d2]')", 'd1,-,-,-,d2' ], +-[ "VMS->splitdir('[d1---d2]')", 'd1---d2' ], +-[ "VMS->splitdir('[d1.][000000.d2]')", 'd1,d2' ], +-[ "VMS->splitdir('[.d1.d2^.d3]')", 'd1,d2^.d3' ], +- +-[ "VMS->catdir('')", '' ], +-[ "VMS->catdir('foo')", $vms_unix_rpt ? 'foo' : '[.foo]' ], +-[ "VMS->catdir('d1','d2','d3')", $vms_unix_rpt ? 'd1/d2/d3' : '[.d1.d2.d3]' ], +-[ "VMS->catdir('d1','d2/','d3')", $vms_unix_rpt ? 'd1/d2/d3' : '[.d1.d2.d3]' ], +-[ "VMS->catdir('','d1','d2','d3')",$vms_unix_rpt ? '/d1/d2/d3' : '[.d1.d2.d3]' ], +-[ "VMS->catdir('','-','d2','d3')", $vms_unix_rpt ? '-/d2/d3' : '[-.d2.d3]' ], +-[ "VMS->catdir('','-','','d3')", $vms_unix_rpt ? '-/d3' : '[-.d3]' ], +-[ "VMS->catdir('dir.dir','d2.dir','d3.dir')", $vms_unix_rpt ? 'dir/d2/d3' +- : '[.dir.d2.d3]' ], +-[ "VMS->catdir('[.name]')", $vms_unix_rpt ? 'name/' : '[.name]' ], +-[ "VMS->catdir('[.name]','[.name]')", $vms_unix_rpt ? 'name/name' :'[.name.name]' ], +-[ "VMS->catdir('/a/b/c','[-]')", $vms_unix_rpt ? '/a/b/c/..' : 'a:[b]'], +-[ "VMS->catdir('a:[b.c]','..')", $vms_unix_rpt ? '/a/b/c/..' : 'a:[b]'], +- +-[ "VMS->abs2rel('node::volume:[t1.t2.t3]','node::volume:[t1.t2.t3]')", $vms_unix_rpt ? './' : '[]' ], +-[ "VMS->abs2rel('node::volume:[t1.t2.t3]','[t1.t2.t3]')", $vms_unix_rpt ? '/node//volume/t1/t2/t3/' : 'node::volume:[t1.t2.t3]' ], +-[ "VMS->abs2rel('node::volume:[t1.t2.t4]','node::volume:[t1.t2.t3]')", $vms_unix_rpt ? '../t4/' : '[-.t4]' ], +-[ "VMS->abs2rel('node::volume:[t1.t2.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/node//volume/t1/t2/t4/' : 'node::volume:[t1.t2.t4]' ], +-[ "VMS->abs2rel('/volume/t1/t2/t3','/volume/t1')", $vms_unix_rpt ? 't2/t3' : '[.t2]t3' ], +-[ "VMS->abs2rel('/volume/t1/t2/t3/t4','/volume/t1/xyz')", $vms_unix_rpt ? '../t2/t3/t4' : '[-.t2.t3]t4' ], +-[ "VMS->abs2rel('[t1.t2.t3]','[t1.t2.t3]')", $vms_unix_rpt ? './' : '[]' ], +-[ "VMS->abs2rel('[t1.t2.t3]file','[t1.t2.t3]')", 'file' ], +-[ "VMS->abs2rel('[t1.t2.t3]file','[t1.t2]')", $vms_unix_rpt ? 't3/file' : '[.t3]file' ], +-[ "VMS->abs2rel('v:[t1.t2.t3]file','v:[t1.t2]')", $vms_unix_rpt ? 't3/file' : '[.t3]file' ], +-[ "VMS->abs2rel('[t1.t2.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '../t4/' : '[-.t4]' ], +-[ "VMS->abs2rel('[t1.t2]file','[t1.t2.t3]')", $vms_unix_rpt ? '../file' : '[-]file' ], +-[ "VMS->abs2rel('[t1.t2.t3.t4]','[t1.t2.t3]')", $vms_unix_rpt ? 't4/' : '[.t4]' ], +-[ "VMS->abs2rel('[t4.t5.t6]','[t1.t2.t3]')", $vms_unix_rpt ? '../../../t4/t5/t6/' : '[---.t4.t5.t6]' ], +-[ "VMS->abs2rel('[000000]','[t1.t2.t3]')", $vms_unix_rpt ? '../../../' : '[---]' ], +-[ "VMS->abs2rel('a:[t1.t2.t4]','a:[t1.t2.t3]')", $vms_unix_rpt ? '../t4/' : '[-.t4]' ], +-[ "VMS->abs2rel('a:[t1.t2.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/a/t1/t2/t4' : 'a:[t1.t2.t4]' ], +-[ "VMS->abs2rel('[a.-.b.c.-]','[t1.t2.t3]')", $vms_unix_rpt ? '../../../b/' : '[---.b]' ], +- +-[ "VMS->rel2abs('[.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/t3/t4/' : '[t1.t2.t3.t4]' ], +-[ "VMS->rel2abs('[.t4.t5]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/t3/t4/t5/' : '[t1.t2.t3.t4.t5]' ], +-[ "VMS->rel2abs('[]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/t3/' : '[t1.t2.t3]' ], +-[ "VMS->rel2abs('[-]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/' : '[t1.t2]' ], +-[ "VMS->rel2abs('[-.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/t4/' : '[t1.t2.t4]' ], +-[ "VMS->rel2abs('[t1]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/' : '[t1]' ], +- +-[ "VMS->file_name_is_absolute('foo:')", '1' ], +-[ "VMS->file_name_is_absolute('foo:bar.dat')", '1' ], +-[ "VMS->file_name_is_absolute('foo:[000000]bar.dat')", '1' ], +- + [ "OS2->case_tolerant()", '1' ], + + [ "OS2->catdir('A:/d1','B:/d2','d3','')", 'A:/d1/B:/d2/d3' ], +-- +2.13.6 + 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-5.33.3-PathTools-Cwd.xs-fix-off-by-one-in-bsd_realpath.patch b/perl-5.33.3-PathTools-Cwd.xs-fix-off-by-one-in-bsd_realpath.patch new file mode 100644 index 0000000..02a9577 --- /dev/null +++ b/perl-5.33.3-PathTools-Cwd.xs-fix-off-by-one-in-bsd_realpath.patch @@ -0,0 +1,76 @@ +From c8c367581c3333c38d07481e2ea8d81171403c81 Mon Sep 17 00:00:00 2001 +From: David Mitchell +Date: Mon, 26 Oct 2020 15:11:14 +0000 +Subject: [PATCH] PathTools/Cwd.xs: fix off-by-one in bsd_realpath() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +At the heart of this function is a loop which repeatedly finds the next +component in the path, processes it, then chops that component off the +front of the path by shifting the string to the start of the buffer; +i.e. something like: + + while (remaining_len) { + s = strchr(remaining, '/') + ... + remaining_len -= s - remaining; + memmove(remaining, s, remaining_len + 1); + } + +The problem is that the per-iteration decrement to remaining_len doesn't +take account of the '/' character, so each iteration, remaining_len gets +one more byte too big. + +It turns out that this is harmless - it just means that more and more +garbage characters after the trailing null byte get copied each time, +but after each copy the path string is still well formed, with a +trailing null in the right place. So just the random garbage after the +null byte is different. + +This commit fixes that. + +Although really, it would be better to just increment the +start-of-string pointer each time rather than shift the whole string +each time. + +Signed-off-by: Petr Písař +--- + dist/PathTools/Cwd.xs | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/dist/PathTools/Cwd.xs b/dist/PathTools/Cwd.xs +index 8662400e47..e7ecb3c6c1 100644 +--- a/dist/PathTools/Cwd.xs ++++ b/dist/PathTools/Cwd.xs +@@ -119,15 +119,24 @@ bsd_realpath(const char *path, char resolved[MAXPATHLEN]) + + p = strchr(remaining, '/'); + s = p ? p : remaining + remaining_len; ++ + if ((STRLEN)(s - remaining) >= (STRLEN)sizeof(next_token)) { + errno = ENAMETOOLONG; + return (NULL); + } + memcpy(next_token, remaining, s - remaining); + next_token[s - remaining] = '\0'; +- remaining_len -= s - remaining; +- if (p != NULL) +- memmove(remaining, s + 1, remaining_len + 1); ++ ++ /* shift first component off front of path, including '/' */ ++ if (p) { ++ s++; /* skip '/' */ ++ remaining_len -= s - remaining; ++ /* the +1 includes the trailing '\0' */ ++ memmove(remaining, s, remaining_len + 1); ++ } ++ else ++ remaining_len = 0; ++ + if (resolved[resolved_len - 1] != '/') { + if (resolved_len + 1 >= MAXPATHLEN) { + errno = ENAMETOOLONG; +-- +2.25.4 + diff --git a/perl-PathTools.spec b/perl-PathTools.spec new file mode 100644 index 0000000..37589f8 --- /dev/null +++ b/perl-PathTools.spec @@ -0,0 +1,191 @@ +%global base_version 3.62 +Name: perl-PathTools +Version: 3.63 +Release: 368%{?dist} +Summary: PathTools Perl module (Cwd, File::Spec) +# Cwd.xs: BSD +# other files: GPL+ or Artistic +## Not in the binary package +# t/lib/Test/Tutorial.pod: (GPL+ or Artistic) and Public Domain +License: (GPL+ or Artistic) and BSD +Group: Development/Libraries +URL: http://search.cpan.org/dist/PathTools/ +Source0: http://www.cpan.org/authors/id/R/RJ/RJBS/PathTools-%{base_version}.tar.gz +# Disable VMS test (bug #973713) +Patch0: PathTools-3.47-Disable-VMS-tests.patch +# Unbundled from perl 5.24.0 +Patch1: PathTools-3.62-Upgrade-to-3.63.patch +# Avoid loading optional modules from default . (CVE-2016-1238) +Patch2: PathTools-3.63-CVE-2016-1238-avoid-loading-optional-modules-from.patch +BuildRequires: coreutils +BuildRequires: findutils +BuildRequires: gcc +BuildRequires: make +BuildRequires: perl +BuildRequires: perl-devel +BuildRequires: perl-generators +BuildRequires: perl(ExtUtils::MakeMaker) +BuildRequires: sed +# Run-time: +BuildRequires: perl(Carp) +BuildRequires: perl(constant) +BuildRequires: perl(Exporter) +# File::Basename not needed because of removed File::Spec::VMS +BuildRequires: perl(Scalar::Util) +BuildRequires: perl(strict) +BuildRequires: perl(vars) +# Tests: +BuildRequires: perl(Carp::Heavy) +BuildRequires: perl(Config) +BuildRequires: perl(File::Path) +BuildRequires: perl(File::Temp) +BuildRequires: perl(lib) +BuildRequires: perl(Test::More) >= 0.88 +Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version)) +Requires: perl(Carp) +Requires: perl(Scalar::Util) + +%{?perl_default_filter} + +%description +This is the combined distribution for the File::Spec and Cwd modules. + +%prep +%setup -q -n PathTools-%{base_version} +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 + +# Do not distribute File::Spec::VMS as it works on VMS only (bug #973713) +rm lib/File/Spec/VMS.pm +sed -i -e '/^lib\/File\/Spec\/VMS.pm/d' MANIFEST + +# Remove bundled modules +rm -rf t/lib +sed -i -e '/t\/lib\//d' MANIFEST + +%build +perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="$RPM_OPT_FLAGS" +make %{?_smp_mflags} + +%install +make pure_install DESTDIR=$RPM_BUILD_ROOT +find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} \; +find $RPM_BUILD_ROOT -type f -name '*.bs' -size 0 -exec rm -f {} \; +%{_fixperms} $RPM_BUILD_ROOT/* + +%check +make test + +%files +%doc Changes README +%{perl_vendorarch}/auto/* +%{perl_vendorarch}/Cwd.pm +%{perl_vendorarch}/File/ +%{_mandir}/man3/* + +%changelog +* Fri Mar 29 2019 Jitka Plesnikova - 3.63-368 +- Rebuild with enable hardening (bug #1636329) + +* Sat Feb 11 2017 Fedora Release Engineering - 3.63-367 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Aug 03 2016 Jitka Plesnikova - 3.63-366 +- Avoid loading optional modules from default . (CVE-2016-1238) + +* Sat May 14 2016 Jitka Plesnikova - 3.63-365 +- Increase release to favour standalone package + +* Wed May 11 2016 Jitka Plesnikova - 3.63-1 +- 3.63 bump in order to dual-live with perl 5.24 + +* Thu Feb 04 2016 Fedora Release Engineering - 3.62-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Jan 12 2016 Petr Pisar - 3.62-1 +- 3.62 bump + +* Mon Jan 11 2016 Petr Pisar - 3.60-2 +- Fix CVE-2015-8607 (File::Spec::canonpath() loses tain) (bug #1297455) + +* Thu Nov 19 2015 Petr Pisar - 3.60-1 +- 3.60 bump + +* Mon Nov 16 2015 Petr Pisar - 3.59-1 +- 3.59 bump + +* Thu Jun 18 2015 Fedora Release Engineering - 3.56-346 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Thu Jun 04 2015 Jitka Plesnikova - 3.56-345 +- Increase release to favour standalone package + +* Wed Jun 03 2015 Jitka Plesnikova - 3.56-2 +- Perl 5.22 rebuild + +* Mon Apr 27 2015 Jitka Plesnikova - 3.56-1 +- 3.56 bump in order to dual-live with Perl 5.22 + +* Tue Jan 13 2015 Petr Pisar - 3.47-311 +- Require constant module + +* Wed Sep 03 2014 Jitka Plesnikova - 3.47-310 +- Increase release to favour standalone package + +* Tue Aug 26 2014 Jitka Plesnikova - 3.47-4 +- Perl 5.20 rebuild + +* Sun Aug 17 2014 Fedora Release Engineering - 3.47-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 3.47-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue May 27 2014 Jitka Plesnikova - 3.47-1 +- 3.47 bump + +* Sun Aug 04 2013 Fedora Release Engineering - 3.40-291 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Jul 15 2013 Petr Pisar - 3.40-290 +- Increase release to favour standalone package + +* Fri Jul 12 2013 Petr Pisar - 3.40-4 +- Link minimal build-root packages against libperl.so explicitly + +* Fri Jul 12 2013 Petr Pisar - 3.40-3 +- Disable VMS test (bug #973713) + +* Fri Jun 14 2013 Petr Pisar - 3.40-2 +- Do not distribute File::Spec::VMS (bug #973713) + +* Mon Feb 04 2013 Petr Pisar - 3.40-1 +- 3.40 bump + +* Tue Sep 18 2012 Petr Pisar - 3.39.01-1 +- 3.39_01 bump + +* Wed Aug 15 2012 Petr Pisar - 3.33-8 +- Specify all dependencies + +* Fri Jul 20 2012 Fedora Release Engineering - 3.33-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Jun 06 2012 Petr Pisar - 3.33-6 +- Perl 5.16 rebuild + +* Fri Jan 13 2012 Fedora Release Engineering - 3.33-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Jul 25 2011 Petr Pisar - 3.33-4 +- RPM 4.9 dependency filtering added + +* Mon Jun 20 2011 Marcela Mašláňová - 3.33-3 +- Perl mass rebuild + +* Sun May 29 2011 Ville Skyttä - 3.33-2 +- Own the %%{perl_vendorarch}/File dir. + +* Mon Feb 28 2011 Marcela Mašláňová 3.33-1 +- Specfile autogenerated by cpanspec 1.79. diff --git a/sources b/sources new file mode 100644 index 0000000..86b828a --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA1 (PathTools-3.62.tar.gz) = 356530987ccfb61779ce038978a614aa64679d72