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

Paul Smith <[email protected]>
Newsgroups gmane.comp.gnu.make.general
Organization GNU's Not UNIX!
Message-ID <[email protected]>
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.
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.