help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Question WHY is gnu make does not stop on error on rule


From: aotto
Subject: Re: Question WHY is gnu make does not stop on error on rule
Date: Thu, 8 Dec 2022 21:14:09 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.1

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]