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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.