On 07/12/2020 17:32, Thomas Monjalon wrote:
> The scripts gen-abi.sh and check-abi.sh are updated
> to print error messages to stderr so they are likely never ignored.
> 
> When called from test-meson-builds.sh, the standard messages on stdout
> can be more quiet depending on the verbosity settings.
> The beginning of the ABI check is announced in verbose mode.
> The commands are printed in very verbose mode.
> The check result details are available in verbose mode.

So there is a bit of a disconnect here - you change gen-abi/check-abi to 
correctly direct errors to sterr.

You then however provide a method to ignore them in test_meson_build.sh.
I thinking giving people a way of ignoring the indicated lines below, 
is a bad plan. 

No problem with the changes to check-abi/gen-abi - but I think the changes 
to test_meson_build.sh are a bad idea. 

> Signed-off-by: Thomas Monjalon <tho...@monjalon.net>
> ---
>  devtools/check-abi.sh         | 21 +++++++++++----------
>  devtools/gen-abi.sh           |  4 ++--
>  devtools/test-meson-builds.sh |  9 +++++++--
>  3 files changed, 20 insertions(+), 14 deletions(-)
> 
> diff --git a/devtools/check-abi.sh b/devtools/check-abi.sh
> index ab6748cfbc..381db2cdd1 100755
> --- a/devtools/check-abi.sh
> +++ b/devtools/check-abi.sh
> @@ -3,7 +3,7 @@
>  # Copyright (c) 2019 Red Hat, Inc.
>  
>  if [ $# != 2 ] && [ $# != 3 ]; then
> -     echo "Usage: $0 refdir newdir [warnonly]"
> +     echo "Usage: $0 refdir newdir [warnonly]" >&2
>       exit 1
>  fi
>  
> @@ -13,23 +13,23 @@ warnonly=${3:-}
>  ABIDIFF_OPTIONS="--suppr $(dirname $0)/libabigail.abignore --no-added-syms"
>  
>  if [ ! -d $refdir ]; then
> -     echo "Error: reference directory '$refdir' does not exist."
> +     echo "Error: reference directory '$refdir' does not exist." >&2
>       exit 1
>  fi
>  incdir=$(find $refdir -type d -a -name include)
>  if [ -z "$incdir" ] || [ ! -e "$incdir" ]; then
> -     echo "WARNING: could not identify a include directory for $refdir, 
> expect false positives..."
> +     echo "WARNING: could not identify an include directory for $refdir, 
> expect false positives..." >&2
>  else
>       ABIDIFF_OPTIONS="$ABIDIFF_OPTIONS --headers-dir1 $incdir"
>  fi
>  
>  if [ ! -d $newdir ]; then
> -     echo "Error: directory to check '$newdir' does not exist."
> +     echo "Error: directory to check '$newdir' does not exist." >&2
>       exit 1
>  fi
>  incdir2=$(find $newdir -type d -a -name include)
>  if [ -z "$incdir2" ] || [ ! -e "$incdir2" ]; then
> -     echo "WARNING: could not identify a include directory for $newdir, 
> expect false positives..."
> +     echo "WARNING: could not identify an include directory for $newdir, 
> expect false positives..." >&2
>  else
>       ABIDIFF_OPTIONS="$ABIDIFF_OPTIONS --headers-dir2 $incdir2"
>  fi
> @@ -46,23 +46,24 @@ for dump in $(find $refdir -name "*.dump"); do
>       fi
>       dump2=$(find $newdir -name $name)
>       if [ -z "$dump2" ] || [ ! -e "$dump2" ]; then
> -             echo "Error: can't find $name in $newdir"
> +             echo "Error: cannot find $name in $newdir" >&2
>               error=1
>               continue
>       fi
> +     echo abidiff $ABIDIFF_OPTIONS $dump $dump2
>       abidiff $ABIDIFF_OPTIONS $dump $dump2 || {
>               abiret=$?
> -             echo "Error: ABI issue reported for 'abidiff $ABIDIFF_OPTIONS 
> $dump $dump2'"
> +             echo "Error: ABI issue reported for 'abidiff $ABIDIFF_OPTIONS 
> $dump $dump2'" >&2
>               error=1
>               echo
>               if [ $(($abiret & 3)) -ne 0 ]; then
> -                     echo "ABIDIFF_ERROR|ABIDIFF_USAGE_ERROR, this could be 
> a script or environment issue."
> +                     echo "ABIDIFF_ERROR|ABIDIFF_USAGE_ERROR, this could be 
> a script or environment issue." >&2
>               fi
>               if [ $(($abiret & 4)) -ne 0 ]; then
> -                     echo "ABIDIFF_ABI_CHANGE, this change requires a review 
> (abidiff flagged this as a potential issue)."
> +                     echo "ABIDIFF_ABI_CHANGE, this change requires a review 
> (abidiff flagged this as a potential issue)." >&2
>               fi
>               if [ $(($abiret & 8)) -ne 0 ]; then
> -                     echo "ABIDIFF_ABI_INCOMPATIBLE_CHANGE, this change 
> breaks the ABI."
> +                     echo "ABIDIFF_ABI_INCOMPATIBLE_CHANGE, this change 
> breaks the ABI." >&2>                fi
>               echo
>       }
> diff --git a/devtools/gen-abi.sh b/devtools/gen-abi.sh
> index c44b0e228a..f15a3b9aaf 100755
> --- a/devtools/gen-abi.sh
> +++ b/devtools/gen-abi.sh
> @@ -3,13 +3,13 @@
>  # Copyright (c) 2019 Red Hat, Inc.
>  
>  if [ $# != 1 ]; then
> -     echo "Usage: $0 installdir"
> +     echo "Usage: $0 installdir" >&2
>       exit 1
>  fi
>  
>  installdir=$1
>  if [ ! -d $installdir ]; then
> -     echo "Error: install directory '$installdir' does not exist."
> +     echo "Error: install directory '$installdir' does not exist." >&2
>       exit 1
>  fi
>  
> diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
> index ed44d4ffb1..16a81b6241 100755
> --- a/devtools/test-meson-builds.sh
> +++ b/devtools/test-meson-builds.sh
> @@ -194,10 +194,15 @@ build () # <directory> <target compiler | cross file> 
> <meson options>
>  
>               install_target $builds_dir/$targetdir \
>                       $(readlink -f $builds_dir/$targetdir/install)
> +             echo "Checking ABI compatibility of $targetdir" >&$verbose
> +             echo $srcdir/devtools/gen-abi.sh \
> +                     $(readlink -f $builds_dir/$targetdir/install) 
> >&$veryverbose
>               $srcdir/devtools/gen-abi.sh \
> -                     $(readlink -f $builds_dir/$targetdir/install)
> +                     $(readlink -f $builds_dir/$targetdir/install) 
> >&$veryverbose
> +             echo $srcdir/devtools/check-abi.sh $abirefdir/$targetdir \
> +                     $(readlink -f $builds_dir/$targetdir/install) 
> >&$veryverbose
>               $srcdir/devtools/check-abi.sh $abirefdir/$targetdir \
> -                     $(readlink -f $builds_dir/$targetdir/install)
> +                     $(readlink -f $builds_dir/$targetdir/install) >&$verbose
>       fi
>  }
>  
> 

Reply via email to