dont run extension building make twice on a fresh src tree
authorDaniel Dragan <bulk88@hotmail.com>
Mon, 10 Nov 2014 03:57:08 +0000 (22:57 -0500)
committerTony Cook <tony@develop-help.com>
Mon, 10 Nov 2014 23:32:39 +0000 (10:32 +1100)
On a fresh source tree, "[*]make config" then "[*]make all" are executed.
The "make config" is redundant in this case, and launching make process
twice, plus make's I/O calls is inefficient. On a dirty source tree, this
would break since the makefile will regenerate. If "make all" fails the
first time (presumably because because the makefile was regened, other
failures just run/print twice), run the "make all" more time. Dirty trees
still run make twice, clean trees drop from running make twice to just
once.

make_ext.pl

index dbef0d5..e900874 100644 (file)
@@ -554,16 +554,13 @@ EOS
                         );
     }
 
-    if (!$target or $target !~ /clean$/) {
-       # Give makefile an opportunity to rewrite itself.
-       # reassure users that life goes on...
-       my @args = ('config', @$pass_through);
-       system(@make, @args) and print "@make @args failed, continuing anyway...\n";
-    }
     my @targ = ($target, @$pass_through);
     print "Making $target in $ext_dir\n@make @targ\n" if $verbose;
     local $ENV{PERL_INSTALL_QUIET} = 1;
     my $code = system(@make, @targ);
+    if($code >> 8 != 0){ # probably cleaned itself, try again once more time
+        $code = system(@make, @targ);
+    }
     die "Unsuccessful make($ext_dir): code=$code" if $code != 0;
 
     chdir $return_dir || die "Cannot cd to $return_dir: $!";