Compare commits

...

No commits in common. 'c9' and 'i10cs' have entirely different histories.
c9 ... i10cs

@ -0,0 +1,278 @@
From 2aa3d01bca010903b9cdb848e61ca45f84ce6bcf Mon Sep 17 00:00:00 2001
From: Jitka Plesnikova <jplesnik@redhat.com>
Date: Thu, 6 May 2021 08:31:26 +0200
Subject: [PATCH] Upgrade to 3.80
---
Cwd.pm | 2 +-
Cwd.xs | 24 +++--
META.json | 2 +-
META.yml | 2 +-
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 | 4 +-
t/cwd.t | 4 +
t/cwd_enoent.t | 2 +
16 files changed, 232 insertions(+), 20 deletions(-)
diff --git a/Cwd.pm b/Cwd.pm
index 9b173c2..6a1d2f1 100644
--- a/Cwd.pm
+++ b/Cwd.pm
@@ -3,7 +3,7 @@ use strict;
use Exporter;
-our $VERSION = '3.78';
+our $VERSION = '3.80';
my $xs_version = $VERSION;
$VERSION =~ tr/_//d;
diff --git a/Cwd.xs b/Cwd.xs
index 8662400..223e1a6 100644
--- a/Cwd.xs
+++ b/Cwd.xs
@@ -84,6 +84,9 @@ bsd_realpath(const char *path, char resolved[MAXPATHLEN])
unsigned symlinks;
int serrno;
char remaining[MAXPATHLEN], next_token[MAXPATHLEN];
+#ifdef PERL_IMPLICIT_SYS
+ dTHX;
+#endif
serrno = errno;
symlinks = 0;
@@ -119,15 +122,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;
@@ -166,8 +178,8 @@ bsd_realpath(const char *path, char resolved[MAXPATHLEN])
}
#if defined(HAS_LSTAT) && defined(HAS_READLINK) && defined(HAS_SYMLINK)
{
- struct stat sb;
- if (lstat(resolved, &sb) != 0) {
+ Stat_t sb;
+ if (PerlLIO_lstat(resolved, &sb) != 0) {
if (errno == ENOENT && p == NULL) {
errno = serrno;
return (resolved);
@@ -182,7 +194,7 @@ bsd_realpath(const char *path, char resolved[MAXPATHLEN])
errno = ELOOP;
return (NULL);
}
- slen = readlink(resolved, symlink, sizeof(symlink) - 1);
+ slen = PerlLIO_readlink(resolved, symlink, sizeof(symlink) - 1);
if (slen < 0)
return (NULL);
symlink[slen] = '\0';
diff --git a/META.json b/META.json
index e41b849..ad429a5 100644
--- a/META.json
+++ b/META.json
@@ -50,6 +50,6 @@
"url" : "git://perl5.git.perl.org/perl.git"
}
},
- "version" : "3.75",
+ "version" : "3.73",
"x_serialization_backend" : "JSON::PP version 2.27400_02"
}
diff --git a/META.yml b/META.yml
index c53f36e..c2adfcf 100644
--- a/META.yml
+++ b/META.yml
@@ -26,5 +26,5 @@ resources:
bugtracker: https://rt.perl.org/rt3/
homepage: http://dev.perl.org/
repository: git://perl5.git.perl.org/perl.git
-version: '3.75'
+version: '3.73'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm
index 7fe3272..30d883b 100644
--- a/lib/File/Spec.pm
+++ b/lib/File/Spec.pm
@@ -2,7 +2,7 @@ package File::Spec;
use strict;
-our $VERSION = '3.78';
+our $VERSION = '3.80';
$VERSION =~ tr/_//d;
my %module = (
diff --git a/lib/File/Spec/AmigaOS.pm b/lib/File/Spec/AmigaOS.pm
index 2b7d18a..fd9da81 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.78';
+our $VERSION = '3.80';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Cygwin.pm b/lib/File/Spec/Cygwin.pm
index d44ced3..953c233 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.78';
+our $VERSION = '3.80';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Epoc.pm b/lib/File/Spec/Epoc.pm
index b611cd9..fcb9e89 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.78';
+our $VERSION = '3.80';
$VERSION =~ tr/_//d;
require File::Spec::Unix;
diff --git a/lib/File/Spec/Functions.pm b/lib/File/Spec/Functions.pm
index 3f617bd..e14ad2f 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.78';
+our $VERSION = '3.80';
$VERSION =~ tr/_//d;
require Exporter;
diff --git a/lib/File/Spec/Mac.pm b/lib/File/Spec/Mac.pm
index d920d2f..8026edc 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.78';
+our $VERSION = '3.80';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/OS2.pm b/lib/File/Spec/OS2.pm
index 603781a..3c35ba9 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.78';
+our $VERSION = '3.80';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Unix.pm b/lib/File/Spec/Unix.pm
index 6749e60..c06d18f 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.78';
+our $VERSION = '3.80';
$VERSION =~ tr/_//d;
=head1 NAME
diff --git a/lib/File/Spec/Win32.pm b/lib/File/Spec/Win32.pm
index 5934010..1537442 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.78';
+our $VERSION = '3.80';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
@@ -84,7 +84,7 @@ sub tmpdir {
MSWin32 case-tolerance depends on GetVolumeInformation() $ouFsFlags == FS_CASE_SENSITIVE,
indicating the case significance when comparing file specifications.
Since XP FS_CASE_SENSITIVE is effectively disabled for the NT subsubsystem.
-See http://cygwin.com/ml/cygwin/2007-07/msg00891.html
+See L<http://cygwin.com/ml/cygwin/2007-07/msg00891.html>
Default: 1
=cut
diff --git a/t/cwd.t b/t/cwd.t
index c056938..d155e33 100644
--- a/t/cwd.t
+++ b/t/cwd.t
@@ -187,6 +187,10 @@ rmtree($test_dirs[0], 0, 0);
SKIP: {
skip "no symlinks on this platform", 2+$EXTRA_ABSPATH_TESTS unless $Config{d_symlink} && $^O !~ m!^(qnx|nto)!;
+ # on Win32 GetCurrentDirectory() includes the symlink if
+ # you chdir() to a path including the symlink.
+ skip "Win32 symlinks are unusual", 2+$EXTRA_ABSPATH_TESTS if $^O eq "MSWin32";
+
my $file = "linktest";
mkpath([$Test_Dir], 0, 0777);
symlink $Test_Dir, $file;
diff --git a/t/cwd_enoent.t b/t/cwd_enoent.t
index 510c65e..2e94bad 100644
--- a/t/cwd_enoent.t
+++ b/t/cwd_enoent.t
@@ -26,6 +26,8 @@ foreach my $type (qw(regular perl)) {
if $type eq "perl" &&
!(($Config{prefix} =~ m/\//) && $^O ne "cygwin");
+ # https://github.com/Perl/perl5/issues/16525
+ # https://bugs.dragonflybsd.org/issues/3250
skip "getcwd() doesn't fail on non-existent directories on this platform", 4
if $type eq 'regular' && $^O eq 'dragonfly';
--
2.30.2

@ -0,0 +1,371 @@
From 29821ef8025dddc95c122e87afb09d5b3a5ef6ed Mon Sep 17 00:00:00 2001
From: Jitka Plesnikova <jplesnik@redhat.com>
Date: Thu, 12 May 2022 10:53:47 +0200
Subject: [PATCH] Upgrade to 3.84
---
Changes | 30 ++++++++++++++++++++++++++
Cwd.pm | 43 ++++++++++----------------------------
Cwd.xs | 4 ++++
Makefile.PL | 2 +-
lib/File/Spec.pm | 4 ++--
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 | 4 ++--
lib/File/Spec/Win32.pm | 2 +-
t/cwd_enoent.t | 3 +++
14 files changed, 60 insertions(+), 44 deletions(-)
diff --git a/Changes b/Changes
index 7f04db2..9533c1f 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,35 @@
Revision history for Perl distribution PathTools.
+3.81
+
+- compare inode numbers as strings (github #18788)
+
+3.80
+
+- use the PerlLIO_*() functions for lstat() and readlink() to support
+ Win32 symlink support added to perl.
+
+- skip a test that assumes getcwd() doesn't return symlinks on Win32, where
+ it can.
+
+3.79
+
+- fix an off-by-one in bsd_realpath()
+
+3.78
+
+- fallback to Internals::getcwd() for getcwd() if available (requires
+ $Config{d_getcwd})
+
+3.77
+
+- don't translate "..." to "..\.." on Win32
+
+3.76
+
+- test t/cwd_enoent.t - also accept ESTALE for a directory that no
+ longer exists (github #16699)
+
3.75
- Fix t/abs2rel.t on 5.8.8 by changing mkpath call to be
compatible with older File::Path
diff --git a/Cwd.pm b/Cwd.pm
index 6a1d2f1..0683583 100644
--- a/Cwd.pm
+++ b/Cwd.pm
@@ -3,7 +3,7 @@ use strict;
use Exporter;
-our $VERSION = '3.80';
+our $VERSION = '3.84';
my $xs_version = $VERSION;
$VERSION =~ tr/_//d;
@@ -181,12 +181,6 @@ if ($^O =~ /android/) {
}
my $found_pwd_cmd = defined($pwd_cmd);
-unless ($pwd_cmd) {
- # Isn't this wrong? _backtick_pwd() will fail if someone has
- # pwd in their path but it is not /bin/pwd or /usr/bin/pwd?
- # See [perl #16774]. --jhi
- $pwd_cmd = 'pwd';
-}
# Lazy-load Carp
sub _carp { require Carp; Carp::carp(@_) }
@@ -213,26 +207,13 @@ sub _backtick_pwd {
# we take care not to override an existing definition for cwd().
unless ($METHOD_MAP{$^O}{cwd} or defined &cwd) {
- # The pwd command is not available in some chroot(2)'ed environments
- my $sep = $Config::Config{path_sep} || ':';
- my $os = $^O; # Protect $^O from tainting
-
-
- # Try again to find a pwd, this time searching the whole PATH.
- if (defined $ENV{PATH} and $os ne 'MSWin32') { # no pwd on Windows
- my @candidates = split($sep, $ENV{PATH});
- while (!$found_pwd_cmd and @candidates) {
- my $candidate = shift @candidates;
- $found_pwd_cmd = 1 if -x "$candidate/pwd";
- }
- }
-
if( $found_pwd_cmd )
{
*cwd = \&_backtick_pwd;
}
else {
- *cwd = \&getcwd;
+ # getcwd() might have an empty prototype
+ *cwd = sub { getcwd(); };
}
}
@@ -275,7 +256,7 @@ sub fastcwd_ {
($odev, $oino) = ($cdev, $cino);
CORE::chdir('..') || return undef;
($cdev, $cino) = stat('.');
- last if $odev == $cdev && $oino == $cino;
+ last if $odev == $cdev && $oino eq $cino;
opendir(DIR, '.') || return undef;
for (;;) {
$direntry = readdir(DIR);
@@ -284,7 +265,7 @@ sub fastcwd_ {
next if $direntry eq '..';
($tdev, $tino) = lstat($direntry);
- last unless $tdev != $odev || $tino != $oino;
+ last unless $tdev != $odev || $tino ne $oino;
}
closedir(DIR);
return undef unless defined $direntry; # should never happen
@@ -298,7 +279,7 @@ sub fastcwd_ {
&& CORE::chdir($1) or return undef;
($cdev, $cino) = stat('.');
die "Unstable directory path, current directory changed unexpectedly"
- if $cdev != $orig_cdev || $cino != $orig_cino;
+ if $cdev != $orig_cdev || $cino ne $orig_cino;
$path;
}
if (not defined &fastcwd) { *fastcwd = \&fastcwd_ }
@@ -315,7 +296,7 @@ sub chdir_init {
if ($ENV{'PWD'} and $^O ne 'os2' and $^O ne 'dos' and $^O ne 'MSWin32') {
my($dd,$di) = stat('.');
my($pd,$pi) = stat($ENV{'PWD'});
- if (!defined $dd or !defined $pd or $di != $pi or $dd != $pd) {
+ if (!defined $dd or !defined $pd or $di ne $pi or $dd != $pd) {
$ENV{'PWD'} = cwd();
}
}
@@ -328,7 +309,7 @@ sub chdir_init {
if ($^O ne 'MSWin32' and $ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|s) {
my($pd,$pi) = stat($2);
my($dd,$di) = stat($1);
- if (defined $pd and defined $dd and $di == $pi and $dd == $pd) {
+ if (defined $pd and defined $dd and $di ne $pi and $dd == $pd) {
$ENV{'PWD'}="$2$3";
}
}
@@ -430,7 +411,7 @@ sub _perl_abs_path
$! = $e;
return undef;
}
- if ($pst[0] == $cst[0] && $pst[1] == $cst[1])
+ if ($pst[0] == $cst[0] && $pst[1] eq $cst[1])
{
$dir = undef;
}
@@ -448,7 +429,7 @@ sub _perl_abs_path
$tst[0] = $pst[0]+1 unless (@tst = lstat("$dotdots/$dir"))
}
while ($dir eq '.' || $dir eq '..' || $tst[0] != $pst[0] ||
- $tst[1] != $pst[1]);
+ $tst[1] ne $pst[1]);
}
$cwd = (defined $dir ? "$dir" : "" ) . "/$cwd" ;
closedir(PARENT);
@@ -820,9 +801,7 @@ C<fast_abs_path()>.
=head1 AUTHOR
-Originally by the perl5-porters.
-
-Maintained by Ken Williams <KWILLIAMS@cpan.org>
+Maintained by perl5-porters <F<perl5-porters@perl.org>>.
=head1 COPYRIGHT
diff --git a/Cwd.xs b/Cwd.xs
index 223e1a6..4fda057 100644
--- a/Cwd.xs
+++ b/Cwd.xs
@@ -15,6 +15,10 @@
# include "ppport.h"
#endif
+#if defined(HAS_READLINK) && !defined(PerlLIO_readlink)
+#define PerlLIO_readlink readlink
+#endif
+
#ifdef I_UNISTD
# include <unistd.h>
#endif
diff --git a/Makefile.PL b/Makefile.PL
index 11e04af..0311708 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -16,7 +16,7 @@ push @extra, 'LICENSE' => 'perl_5'
push @extra, 'META_MERGE' => {
resources => {
repository => 'git://perl5.git.perl.org/perl.git',
- bugtracker => 'https://rt.perl.org/rt3/',
+ bugtracker => 'https://github.com/Perl/perl5/issues',
homepage => "http://dev.perl.org/",
license => [ 'http://dev.perl.org/licenses/' ],
},
diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm
index 30d883b..e0a49ed 100644
--- a/lib/File/Spec.pm
+++ b/lib/File/Spec.pm
@@ -2,7 +2,7 @@ package File::Spec;
use strict;
-our $VERSION = '3.80';
+our $VERSION = '3.84';
$VERSION =~ tr/_//d;
my %module = (
@@ -316,7 +316,7 @@ L<ExtUtils::MakeMaker>
=head1 AUTHOR
-Currently maintained by Ken Williams C<< <KWILLIAMS@cpan.org> >>.
+Maintained by perl5-porters <F<perl5-porters@perl.org>>.
The vast majority of the code was written by
Kenneth Albanowski C<< <kjahds@kjahds.com> >>,
diff --git a/lib/File/Spec/AmigaOS.pm b/lib/File/Spec/AmigaOS.pm
index fd9da81..a29617c 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.80';
+our $VERSION = '3.84';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Cygwin.pm b/lib/File/Spec/Cygwin.pm
index 953c233..e21c0bb 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.80';
+our $VERSION = '3.84';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Epoc.pm b/lib/File/Spec/Epoc.pm
index fcb9e89..2429bb2 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.80';
+our $VERSION = '3.84';
$VERSION =~ tr/_//d;
require File::Spec::Unix;
diff --git a/lib/File/Spec/Functions.pm b/lib/File/Spec/Functions.pm
index e14ad2f..a09150c 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.80';
+our $VERSION = '3.84';
$VERSION =~ tr/_//d;
require Exporter;
diff --git a/lib/File/Spec/Mac.pm b/lib/File/Spec/Mac.pm
index 8026edc..369d1f0 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.80';
+our $VERSION = '3.84';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/OS2.pm b/lib/File/Spec/OS2.pm
index 3c35ba9..604e2e3 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.80';
+our $VERSION = '3.84';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Unix.pm b/lib/File/Spec/Unix.pm
index c06d18f..52904b4 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.80';
+our $VERSION = '3.84';
$VERSION =~ tr/_//d;
=head1 NAME
@@ -530,7 +530,7 @@ Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
-Please submit bug reports and patches to perlbug@perl.org.
+Please submit bug reports at L<https://github.com/Perl/perl5/issues>.
=head1 SEE ALSO
diff --git a/lib/File/Spec/Win32.pm b/lib/File/Spec/Win32.pm
index 1537442..b05b535 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.80';
+our $VERSION = '3.84';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/t/cwd_enoent.t b/t/cwd_enoent.t
index 2e94bad..0fe3834 100644
--- a/t/cwd_enoent.t
+++ b/t/cwd_enoent.t
@@ -31,6 +31,9 @@ foreach my $type (qw(regular perl)) {
skip "getcwd() doesn't fail on non-existent directories on this platform", 4
if $type eq 'regular' && $^O eq 'dragonfly';
+ skip "getcwd() doesn't fail on non-existent directories on this platform", 4
+ if $type eq 'regular' && $^O eq 'haiku';
+
no warnings "redefine";
local *Cwd::abs_path = \&Cwd::_perl_abs_path if $type eq "perl";
local *Cwd::getcwd = \&Cwd::_perl_getcwd if $type eq "perl";
--
2.34.3

@ -0,0 +1,345 @@
From ebaf4e0e48c6e881818d8759470f227d4e15abca Mon Sep 17 00:00:00 2001
From: Jitka Plesnikova <jplesnik@redhat.com>
Date: Thu, 18 May 2023 14:28:48 +0200
Subject: [PATCH] Upgrade to 3.89
---
Changes | 24 +++++
Cwd.pm | 10 +-
Cwd.xs | 18 ++--
META.json | 2 +-
META.yml | 2 +-
Makefile.PL | 5 +-
lib/File/Spec.pm | 6 +-
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 | 2 +-
t/Spec.t | 196 ++++++++++++++++++++++++++++++++++++-
t/cwd_enoent.t | 4 +-
t/tmpdir.t | 2 +-
18 files changed, 254 insertions(+), 31 deletions(-)
diff --git a/Changes b/Changes
index 9533c1f..47e172a 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,29 @@
Revision history for Perl distribution PathTools.
+3.87-3.88
+
+- Fix handling of empty path, VMS fixes.
+
+3.86
+
+- Fix compilation warning on illumos based platforms
+
+3.85
+
+- Fix issue related to tainting empty PATH
+
+3.84
+
+- Add PerlIO_readlink backcompat defines to Cws.xs
+
+3.83
+
+- More bugtracker changes, document maintainer is the Perl-5 Porters
+
+3.82
+
+- Change to build so bugreports go to GitHub
+
3.81
- compare inode numbers as strings (github #18788)
diff --git a/Cwd.pm b/Cwd.pm
index 0683583..dbf08a6 100644
--- a/Cwd.pm
+++ b/Cwd.pm
@@ -3,7 +3,7 @@ use strict;
use Exporter;
-our $VERSION = '3.84';
+our $VERSION = '3.89';
my $xs_version = $VERSION;
$VERSION =~ tr/_//d;
@@ -192,8 +192,14 @@ sub _backtick_pwd {
# Localize %ENV entries in a way that won't create new hash keys.
# Under AmigaOS we don't want to localize as it stops perl from
# finding 'sh' in the PATH.
- my @localize = grep exists $ENV{$_}, qw(PATH IFS CDPATH ENV BASH_ENV) if $^O ne "amigaos";
+ my @localize = grep exists $ENV{$_}, qw(IFS CDPATH ENV BASH_ENV) if $^O ne "amigaos";
local @ENV{@localize} if @localize;
+ # empty PATH is the same as "." on *nix, so localize it to /something/
+ # we won't *use* the path as code above turns $pwd_cmd into a specific
+ # executable, but it will blow up anyway under taint. We could set it to
+ # anything absolute. Perhaps "/" would be better.
+ local $ENV{PATH}= "/usr/bin"
+ if $^O ne "amigaos";
my $cwd = `$pwd_cmd`;
# Belt-and-suspenders in case someone said "undef $/".
diff --git a/Cwd.xs b/Cwd.xs
index 4fda057..ca8639d 100644
--- a/Cwd.xs
+++ b/Cwd.xs
@@ -7,13 +7,11 @@
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
-#ifndef NO_PPPORT_H
-# define NEED_croak_xs_usage
-# define NEED_sv_2pv_flags
-# define NEED_my_strlcpy
-# define NEED_my_strlcat
-# include "ppport.h"
-#endif
+#define NEED_croak_xs_usage
+#define NEED_sv_2pv_flags
+#define NEED_my_strlcpy
+#define NEED_my_strlcat
+#include "ppport.h"
#if defined(HAS_READLINK) && !defined(PerlLIO_readlink)
#define PerlLIO_readlink readlink
@@ -24,8 +22,10 @@
#endif
/* For special handling of os390 sysplexed systems */
+#ifdef OS390
#define SYSNAME "$SYSNAME"
#define SYSNAME_LEN (sizeof(SYSNAME) - 1)
+#endif
/* The realpath() implementation from OpenBSD 3.9 to 4.2 (realpath.c 1.13)
* Renamed here to bsd_realpath() to avoid library conflicts.
@@ -202,7 +202,7 @@ bsd_realpath(const char *path, char resolved[MAXPATHLEN])
if (slen < 0)
return (NULL);
symlink[slen] = '\0';
-# ifdef EBCDIC /* XXX Probably this should be only os390 */
+# ifdef OS390
/* Replace all instances of $SYSNAME/foo simply by /foo */
if (slen > SYSNAME_LEN + strlen(next_token)
&& strnEQ(symlink, SYSNAME, SYSNAME_LEN)
@@ -245,7 +245,7 @@ bsd_realpath(const char *path, char resolved[MAXPATHLEN])
}
remaining_len = my_strlcpy(remaining, symlink, sizeof(remaining));
}
-# ifdef EBCDIC
+# ifdef OS390
not_symlink: ;
# endif
}
diff --git a/META.json b/META.json
index ad429a5..d810ba7 100644
--- a/META.json
+++ b/META.json
@@ -50,6 +50,6 @@
"url" : "git://perl5.git.perl.org/perl.git"
}
},
- "version" : "3.73",
+ "version" : "3.86",
"x_serialization_backend" : "JSON::PP version 2.27400_02"
}
diff --git a/META.yml b/META.yml
index c2adfcf..f5e9fe3 100644
--- a/META.yml
+++ b/META.yml
@@ -26,5 +26,5 @@ resources:
bugtracker: https://rt.perl.org/rt3/
homepage: http://dev.perl.org/
repository: git://perl5.git.perl.org/perl.git
-version: '3.73'
+version: '3.86'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff --git a/Makefile.PL b/Makefile.PL
index 0311708..754acbe 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -29,10 +29,7 @@ WriteMakefile
'VERSION_FROM' => 'Cwd.pm',
'ABSTRACT' => 'Tools for working with directory and file names',
'AUTHOR' => 'Perl 5 Porters',
- 'DEFINE' => join(" ",
- "-DDOUBLE_SLASHES_SPECIAL=@{[$^O eq q(qnx) || $^O eq q(nto) ? 1 : 0]}",
- ((grep { $_ eq 'PERL_CORE=1' } @ARGV) ? '-DNO_PPPORT_H' : ()),
- ),
+ 'DEFINE' => "-DDOUBLE_SLASHES_SPECIAL=@{[$^O eq q(qnx) || $^O eq q(nto) ? 1 : 0]}",
'PREREQ_PM' => {
'Carp' => '0',
'File::Basename' => '0',
diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm
index e0a49ed..fc10c0f 100644
--- a/lib/File/Spec.pm
+++ b/lib/File/Spec.pm
@@ -2,7 +2,7 @@ package File::Spec;
use strict;
-our $VERSION = '3.84';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
my %module = (
@@ -33,13 +33,13 @@ File::Spec - portably perform operations on file names
use File::Spec;
- $x=File::Spec->catfile('a', 'b', 'c');
+ my $x = File::Spec->catfile('a', 'b', 'c');
which returns 'a/b/c' under Unix. Or:
use File::Spec::Functions;
- $x = catfile('a', 'b', 'c');
+ my $x = catfile('a', 'b', 'c');
=head1 DESCRIPTION
diff --git a/lib/File/Spec/AmigaOS.pm b/lib/File/Spec/AmigaOS.pm
index a29617c..3fc3c98 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.84';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Cygwin.pm b/lib/File/Spec/Cygwin.pm
index e21c0bb..fb3eaaa 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.84';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Epoc.pm b/lib/File/Spec/Epoc.pm
index 2429bb2..9391f3a 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.84';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
require File::Spec::Unix;
diff --git a/lib/File/Spec/Functions.pm b/lib/File/Spec/Functions.pm
index a09150c..a0d8641 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.84';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
require Exporter;
diff --git a/lib/File/Spec/Mac.pm b/lib/File/Spec/Mac.pm
index 369d1f0..5f5cca9 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.84';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/OS2.pm b/lib/File/Spec/OS2.pm
index 604e2e3..eea5328 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.84';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Unix.pm b/lib/File/Spec/Unix.pm
index 52904b4..2d5af10 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.84';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
=head1 NAME
diff --git a/lib/File/Spec/Win32.pm b/lib/File/Spec/Win32.pm
index b05b535..292c2f8 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.84';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/t/cwd_enoent.t b/t/cwd_enoent.t
index 0fe3834..05b30b3 100644
--- a/t/cwd_enoent.t
+++ b/t/cwd_enoent.t
@@ -28,8 +28,10 @@ foreach my $type (qw(regular perl)) {
# https://github.com/Perl/perl5/issues/16525
# https://bugs.dragonflybsd.org/issues/3250
+ my @vlist = ($Config{osvers} =~ /(\d+)/g);
+ my $osver = sprintf("%d%03d", map { defined() ? $_ : '0' } @vlist[0,1]);
skip "getcwd() doesn't fail on non-existent directories on this platform", 4
- if $type eq 'regular' && $^O eq 'dragonfly';
+ if $type eq 'regular' && $^O eq 'dragonfly' && $osver < 6002;
skip "getcwd() doesn't fail on non-existent directories on this platform", 4
if $type eq 'regular' && $^O eq 'haiku';
diff --git a/t/tmpdir.t b/t/tmpdir.t
index 0f03dc5..aeff4fc 100644
--- a/t/tmpdir.t
+++ b/t/tmpdir.t
@@ -43,7 +43,7 @@ for ('File::Spec', "File::Spec::Win32") {
-d $ENV{TMPDIR} && -w _
or skip "Can't create usable TMPDIR env var", 1;
my $tmpdir2 = $_->tmpdir;
- isn't $tmpdir2, $tmpdir1, "$_->tmpdir works with changing env";
+ isnt $tmpdir2, $tmpdir1, "$_->tmpdir works with changing env";
}
}
--
2.40.1

@ -0,0 +1,193 @@
From 0c5f0ea37e3c4d50f47c531bb32e184fa9c38980 Mon Sep 17 00:00:00 2001
From: Jitka Plesnikova <jplesnik@redhat.com>
Date: Thu, 9 May 2024 15:42:26 +0200
Subject: [PATCH] Upgrade to 3.91
---
Cwd.pm | 2 +-
Cwd.xs | 4 -
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 | 4 +-
lib/File/Spec/Mac.pm | 2 +-
lib/File/Spec/OS2.pm | 2 +-
lib/File/Spec/Unix.pm | 2 +-
lib/File/Spec/Win32.pm | 4 +-
t/Spec.t | 196 ++++++++++++++++++++++++++++++++++++-
12 files changed, 207 insertions(+), 17 deletions(-)
diff --git a/Cwd.pm b/Cwd.pm
index dbf08a6..90013c9 100644
--- a/Cwd.pm
+++ b/Cwd.pm
@@ -3,7 +3,7 @@ use strict;
use Exporter;
-our $VERSION = '3.89';
+our $VERSION = '3.90';
my $xs_version = $VERSION;
$VERSION =~ tr/_//d;
diff --git a/Cwd.xs b/Cwd.xs
index ca8639d..bca575c 100644
--- a/Cwd.xs
+++ b/Cwd.xs
@@ -292,7 +292,6 @@ return FALSE
#define getcwd_sv(a) Perl_getcwd_sv(aTHX_ a)
int Perl_getcwd_sv(pTHX_ SV *sv)
{
-#ifndef PERL_MICRO
SvTAINTED_on(sv);
@@ -430,9 +429,6 @@ int Perl_getcwd_sv(pTHX_ SV *sv)
}
#endif
-#else
- return FALSE;
-#endif
}
#endif
diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm
index fc10c0f..b2349be 100644
--- a/lib/File/Spec.pm
+++ b/lib/File/Spec.pm
@@ -2,7 +2,7 @@ package File::Spec;
use strict;
-our $VERSION = '3.88';
+our $VERSION = '3.90';
$VERSION =~ tr/_//d;
my %module = (
diff --git a/lib/File/Spec/AmigaOS.pm b/lib/File/Spec/AmigaOS.pm
index 3fc3c98..c500d23 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.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Cygwin.pm b/lib/File/Spec/Cygwin.pm
index fb3eaaa..ef1c9ec 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.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Epoc.pm b/lib/File/Spec/Epoc.pm
index 9391f3a..1bc81f6 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.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
require File::Spec::Unix;
diff --git a/lib/File/Spec/Functions.pm b/lib/File/Spec/Functions.pm
index a0d8641..6068506 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.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
require Exporter;
@@ -72,7 +72,7 @@ File::Spec::Functions - portably perform operations on file names
=head1 SYNOPSIS
use File::Spec::Functions;
- $x = catfile('a','b');
+ my $x = catfile('a', 'b');
=head1 DESCRIPTION
diff --git a/lib/File/Spec/Mac.pm b/lib/File/Spec/Mac.pm
index 5f5cca9..08d7fdb 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.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/OS2.pm b/lib/File/Spec/OS2.pm
index eea5328..d8533c0 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.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Unix.pm b/lib/File/Spec/Unix.pm
index 2d5af10..dbe36fb 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.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
=head1 NAME
diff --git a/lib/File/Spec/Win32.pm b/lib/File/Spec/Win32.pm
index 292c2f8..f9225e6 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.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
@@ -249,7 +249,7 @@ Unlike just splitting the directories on the separator, leading empty and
trailing directory entries can be returned, because these are significant
on some OSs. So,
- File::Spec->splitdir( "/a/b/c" );
+ File::Spec->splitdir( "/a/b//c/" );
Yields:
--
2.45.0

@ -1,76 +0,0 @@
From c8c367581c3333c38d07481e2ea8d81171403c81 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
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ř <ppisar@redhat.com>
---
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

@ -1,20 +1,26 @@
%global base_version 3.75
Name: perl-PathTools
Version: 3.78
Release: 461%{?dist}
Version: 3.91
Release: 511%{?dist}
Summary: PathTools Perl module (Cwd, File::Spec)
# Cwd.xs: BSD
# other files: GPL+ or Artistic
License: (GPL+ or Artistic) and BSD
# Cwd.xs: BSD-3-Clause
# other files: GPL-1.0-or-later OR Artistic-1.0-Perl
License: ( GPL-1.0-or-later OR Artistic-1.0-Perl ) AND BSD-3-Clause
URL: https://metacpan.org/release/PathTools
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
# Fix an off-by-one in bsd_realpath(), in perl after 5.33.3
Patch2: perl-5.33.3-PathTools-Cwd.xs-fix-off-by-one-in-bsd_realpath.patch
# Unbundled from perl 5.34.0
Patch2: PathTools-3.78-Upgrade-to-3.80.patch
# Unbundled from perl 5.35.11
Patch3: PathTools-3.80-Upgrade-to-3.84.patch
# Unbundled from perl 5.37.11
Patch4: PathTools-3.84-Upgrade-to-3.89.patch
# Unbundled from perl 5.40.0-RC1
Patch5: PathTools-3.89-Upgrade-to-3.91.patch
BuildRequires: coreutils
BuildRequires: findutils
BuildRequires: gcc
@ -41,7 +47,6 @@ BuildRequires: perl(File::Temp)
BuildRequires: perl(lib)
BuildRequires: perl(Test::More) >= 0.88
BuildRequires: perl(warnings)
Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
Requires: perl(Carp)
Requires: perl(Errno)
Requires: perl(Scalar::Util)
@ -54,24 +59,52 @@ Recommends: perl(XSLoader)
%description
This is the combined distribution for the File::Spec and Cwd modules.
%package tests
Summary: Tests for %{name}
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
Requires: perl-Test-Harness
%description tests
Tests from %{name}. Execute them
with "%{_libexecdir}/%{name}/test".
%prep
%setup -q -n PathTools-%{base_version}
%patch0 -p1
%patch1 -p1
%patch2 -p3
%autosetup -p1 -n PathTools-%{base_version}
# Do not distribute File::Spec::VMS as it works on VMS only (bug #973713)
rm lib/File/Spec/VMS.pm
perl -i -ne 'print $_ unless m{^\Qlib/File/Spec/VMS.pm\E}' MANIFEST
#perl -i -ne 'print $_ unless m{^\Qlib/File/Spec/VMS.pm\E}' MANIFEST
# Help generators to recognize Perl scripts
for F in t/*.t; do
perl -i -MConfig -ple 'print $Config{startperl} if $. == 1 && !s{\A#!.*perl\b}{$Config{startperl}}' "$F"
chmod +x "$F"
done
%build
perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1 OPTIMIZE="$RPM_OPT_FLAGS"
perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1 OPTIMIZE="%{optflags}"
%{make_build}
%install
%{make_install}
find $RPM_BUILD_ROOT -type f -name '*.bs' -size 0 -delete
%{_fixperms} $RPM_BUILD_ROOT/*
find %{buildroot} -type f -name '*.bs' -size 0 -delete
%{_fixperms} %{buildroot}/*
# Install tests
mkdir -p %{buildroot}%{_libexecdir}/%{name}
cp -a t %{buildroot}%{_libexecdir}/%{name}
perl -i -pe "s#qr{blib}#qr{%{perl_vendorarch}}#" %{buildroot}%{_libexecdir}/%{name}/t/cwd.t
cat > %{buildroot}%{_libexecdir}/%{name}/test << 'EOF'
#!/bin/bash
set -e
DIR=$(mktemp -d)
pushd "$DIR"
cp -a %{_libexecdir}/%{name}/* ./
prove -I . -j "$(getconf _NPROCESSORS_ONLN)"
popd
rm -rf "$DIR"
EOF
chmod +x %{buildroot}%{_libexecdir}/%{name}/test
%check
make test
@ -81,15 +114,65 @@ make test
%{perl_vendorarch}/auto/*
%{perl_vendorarch}/Cwd.pm
%{perl_vendorarch}/File/
%{_mandir}/man3/*
%{_mandir}/man3/Cwd*
%{_mandir}/man3/File::Spec*
%files tests
%{_libexecdir}/%{name}
%changelog
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 3.78-461
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 3.91-511
- Bump release for October 2024 mass rebuild:
Resolves: RHEL-64018
* Fri Oct 25 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 3.91-510
- Rebuilt for MSVSphere 10
* Thu Jul 18 2024 Jitka Plesnikova <jplesnik@redhat.com> - 3.91-510
- Increase release to favour standalone package
* Thu Jul 18 2024 Jitka Plesnikova <jplesnik@redhat.com> - 3.91-503
- Upgrade to 3.91 as provided in 5.40.0-RC1
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 3.89-503
- Bump release for June 2024 mass rebuild
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.89-502
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.89-501
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.89-500
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Tue Jul 11 2023 Jitka Plesnikova <jplesnik@redhat.com> - 3.89-499
- Increase release to favour standalone package
* Thu May 18 2023 Jitka Plesnikova <jplesnik@redhat.com> - 3.89-1
- Upgrade to 3.89 as provided in perl-5.37.11
- Package tests
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.84-490
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.84-489
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Mon May 30 2022 Jitka Plesnikova <jplesnik@redhat.com> - 3.84-488
- Increase release to favour standalone package
* Thu May 12 2022 Jitka Plesnikova <jplesnik@redhat.com> - 3.84-1
- Upgrade to 3.84 as provided in perl-5.35.11
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.80-479
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.80-478
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 3.78-460
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Thu May 06 2021 Jitka Plesnikova <jplesnik@redhat.com> - 3.80-477
- Upgrade to 3.80 as provided in perl-5.34.0
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.78-459
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

Loading…
Cancel
Save