[dpdk-dev] [PATCH v4] ABI: Add abi checking utility
Thomas Monjalon
thomas.monjalon at 6wind.com
Tue Mar 17 17:47:56 CET 2015
More comments:
Please rename to validate-abi.sh (with an hyphen) to be more consistent with
other scripts.
Please add it in the MAINTAINERS file.
Thanks
2015-03-17 16:42, Thomas Monjalon:
> Hi Neil,
>
> I tested this tool and I see few small improvements possible.
>
> 2015-03-13 10:09, Neil Horman:
> > There was a request for an abi validation utilty for the ongoing ABI stability
> utility
> > work. As it turns out there is a abi compliance checker in development that
> > seems to be under active development and provides fairly detailed ABI compliance
> > reports. Its not yet intellegent enough to understand symbol versioning, but it
> intelligent
> > does provide the ability to identify symbols which have changed between
> > releases, along with details of the change, and offers developers the
> > opportunity to identify which symbols then need versioning and validation for a
> > given update via manual testing.
> >
> > This script automates the use of the compliance checker between two arbitrarily
> > specified tags within the dpdk tree. To execute enter the $RTE_SDK directory
> > and run:
> >
> > ./scripts/validate_abi.sh $GIT_TAG1 $GIT_TAG2 $CONFIG
> >
> > where $GIT_TAG1 and 2 are git tags and $CONFIG is a config specification
> > suitable for passing as the T= variable in the make config command.
> >
> > Note the upstream source for the abi compliance checker is here:
> > http://ispras.linuxbase.org/index.php/ABI_compliance_checker
> >
> > It generates a report for each DSO built from the requested tags that developers
> > can review to find ABI compliance issues.
> >
> > Signed-off-by: Neil Horman <nhorman at tuxdriver.com>
> >
> > ---
> >
> > Change Notes:
> >
> > v2) Fixed some typos as requested by Thomas
> >
> > v3) Fixed some additional typos Thomas requested
> > Improved script to work from detached state
> > Added some documentation to the changelog
> > Added some comments to the scripts
> >
> > v4) Remove duplicate exports.
> > Move restoration of starting branch/comit to cleanup_and_exit
> > ---
> [...]
> > +TAG1=$1
> > +TAG2=$2
> > +TARGET=$3
> > +ABI_DIR=`mktemp -d -p /tmp ABI.XXXXXX`
>
> +JOBS=$(grep -c '^processor' /proc/cpuinfo)
>
> [...]
> > +cleanup_and_exit() {
> > + rm -rf $ABI_DIR
> > + exit $1
> > + git checkout $CURRENT_BRANCH
>
> Checkout is never done because of previous exit.
>
> > +}
> [...]
> > +log "INFO" "Checking out version $TAG1 of the dpdk"
> > +# Move to the old version of the tree
> > +git checkout $TAG1
>
> What about -q for quiet mode?
>
> [...]
> > +log "INFO" "Building DPDK $TAG1. This might take a moment"
> > +make O=$TARGET > $VERBOSE 2>&1
>
> -j$JOBS would improve building time
>
> [...]
> > +# Move to the new version of the tree
> > +log "INFO" "Checking out version $TAG2 of the dpdk"
> > +git checkout $TAG2
>
> -q ?
>
> [...]
> > +log "INFO" "Building DPDK $TAG2. This might take a moment"
> > +make O=$TARGET > $VERBOSE 2>&1
>
> -j ?
>
> [...]
> > +# Start comparison of ABI dumps
> > +for i in `ls $ABI_DIR/*-1.dump`
> > +do
> > + NEWNAME=`basename $i`
> > + OLDNAME=`basename $i | sed -e"s/1.dump/0.dump/"`
> > + LIBNAME=`basename $i | sed -e"s/-ABI-1.dump//"`
> > +
> > + if [ ! -f $ABI_DIR/$OLDNAME ]
> > + then
> > + log "INFO" "$OLDNAME DOES NOT EXIST IN $TAG1. SKIPPING..."
> > + fi
> > +
> > + #compare the abi dumps
> > + $ABICHECK -l $LIBNAME -old $ABI_DIR/$OLDNAME -new $ABI_DIR/$NEWNAME
> > +done
>
> It would be more convenient to generate an HTML index giving access to every
> reports for every DSOs.
>
> > +
> > +git reset --hard
> > +log "INFO" "ABI CHECK COMPLETE. REPORTS ARE IN compat_report directory"
> > +cleanup_and_exit 0
>
> After reading the report, it's not clear what would be tolerated or not.
> Should we forbid every defects?
>
More information about the dev
mailing list