On Sun, 5 Feb 2017, Robert Helling wrote:
> > On 05 Feb 2017, at 15:21, Cristian Ionescu-Idbohrn 
> > <[email protected]> wrote:
> > 
> > I have an idea ;)
> > 
> > Why not error handle those the code that produces those "warnings" (as
> > you call them) on that particular architecture, instead of
> > ignoring/hiding the errors (exit status failure) for everyone?  That
> > kind of thing can bite you later in various ways, leading to bug
> > reports saying "I tried that but it doesn't work :/  The build script
> > exits with success, but...  Could you fix it for me?  I can't tell you
> > where to start looking :(".
> > 
> > 'errexit' was not invented to punish people, but to help coding robust
> > scripts.  In my experience, error handling is one of the most
> > neglected areas.
> 
> ok, took up the challenge. My memory was wrong. It wasn’t Qt. It was 
> the construct
> 
>                 echo $NAME | grep / > /dev/null 2>&1
>                 if [ $? -eq 1 ] ; then
>                         install_name_tool -id "$INSTALL_ROOT/lib/$NAME" 
> "$INSTALL_ROOT/lib/$NAME"
>                 fi
> 
> (this appears twice, you find it by searching for $?). Problem is, 
> when I run it, grep returns non-zero and this is then where the 
> script silently stops.

So, I read that as:

        * if there is a '/' in $NAME, do nothing
        * otherwise install $NAME

> Fixing this is beyond my bash abilities. If you want -e, please 
> rewrite these two occurrences so that the script does not silently 
> fail.

To even avoid the `grep' fork and the pipe, I would write that as:

        case $NAME in
                */*)
                        :
                        ;;
                *)
                        install_name_tool -id "$INSTALL_ROOT/lib/$NAME" 
"$INSTALL_ROOT/lib/$NAME"
                        ;;
        esac

If you insist on using `grep':

        echo $NAME | grep -q / ||
                install_name_tool -id "$INSTALL_ROOT/lib/$NAME" 
"$INSTALL_ROOT/lib/$NAME"

and if it _must_ be done using an if/fi block:

        if ! echo $NAME | grep -q /; then
                install_name_tool -id "$INSTALL_ROOT/lib/$NAME" 
"$INSTALL_ROOT/lib/$NAME"
        fi


Cheers,

-- 
Cristian
_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to