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