Subject: Re: make -j and failure modes
To: Christos Zoulas <christos@zoulas.com>
From: Greywolf <greywolf@starwolf.com>
List: tech-userlevel
Date: 12/10/2003 09:00:19
Thus spake Christos Zoulas ("CZ> ") sometime Today...

CZ> Is this a bug? -e does not work on interactive shells.

Really?

rivendell 513: sh
$ set -e
$ false
rivendell 514: sh -e
$ false
rivendell 515:

It totally fails, though, on ()'d commands:

rivendell 515: sh -e
$ (exit 0; exit 1)
$ (exit 1)
$ false
rivendell 516:

Perhaps because false is a builtin?

rivendell 516: sh -e
$ /usr/bin/false
rivendell 517:


Nope!

So it's the semantics of () which are broken and should be fixed.

David Laight suggested that it...
>May even be worth changing make so that it understands cd xxx; yyy

I have two thoughts on this:
1.  Make understands this already.
2.  Are you (David) saying "change make to understand
target:	source
	cd xxx
	yyy
??  i.e. "cd" actually takes effect over more than one line?

If the latter, may I issue a resounding "NO!"?  There are too many
implementations of make out there which would not do well with that.
I've even *depended* explicitly on the fact that 'cd' does not cross
make line boundaries (don't get technical about it -- you know what
I mean).

				--*greywolf;
--
Contrary to popular belief, Unix is user friendly.
It just happens to be selective about who it makes friends with.
	-Kyle Hearn  <kyle@intex.net>