On Fri, Aug 31, 2001 at 02:31:43PM +0800, Stas Bekman wrote:
> > > just before ./t/TEST is run in Makefile, is the simplest solution. Or
> > > would this have cross-platform problems.
> >
> > i hardly ever use 'make test', especially with httpd-test.  i just run
> > t/TEST directly.  and think about nightly batch jobs that will 'make' once
> > and run t/TEST many:
> > t/TEST apxs ~/ap/prefork/bin/apxs
> > t/TEST -ssl
> > t/TEST apxs ~/ap/worker/bin/apxs
> > t/TEST -ssl
> > t/TEST -proxy
> > etc.
> 
> but setting 'ulimit' in the parent shell once is enough. So if you run
> once 'make', it should be good enough to unset the limit.
> 
> Hence I thought what would be the damage if we put into Makefile:
> 
> test :: set_limit pure_all run_tests test_clean unset_limit
> 
> set_limit:
>       cur_limit=`ulimit -c`
>       ulimit -c unlimited
> 
> unset_limit:
>       # restore the limit to its originals
>       ulimit -c $cur_limit

This won't work :)  In fact, there's at least three reasons it won't
work: 

 - ulimit is a shell builtin.  It affects the shell that runs it only. 
   Every separate line in a Makefile not connected with
   backslash-newline gets its own shell.
 - shell variables are local to the shell, so cur_limit won't get
   passed along either
 - Most of all, dependency order does not mean anything.  The
   dependencies can be built in random order, and often are.

You could do:

test: pure_all
        ulimit -c unlimited; $(MAKE) run_tests
        $(MAKE) test_clean


(Note that 'test :: pure_all run_tests test_clean' has the same
dependency ordering problems I mentioned.)

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to