Hi Ralf. On Friday 17 September 2010, Stefano Lattarini wrote: > On Tuesday 07 September 2010, Ralf Wildenhues wrote: > > * Stefano Lattarini wrote on Tue, Sep 07, 2010 at 11:23:11AM CEST: > > > > diff --git a/lib/am/check.am b/lib/am/check.am > > > > index c612b22..b79201f 100644 > > > > --- a/lib/am/check.am > > > > +++ b/lib/am/check.am > > > > > > > > @@ -236,10 +236,10 @@ check-TESTS: > > > > ## we rely on .PHONY to work portably. > > > > > > > > @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) > > > > @list='$(TEST_LOGS)'; \ > > > > - list=`for f in $$list; do \ > > > > - test .log = $$f || echo $$f; \ > > > > - done | tr '\012\015' ' '`; \ > > > > - $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$list" > > > > + { echo "TEST_LOGS = \\"; \ > > > > + for f in $$list; do test .log = $$f || echo "$$f \\"; done; \ > > > > + } | sed '$$s/\\$$//' \ > > > > + | $(MAKE) -f %MAKEFILE% -f - $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) > > > > > > This new code is by no means obvious to me (well, it is now > > > that you have explained and motivated it ;-). What about > > > adding a proper comment to it? Do you want me to (try to) do > > > that, or will you take care of it yourself? > > > > First off, while the patch fixes the new problem, it also > > re-exposes the GNU make 3.80 bug > > It also creates new breakage with Heirloom make and Solaris dmake, > when multiple jobs are used *and* SHELL is Solaris /bin/sh; > attached is a minimal tescase (tarball created with make dist) and > the error message it produced. I've verified that no breakage occurs if a temporary file is used instead of a pipe. Do you want me to try to write a patch?
BTW, I think that the easier way to work around the bug in GNU make 3.80 would be to add a dummy ".log:" target when generating the on-the-fly makefile fragment, as in e.g.: @list='$(TEST_LOGS)'; \ - list=`for f in $$list; do \ - test .log = $$f || echo $$f; \ - done | tr '\012\015' ' '`; \ - $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$list" + { echo "TEST_LOGS = \\"; \ + for f in $$list; do test .log = $$f || echo "$$f \\"; done; \ + } | sed '$$s/\\$$//' | { cat; echo .log:; } \ + | $(MAKE) -f %MAKEFILE% -f - $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) WDYT? Regards, Stefano