If miniperl fails the simple Exporter test, print a message and bail out.
authorNicholas Clark <nick@ccl4.org>
Tue, 18 Jun 2013 14:24:20 +0000 (16:24 +0200)
committerNicholas Clark <nick@ccl4.org>
Wed, 19 Jun 2013 06:55:05 +0000 (08:55 +0200)
Previously the Makefile rule for miniperl would attempt to automatically run
minitest if the simple Exporter test failed. It did this by recursively
calling make in the same directory, which is not a totally safe thing to do
even at the best of times.

However commit cb251201d6951395, necessary to simplify other parts of the
toolchain bootstrapping, has made it easy to trigger an infinite loop of
Makefile recursion if miniperl is unable to run the simple Exporter test.

So, for now, defuse the trap by avoiding the recursive make call. A better
long term solution will be to set up and run minitest by something other than
a Makefile target, such as a shell script. As it's not immediately obvious how
to best integrate this with ./runtests, commit this simpler fix for now.

Makefile.SH

index 1364ba3..21c4707 100755 (executable)
@@ -865,7 +865,7 @@ $(MINIPERL_EXE): lib/buildcustomize.pl
                $spitshell >>$Makefile <<'!NO!SUBS!'
 lib/buildcustomize.pl: $& $(mini_obj)
        $(CC) -o $(MINIPERL_EXE) $(CLDFLAGS) $(mini_obj) $(libs)
-       $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+       $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
        $(MINIPERL) -f write_buildcustomize.pl
 !NO!SUBS!
                ;;
@@ -873,7 +873,7 @@ lib/buildcustomize.pl: $& $(mini_obj)
                $spitshell >>$Makefile <<'!NO!SUBS!'
 lib/buildcustomize.pl: $& $(mini_obj) write    ldcustomize.pl
        $(CC) -o $(MINIPERL_EXE) $(mini_obj    libs)
-       $(LDLIBPTH) $(RUN) ./miniperl$(HOST    _EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+       $(LDLIBPTH) $(RUN) ./miniperl$(HOST    _EXT) -w -Ilib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
        $(MINIPERL) -f write_buildcustomize.pl    
 !NO!SUBS!
                ;;
@@ -895,7 +895,7 @@ lib/buildcustomize.pl: $& $(mini_obj) write_buildcustomize.pl
        -@rm -f miniperl.xok
        $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o $(MINIPERL_EXE) \
            $(mini_obj) $(libs)
-       $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+       $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
        $(MINIPERL) -f write_buildcustomize.pl
 !NO!SUBS!
                ;;
@@ -905,7 +905,7 @@ lib/buildcustomize.pl: $& $(mini_obj) write_buildcustomize.pl
        -@rm -f miniperl.xok
        $(LDLIBPTH) $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
            $(mini_obj) $(libs)
-       $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+       $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
        $(MINIPERL) -f write_buildcustomize.pl
 !NO!SUBS!
                ;;