This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
installperl now uses get_pod_metadata() to install dual-life pods correctly.
authorNicholas Clark <nick@ccl4.org>
Tue, 27 Dec 2011 18:44:27 +0000 (19:44 +0100)
committerNicholas Clark <nick@ccl4.org>
Mon, 2 Jan 2012 11:18:54 +0000 (12:18 +0100)
This ensures that perlfaq*, perlglossary, perlxs, perlxstut and perldoc's
Pod files are installed in the same directory as perl.pod, perlintro.pod etc,
as they were in 5.14.0 and earlier releases. This commit is analogous to
commit d6a39ee219352c8f, which corrected the install location for man pages.

installperl

index 73767bd..10a3781 100755 (executable)
@@ -29,6 +29,8 @@ use File::Path ();
 use ExtUtils::Packlist;
 use Cwd;
 
+require './Porting/pod_lib.pl';
+
 if ($Is_NetWare) {
     $Is_W32 = 0;
     $scr_ext = '.pl';
@@ -126,8 +128,6 @@ close SCRIPTS;
 
 if ($scr_ext) { @scripts = map { "$_$scr_ext" } @scripts; }
 
-my @pods = $nopods ? () : (<pod/*.pod>, 'x2p/a2p.pod');
-
 # Specify here any .pm files that are actually architecture-dependent.
 # (Those included with XS extensions under ext/ are automatically
 # added later.)
@@ -550,12 +550,11 @@ if ($versiononly) {
 
 # Install pod pages.  Where? I guess in $installprivlib/pod
 # ($installprivlib/pods for cygwin).
-
-my $pod = ($Is_Cygwin || $Is_Darwin || $Is_VMS || $Is_W32) ? 'pods' : 'pod';
-if ( !$versiononly || ($installprivlib =~ m/\Q$vershort/)) {
+if (!$nopods && (!$versiononly || ($installprivlib =~ m/\Q$vershort/))) {
+    my $pod = ($Is_Cygwin || $Is_Darwin || $Is_VMS || $Is_W32) ? 'pods' : 'pod';
     mkpath("${installprivlib}/$pod", $opts{verbose}, 0777);
 
-    for (@pods) {
+    for (map {$_->[1]} @{get_pod_metadata()->{master}}) {
        # $_ is a name like  pod/perl.pod
        (my $base = $_) =~ s#.*/##;
        copy_if_diff($_, "${installprivlib}/$pod/${base}");
@@ -756,6 +755,9 @@ sub installlib {
 
     $name = "$dir/$name" if $dir ne '';
 
+    # ignore pods that are stand alone documentation from dual life modules.
+    return if /\.pod\z/ && is_duplicate_pod($_);
+
     return if $name eq 'ExtUtils/XSSymSet.pm' and !$Is_VMS;
 
     my $installlib = $installprivlib;