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