automake-patches
[Top][All Lists]
Advanced

[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, 17 Sep 2010 21:48:24 +0200
User-agent: KMail/1.13.3 (Linux/2.6.30-2-686; KDE/4.4.4; i686; ; )

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.  More details tomorrow, if you ask for them
(sorry, I'm in a bit of a hurry now).

Regards,
  Stefano

Attachment: foo-1.0.tar.gz
Description: application/compressed-tar

$ CONFIG_SHELL=/bin/sh /bin/sh ./configure CONFIG_SHELL=/bin/sh && dmake -j 2 
check checking for a BSD-compatible install... /usr/local/bin/ginstall -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /opt/sfw/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
configure: creating ./config.status
config.status: creating Makefile
dmake: defaulting to parallel mode.
See the man page dmake(1) for more information on setting up the .dmakerc file.
dmake  check-TESTS
freddy --> 1 job
freddy --> 2 jobs
dmake: Fatal error: Internal error: returned child pid not in running_list
Current working directory /scratch/latta/tmp/foo-1.0
Waiting for 2 jobs to finish
freddy --> Job output
PASS: a.test
freddy --> Job output
PASS: b.test
*** Error code 1
The following command caused the error:
list='a.log b.log c.log';                                               \
{ echo "TEST_LOGS = \\";                                        \
  for f in $list; do test .log = $f || echo "$f \\"; done;      \
} | sed '$s/\\$//'                                              \
  | dmake -f Makefile -f -  test-suite.log
dmake: Fatal error: Command failed for target `check-TESTS'
Current working directory /scratch/latta/tmp/foo-1.0
*** Error code 1
dmake: Fatal error: Command failed for target `check-am'


reply via email to

[Prev in Thread] Current Thread [Next in Thread]