In perl.git, the branch blead has been updated

<https://perl5.git.perl.org/perl.git/commitdiff/926760a67ed43045b7686a4475d0362da2bbcd8b?hp=1d31efef7dd4388fd606972e67bda3318e8838fe>

- Log -----------------------------------------------------------------
commit 926760a67ed43045b7686a4475d0362da2bbcd8b
Author: Karl Williamson <[email protected]>
Date:   Mon May 27 12:07:25 2019 -0600

    Make sure 'if' compiled before Pod::Simple
    
    3.36 of Pod::Simple requires 'if', and this makes sure it works.

commit b83fde9727ea95eba21d0aae5013700aef5909e6
Author: Karl Williamson <[email protected]>
Date:   Mon May 27 12:04:58 2019 -0600

    make_ext.pl: Add some general comments
    
    I found myself recently not knowing how to deal with the build system.
    Having these would have helped.

commit 2fecb8b26fdcfb76a86d6db016179c94c1006a0e
Author: Karl Williamson <[email protected]>
Date:   Mon May 27 11:51:23 2019 -0600

    Better document build dependency ordering

commit 80acf91d9c504eaa12c9836e2ac3768613c88ac2
Author: Karl Williamson <[email protected]>
Date:   Mon May 27 11:49:23 2019 -0600

    perlsource: Better document Configure

-----------------------------------------------------------------------

Summary of changes:
 Makefile.SH        |  4 +++-
 make_ext.pl        | 27 ++++++++++++++++++++++-----
 pod/perlsource.pod | 14 +++++++++-----
 3 files changed, 34 insertions(+), 11 deletions(-)

diff --git a/Makefile.SH b/Makefile.SH
index dd5b25d0bb..0d925bc2b9 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -192,10 +192,12 @@ for f in $dynamic_ext; do
    esac
 done
 
-: Prepare dependency lists for Makefile.
+: Prepare dependency lists for Makefile.  Non-Unix systems likely will also
+: require changes in make_ext.pl
 dynamic_list=' '
 dynamic_ext_re="lib/auto/re/re.$dlext"
 extra_dep='
+cpan/Pod-Simple/pm_to_blib: dist/if/pm_to_blib
 ext/Pod-Functions/pm_to_blib: cpan/Pod-Simple/pm_to_blib 
cpan/Pod-Escapes/pm_to_blib pod/perlfunc.pod
 cpan/IO-Compress/pm_to_blib: dist/lib/pm_to_blib
 '
diff --git a/make_ext.pl b/make_ext.pl
index 9bc4718d52..0280a027cf 100644
--- a/make_ext.pl
+++ b/make_ext.pl
@@ -48,6 +48,20 @@ my $ext_dirs_re = '(?:' . join('|', @ext_dirs) . ')';
 # by an '!ext' and are appropriate to the type of building being done.
 # An extensions follows the format of Foo/Bar, which would be extension 
Foo::Bar
 
+# To fix dependency ordering, on *nix systems, edit Makefile.SH to create a
+# rule.  That isn't sufficient for other systems; you also have to do
+# something in this file.  See the code at
+#       '# XXX hack for dependency # ordering'
+# below.
+#
+# The basic logic is:
+#   1) if there's a Makefile.PL in git for the module, use it. and call make
+#   2) If not, auto-generate one (normally)
+#   3) unless the auto-generation code figures out that the extension is
+#      *really* simple, in which case don't.  This will be for pure perl
+#      modules, and all that is needed to be done is to copy from the source
+#      to the dest directories.
+#
 # It may be deleted in a later release of perl so try to
 # avoid using it for other purposes.
 
@@ -201,20 +215,23 @@ elsif (IS_VMS) {
     push @extspec, 'DynaLoader' if $dynaloader;
 }
 
-{
+{ # XXX hack for dependency ordering
     # Cwd needs to be built before Encode recurses into subdirectories.
-    # Pod::Simple needs to be built before Pod::Functions
+    # Pod::Simple needs to be built before Pod::Functions, but after 'if'
     # lib needs to be built before IO-Compress
     # This seems to be the simplest way to ensure this ordering:
-    my (@first, @other);
+    my (@first, @second, @other);
     foreach (@extspec) {
-       if ($_ eq 'Cwd' || $_ eq 'Pod/Simple' || $_ eq 'lib') {
+       if ($_ eq 'Cwd' || $_ eq 'if' || $_ eq 'lib') {
            push @first, $_;
+        }
+       elsif ($_ eq 'Pod/Simple') {
+           push @second, $_;
        } else {
            push @other, $_;
        }
     }
-    @extspec = (@first, @other);
+    @extspec = (@first, @second, @other);
 }
 
 if ($Config{osname} eq 'catamount' and @extspec) {
diff --git a/pod/perlsource.pod b/pod/perlsource.pod
index 502ba42d15..e9e534b6ad 100644
--- a/pod/perlsource.pod
+++ b/pod/perlsource.pod
@@ -197,17 +197,21 @@ patched.
 
 =head2 Build system
 
-The Perl build system starts with the F<Configure> script in the root
-directory.
+The Perl build system on *nix-like systems starts with the F<Configure>
+script in the root directory.
 
 Platform-specific pieces of the build system also live in
 platform-specific directories like F<win32/>, F<vms/>, etc.
+Windows and VMS have their own Configure-like scripts, in their
+respective directories.
 
-The F<Configure> script is ultimately responsible for generating a
-F<Makefile>.
+The F<Configure> script (or a platform-specific similar script) is
+ultimately responsible for generating a F<Makefile> from F<Makefile.SH>.
 
 The build system that Perl uses is called metaconfig. This system is
-maintained separately from the Perl core.
+maintained separately from the Perl core, and knows about the
+platform-specific Configure-like scripts, as well as F<Configure>
+itself.
 
 The metaconfig system has its own git repository. Please see its README
 file in L<http://perl5.git.perl.org/metaconfig.git/> for more details.

-- 
Perl5 Master Repository

Reply via email to