Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Jun 2001 17:34:30 -0400
From:      Garance A Drosihn <drosih@rpi.edu>
To:        freebsd-standards@bostonradio.org
Cc:        Martin Cracauer <cracauer@cons.org>
Subject:   Re: 'make clean' vs /bin/sh, posix behavior?
Message-ID:  <p05101002b7556d02b66a@[128.113.24.47]>
In-Reply-To: <p05100e16b737c14ab4e6@[128.113.24.47]>
References:  <p05100e16b737c14ab4e6@[128.113.24.47]>

next in thread | previous in thread | raw e-mail | index | archive | help
[
   I am sending this to freebsd-standards with a blind-CC to
   freebsd-hackers.  I wanted to see if this trick would get the
   first message to show up on both lists, but avoid the problem
   where the ongoing discussion is cross-posted to multiple lists.
]

Back on May 28th, in the freebsd-hackers thread about:
       Re: 'make clean' vs automake vs /bin/sh, which to fix?
I (garance) wrote:
>It seems to me that if 'make' is executing a single command
>line which is made up of multiple unix commands, it should
>only care about the FINAL command status, and not the status
>of each of the interim commands.  That is just my gut feeling
>though, I can't tell if the documentation really spells out
>what is to happen in this case.
>
>So, we could fix [my described problem] by:
>     1) changing /bin/sh
>     2) changing make not to call /bin/sh with -e
>     3) [...dumb option...]
>
>Me, I'm inclined to go with the some fix to the evaltree routine
>in /bin/sh,     [...fixing bug in '-e'. This is already done...]
>
>While I do wonder about 'make' calling '/bin/sh -e', I am
>less comfortable with committing that change myself, as
>there probably are makefiles which do assume the e-style
>behavior when handling multiple commands in a command-line.
>Perhaps we should update the documentation for 'make' to
>explicitly mention how 'make' handles such command-lines.

A pretty similar topic came up on the 'subversion' mailing list,
and   At 4:20 PM -0400 6/19/01, Paul D. Smith wrote:
>  +   The difference I believe you're alluding to is whether make
>  +   invokes /bin/sh with the -e option by default or not.
>  +
>  +   Many (most) versions of make do actually invoke with the -e
>  +   option, always.  However, the POSIX.2 definition of make is
>  +   very clear on this point, that make should invoke
>  +   "/bin/sh -c ...".
>  +
>  +   GNU make follows the POSIX standard in this, rather than
>  +   tradition.  That's why GNU make doesn't fail immediately.
>      [in the example discussed on the subversion mailing list]
>  +
>  +   The simple way to ensure that all versions of make behave the
>  +   same is to tell the shell explicitly what to do with the e
>  +   flag; for example if you want to ignore errors in all versions
>  +   of make you can use "set +e" to disable the "e" flag if it's
>  +   set:
>  +
>  +		set +e; \
>  +		echo "START: $$progbase" >> $$logfile ; \
>  +		...
>  +
>  +  I think that's pretty portable.
>
>--------------------------------------------------------------------
>  Paul D. Smith <psmith@gnu.org>   Find some GNU make tips at:
>  http://www.gnu.org               http://www.paulandlesley.org/gmake/

So, I'm wondering if that's what POSIX really wants as the standard
behavior.  I don't THINK we want to change the behavior of our own
'make', but I do wonder if we should at least document this detail
in the man page for 'make'.

-- 
Garance Alistair Drosehn            =   gad@eclipse.acs.rpi.edu
Senior Systems Programmer           or  gad@freebsd.org
Rensselaer Polytechnic Institute    or  drosih@rpi.edu

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?p05101002b7556d02b66a>