[1/1] devtools: adjust verbosity of ABI check

Message ID 20201207173235.1397351-1-thomas@monjalon.net (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series [1/1] devtools: adjust verbosity of ABI check |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/travis-robot success Travis build: passed

Commit Message

Thomas Monjalon Dec. 7, 2020, 5:32 p.m. UTC
  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.

Signed-off-by: Thomas Monjalon <thomas@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(-)
  

Comments

Ray Kinsella Dec. 8, 2020, 3:22 p.m. UTC | #1
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 <thomas@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
>  }
>  
>
  
David Marchand Dec. 8, 2020, 3:31 p.m. UTC | #2
On Mon, Dec 7, 2020 at 6:33 PM Thomas Monjalon <thomas@monjalon.net> wrote:
> 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

[snip]

> @@ -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

On error, this same command is repeated below, so I don't see the need
for this new debug message.


>         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
  
Thomas Monjalon Dec. 8, 2020, 3:32 p.m. UTC | #3
08/12/2020 16:22, Kinsella, Ray:
> 
> 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.

No the errors are not ignored.
Only stdout (report details) is redirected.

> >  		$srcdir/devtools/check-abi.sh $abirefdir/$targetdir \
> > -			$(readlink -f $builds_dir/$targetdir/install)
> > +			$(readlink -f $builds_dir/$targetdir/install) >&$verbose
  

Patch

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
 }