HomeFreeBSD

Don't use `&&' in any shell commands here. Using it to give conditional
rS36074Unpublished

Unpublished Commit ยท Learn More

No further details are available.

Description

Don't use `&&' in any shell commands here. Using it to give conditional
execution is usually unnecessary in BSD Makefiles because BSD make
invokes shells with -e. Using it to give conditional execution is
often wrong in BSD makefiles because BSD make joins shell commands
when invoked in certain ways (in particular, as `make -jN'). Example

makefile:

clean:
cd /
false && true

rm -rf * # a dangerous command

This should terminate after the `false && true' command fails, but
it doesn't when the commands are joined (`false && true' is a non-

simple command, so -e doesn't cause termination). The b-maked version:

clean:
cd /
false; true

rm -rf * # a dangerous command

terminates after the false' command fails (false' is a simple
command, so -e causes termination). However, for versions of
make like gnu make that don't invoke shells with -e, this change
completely breaks the makefile.

This is one of the fixes for the bug suite that caused `make world'
to sometimes put raw cpp output in .depend files. Building of cc
sometimes failed, but the failure did not terminate the build
immediately, and various wrong versions of the cc components were
used until one was wrong enough to cause a fatal error.

Details

Provenance
bdeAuthored on
Parents
rS36073: MFC: return vfork back + array range termination
Branches
Unknown
Tags
Unknown

Event Timeline