This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
installperl wasn't putting extensions with two or more
[perl5.git] / installperl
index 920f036..656943c 100755 (executable)
@@ -86,12 +86,28 @@ if ((-e "testcompile") && (defined($ENV{'COMPILE'})))
 }
 
 find(sub {
-       if ("$File::Find::dir/$_" =~ m{^ext/[^/]+/(.*)\.pm$}) {
-           (my $pm = $1) =~ s{^lib/}{};
-           $archpms{$pm} = 1;
+       if ("$File::Find::dir/$_" =~ m{^ext\b(.*)/([^/]+)\.pm$}) {
+           my($path, $modname) = ($1,$2);
+
+           # strip trailing component first
+           $path =~ s{/[^/]*$}{};
+
+           # strip optional "/lib";
+           $path =~ s{/lib\b}{};
+
+           # strip any leading /
+           $path =~ s{^/}{};
+
+           # reconstitute canonical module name
+           $modname = "$path/$modname" if length $path;
+
+           # remember it
+           $archpms{$modname} = 1;
        }
     }, 'ext');
 
+# print "[$_]\n" for sort keys %archpms;
+
 my $ver = $Config{version};
 my $release = substr($],0,3);   # Not used presently.
 my $patchlevel = substr($],3,2);
@@ -240,7 +256,7 @@ my @corefiles;
 if ($Is_VMS) {  # We did core file selection during build
     my $coredir = "lib/$Config{'arch'}/$ver";
     $coredir =~ tr/./_/;
-    @corefiles = <$coredir/*.*>;
+    @corefiles = map { s|^$coredir/||i; } <$coredir/*.*>;
 }
 else {
     # [als] hard-coded 'libperl' name... not good!
@@ -631,7 +647,7 @@ sub installlib {
 sub copy_if_diff {
     my($from,$to)=@_;
     return 1 if (($^O eq 'VMS') && (-d $from));
-    -f $from || die "$0: $from not found";
+    -f $from || warn "$0: $from not found";
     $packlist->{$to} = { type => 'file' };
     if (compare($from, $to) || $nonono) {
        safe_unlink($to);   # In case we don't have write permissions.