Subject: bug#19614: make dist exits succesfully even when tar exits with error

From: Dimitrios Apostolou <[email-masked]>
Date: Fri, 16 Jan 2015 18:15:08 +0100 (CET)

On Fri, 16 Jan 2015, Eric Blake wrote:
> On 01/16/2015 08:01 AM, Dimitrios Apostolou wrote:
>> Relevant output from "make V=1 dist":
>>
>> tardir=cfengine-3.7.0a1.5ffcc54 && tar --format=ustar -chf - "$tardir" |
>> GZIP=--best gzip -c >cfengine-3.7.0a1.5ffcc54.tar.gz
>
> It is portable to do something hairy like:
>
> { tar ...; echo $? > file; } | gzip ...
> inspect file
>
> It is even possible to avoid an intermediate file with even hairier exec
> operations to shuffle fds around.
>
> It may be simpler to break things into two steps, with an intermediate
> file instead of a pipeline, although I'm not sure it would be efficient.
>
> But you definitely make a point that we should fix things to detect tar
> failure.

What if we just grep stderr for *any* output from any command in the 
pipeline?

{ tar ... | gzip ... ; } 2>&1 1>/dev/null | grep .

Nobody guarantees that it can't fail silently or it can't succeed despite 
output in stderr, but it's pretty rare.

Dimitris