ports/64037 and the alleged && -> ; failure from March 2002
Matthias Andree
ma at dt.e-technik.uni-dortmund.de
Sat Mar 13 04:32:12 PST 2004
Oliver Eikemeier <eikemeier at fillmore-labs.com> writes:
> GNU make is not used for ports Makefiles, only for the ones in the
> distribution, and you don't want to Patch Them All(tm), do you?
perl -ple 's/;/\&\&/g;' `find /usr/ports -iname 'makefile*'` # :*)
Seriously, whether we use gmake or make for ports does not matter,
neither documents the "make passes -e to /bin/sh" behaviour, hence it
must not be relied on under any circumstances.
Robustness considerations mandate using && over ; when cmd1 is a
prerequisite for cmd2 in a cmd1 && cmd2 AND-list. Some day, someone
considers the whole command line isn't that important, prepends a '-'
(making make suppress the -e) and cmd2 gets executed when cmd1 failed in
a cmd1;cmd2 sequence.
Seriously, any Makefile that is touched by a committer or maintainer
should have the ";" changed to "&&" if "&&" is needed to make the thing
work without -e.
> Finally I'm not sure if simply ignoring the following command is the
> right thing to do. I can construct an example where this is fatal too,
> but IMHO all such examples would be pathological.
Sure you can (but then we have OR-lists with "||" :-P)
I'm not saying that all ';' must be '&&', but in the common "cd, then
execute a command" case, it really ought to be.
--
Matthias Andree
Encrypt your mail: my GnuPG key ID is 0x052E7D95
More information about the freebsd-ports
mailing list