Re: Question WHY is gnu make does not stop on error on rule
aotto <[email protected]>
| Newsgroups | gmane.comp.gnu.make.general |
|---|---|
| Message-ID | <[email protected]> |
On 08.12.22 20:21, Paul Smith wrote: > On Thu, 2022-12-08 at 19:59 +0100, aotto wrote: >> HA HA HA - I fund the bug !! >> >> I used "-silent" and not "--silent", the "-silent" is parsed as > That's funny, but I'm not sure why it works differently in 4.4 since > that was still the case in 4.3, if you use "-silent". > >> MqC.mq.$(MAKE_LNG): | MqC.mq.$(MAKE_LNG).before MqC.mq.$(MAKE_LNG).after > This usage is dangerous, because: > > $ false > $ echo $? > 1 > > $ false | cat > $ echo $? > 0 > > See how the pipeline swallowed the failing exit code? The exit code of > a pipeline is always the exit code of the last statement in the > pipeline (here, the "cat" program). > > If you want to require bash you can use something like: > > SHELL := /bin/bash > .SHELLFLAGS = -o pipefail -c > > which will force the exit code of a pipeline to be the exit code of the > last failing command, not the last command. > > If you don't want to require bash, you'll have to get a LOT fancier > than simply adding a pipe in a variable, if you want to preserve exit > codes. > the "|" is not the bash-"|" it is the rule prerequisite "|" www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html ao