At 10:14 PM -0500 6/17/01, Ben Collins-Sussman wrote:
>This bit of code from Makefile.in is part of the 'check' target:
>
>	    echo "START: $$progbase" >> $$logfile ; \
>	    (cd $$progdir && ./$$progbase $(abs_srcdir)) >> $$logfile ; \
>	    if test $$? -eq 0; then \
>		echo "SUCCESS" ; \
>	    else \
>		failed=yes; \
>		echo "FAILED" ; \
>		echo "--- at least one sub-test FAILED, check tests.log." ; \
>	    fi; \
>	    echo "END: $$progbase" >> $$logfile ; \
>
>
>The problem I'm noticing on my FreeBSD systems: if one of the test
>programs returns non-zero, we never see the "FAILED" message in the
>else clause.  Instead, the BSD version of 'make' simply bombs out on
>the spot and prints "*** Error code N".
I was just in this area on freebsd, fixing a similar problem.  Some
automake-generated make targets would fail with '*** Error code n'
when they should not have.  I did fix that issue in freebsd-current,
and will be copying the fix to freebsd-stable sometime soon.  That
doesn't fix things for the above, though.
>I'd like to not be dependent on the fact that GNU make is more
>tolerant than others.  Is there a way to change the script above
>so that older 'make's won't instantly bomb on error?
Note that in freebsd-land (at least), this is not an issue with
'make', it is an issue with '/bin/sh'.  As far as 'make' is
concerned, that whole mess above is a single command which it
executes using '/bin/sh -e' processing.  It is the shell that
is deciding to error-out.
There is a trick to how the shell handles error-check processing.
It wants to know you're checking the status of the just-finished
command before it starts to execute the next command.  (at least,
I think that is it's intent).  So, the command-which-might-fail
must be IN the 'if', or it must be tested by using '||' or '&&'
for the command-separator.
so, you tend to do things like:
    cmdok=NO ; cd $$progdir && ./$$prog >> $$log && cmdok=YES
The cmdok=YES part will only be executed if both the 'cd' and '$prog'
worked.  You then check the value of cmdok in the 'if' statement.
-- 
Garance Alistair Drosehn            =   gad@eclipse.acs.rpi.edu
Senior Systems Programmer           or  gad@freebsd.org
Rensselaer Polytechnic Institute    or  drosih@rpi.edu
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:36:32 2006