For SDBM_File, stop EU::MM from generating its default subdirs rule.
authorNicholas Clark <nick@ccl4.org>
Thu, 22 Aug 2013 09:48:29 +0000 (11:48 +0200)
committerNicholas Clark <nick@ccl4.org>
Sat, 24 Aug 2013 15:50:27 +0000 (17:50 +0200)
The default subdirs rule creates a race condition with the rule that
Makefile.PL explicitly adds to generate libsdbm.a, which can cause parallel
makes to fail.

ext/SDBM_File/Makefile.PL
pod/perldelta.pod

index fa16a79..b96b80b 100644 (file)
@@ -23,6 +23,12 @@ WriteMakefile(
              PERL_MALLOC_OK => 1,
              );
 
+# We don't want the default subdir rule, as it creates a race condition with the
+# rule we add below.
+sub MY::subdir_x {
+    return '';
+}
+
 sub MY::postamble {
   if ($^O =~ /MSWin32/ && !defined($ENV{SYSTEMROOT})) {
        if ($Config{'make'} =~ /dmake/i) {
index 0d7de00..b9192c0 100644 (file)
@@ -276,7 +276,16 @@ L</Platform Support> section, instead.
 
 =item *
 
-XXX
+The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>,
+which avoids a race condition during parallel makes, which could cause the
+build to fail. This is the last known parallel make problem (on *nix
+platforms), and therefore we believe that a parallel make should now always
+be error free.
+
+=for comment
+
+Strictly only for a build where build files such as F<Makefile.SH> have not
+been updated by C<git> in an already configured and built tree.
 
 =back