[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: parallel-tests: avoid command-line length limit issue.
From: |
Stefano Lattarini |
Subject: |
Re: parallel-tests: avoid command-line length limit issue. |
Date: |
Fri, 24 Sep 2010 15:55:44 +0200 |
User-agent: |
KMail/1.13.3 (Linux/2.6.30-2-686; KDE/4.4.4; i686; ; ) |
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