From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wg0-f53.google.com (mail-wg0-f53.google.com [74.125.82.53]) by dpdk.org (Postfix) with ESMTP id 6C3F29AA9 for ; Tue, 17 Mar 2015 16:43:06 +0100 (CET) Received: by wggv3 with SMTP id v3so11858097wgg.1 for ; Tue, 17 Mar 2015 08:43:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:organization :user-agent:in-reply-to:references:mime-version :content-transfer-encoding:content-type; bh=3ph0t0nL0kVQTRqBNM7PK5DoEJ3LmaBsNe+jKnSAeDM=; b=Wd1WPT8ssbyTPbVV6d/BZJFldpXwShz7vv9FcCOFZ/3B1oLggsb93P3mJpJOgYjgp6 D8ID/lOHf4X5ekcj7+Ebp/0COjdarwa505d1XCJryZa5uy2yY0jjRrLa933Z6RWyd2KX AmLuQR0obXO4/3nZHXTANmdD85K8R49ekC4ECEagE2yMb3NBA7ajZqj/OvUJPiPAJ2pD Q+R5uc/eOhyu+CqZSxkWeB2H48HbDAtBGvo4DO5pjuwOUeQ5dJO/ER+UYXyKOnN2TxD6 x1QGIS6h+myXcDQiYUl9eWEPalp2T/dvElKDSIsuyE2xev4iZ94Y30Rry9nVtvPEHBZM I37Q== X-Gm-Message-State: ALoCoQm7UaWh9z9M67VQnEP/YTDM7C/g5xEhqaMr+zCmwAFh4Fb1JbdQBUmCWRhxcrQ95YwIDxlL X-Received: by 10.194.201.2 with SMTP id jw2mr98011745wjc.158.1426606986207; Tue, 17 Mar 2015 08:43:06 -0700 (PDT) Received: from xps13.localnet (136-92-190-109.dsl.ovh.fr. [109.190.92.136]) by mx.google.com with ESMTPSA id u16sm20459846wjr.5.2015.03.17.08.43.04 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 Mar 2015 08:43:04 -0700 (PDT) From: Thomas Monjalon To: Neil Horman Date: Tue, 17 Mar 2015 16:42:31 +0100 Message-ID: <8343380.8uC93YKvWO@xps13> Organization: 6WIND User-Agent: KMail/4.14.4 (Linux/3.18.4-1-ARCH; KDE/4.14.4; x86_64; ; ) In-Reply-To: <1426255750-3961-1-git-send-email-nhorman@tuxdriver.com> References: <1422652596-12777-1-git-send-email-nhorman@tuxdriver.com> <1426255750-3961-1-git-send-email-nhorman@tuxdriver.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Cc: dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH v4] ABI: Add abi checking utility X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Mar 2015 15:43:06 -0000 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?