# 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.
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') {
+ 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) {
if (-f $makefile) {
$makefile_no_minus_f = 0;
- open my $mfh, $makefile or die "Cannot open $makefile: $!";
+ open my $mfh, '<', $makefile or die "Cannot open $makefile: $!";
while (<$mfh>) {
# Plagiarised from CPAN::Distribution
last if /MakeMaker post_initialize section/;
last unless defined $oldv;
require ExtUtils::MM_Unix;
defined (my $newv = parse_version MM $vmod) or last;
- if ($newv ne $oldv) {
+ if (version->parse($newv) ne $oldv) {
close $mfh or die "close $makefile: $!";
_unlink($makefile);
{