From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: Re: [PATCH v4] ABI: Add abi checking utility Date: Tue, 17 Mar 2015 17:47:56 +0100 Message-ID: <109739948.LhSJyheLrP@xps13> References: <1422652596-12777-1-git-send-email-nhorman@tuxdriver.com> <1426255750-3961-1-git-send-email-nhorman@tuxdriver.com> <8343380.8uC93YKvWO@xps13> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7Bit Cc: dev-VfR2kkLFssw@public.gmane.org To: Neil Horman Return-path: In-Reply-To: <8343380.8uC93YKvWO@xps13> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" 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 > > > > --- > > > > 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? >