DPDK patches and discussions
 help / color / mirror / Atom feed
From: Panu Matilainen <pmatilai@redhat.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH v2] scripts: support any legal git revisions as abi validation range
Date: Thu,  3 Dec 2015 16:05:26 +0200	[thread overview]
Message-ID: <aa833c9f01c5474c8a84efd57a9caad1694d69f6.1449151383.git.pmatilai@redhat.com> (raw)
In-Reply-To: <aa1719d759d44dd62166432ed2179ac2c66e79b5.1449075047.git.pmatilai@redhat.com>

In addition to git tags, support validating abi between any legal
gitrevisions(7) syntaxes, such as "validate-abi.sh -1 . <target>"
"validate-abi.sh master mybranch <target>" etc in addition to
validating between tags. Makes it easier to run the validator
for in-development work.

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
---

v2 changes:
- update usage and error messages to match new behavior
- update documentation too (as suggested by John McNamara)

 doc/guides/contributing/versioning.rst | 20 ++++++++++++-------
 scripts/validate-abi.sh                | 36 ++++++++++++++++++++--------------
 2 files changed, 34 insertions(+), 22 deletions(-)

diff --git a/doc/guides/contributing/versioning.rst b/doc/guides/contributing/versioning.rst
index 653c7d0..015ebb7 100644
--- a/doc/guides/contributing/versioning.rst
+++ b/doc/guides/contributing/versioning.rst
@@ -468,16 +468,22 @@ utilities which can be installed via a package manager. For example::
 
 The syntax of the ``validate-abi.sh`` utility is::
 
-   ./scripts/validate-abi.sh <TAG1> <TAG2> <TARGET>
+   ./scripts/validate-abi.sh <REV1> <REV2> <TARGET>
 
-Where ``TAG1`` and ``TAG2`` are valid git tags on the local repo and target is
-the usual DPDK compilation target.
+Where ``REV1`` and ``REV2`` are valid gitrevisions(7) 
+https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html
+on the local repo and target is the usual DPDK compilation target.
 
-For example to test the current committed HEAD against a previous release tag
-we could add a temporary tag and run the utility as follows::
+For example:
 
-   git tag MY_TEMP_TAG
-   ./scripts/validate-abi.sh v2.0.0 MY_TEMP_TAG x86_64-native-linuxapp-gcc
+   # Check between the previous and latest commit:
+   ./scripts/validate-abi.sh HEAD~1 HEAD x86_64-native-linuxapp-gcc
+
+   # Check between two tags:
+   ./scripts/validate-abi.sh v2.0.0 v2.1.0 x86_64-native-linuxapp-gcc
+
+   # Check between git master and local topic-branch "vhost-hacking":
+   ./scripts/validate-abi.sh master vhost-hacking x86_64-native-linuxapp-gcc
 
 After the validation script completes (it can take a while since it need to
 compile both tags) it will create compatibility reports in the
diff --git a/scripts/validate-abi.sh b/scripts/validate-abi.sh
index 4476433..e49c425 100755
--- a/scripts/validate-abi.sh
+++ b/scripts/validate-abi.sh
@@ -33,7 +33,7 @@ TARGET=$3
 ABI_DIR=`mktemp -d -p /tmp ABI.XXXXXX`
 
 usage() {
-	echo "$0 <TAG1> <TAG2> <TARGET>"
+	echo "$0 <REV1> <REV2> <TARGET>"
 }
 
 log() {
@@ -43,16 +43,15 @@ log() {
 }
 
 validate_tags() {
-	git tag -l | grep -q "$TAG1"
-	if [ $? -ne 0 ]
+
+	if [ -z "$HASH1" ]
 	then
-		echo "$TAG1 is invalid"
+		echo "invalid revision: $TAG1"
 		return
 	fi
-	git tag -l | grep -q "$TAG2"
-	if [ $? -ne 0 ]
+	if [ -z "$HASH2" ]
 	then
-		echo "$TAG2 is invalid"
+		echo "invalid revision: $TAG2"
 		return
 	fi
 }
@@ -60,12 +59,12 @@ validate_tags() {
 validate_args() {
 	if [ -z "$TAG1" ]
 	then
-		echo "Must Specify TAG1"
+		echo "Must Specify REV1"
 		return
 	fi
 	if [ -z "$TAG2" ]
 	then
-		echo "Must Specify TAG2"
+		echo "Must Specify REV2"
 		return
 	fi
 	if [ -z "$TARGET" ]
@@ -112,6 +111,9 @@ then
 	cleanup_and_exit 1
 fi
 
+HASH1=$(git show -s --format=%H "$TAG1" -- 2> /dev/null)
+HASH2=$(git show -s --format=%H "$TAG2" -- 2> /dev/null)
+
 # Make sure our tags exist
 res=$(validate_tags)
 if [ -n "$res" ]
@@ -120,6 +122,10 @@ then
 	cleanup_and_exit 1
 fi
 
+# Make hashes available in output for non-local reference
+TAG1="$TAG1 ($HASH1)"
+TAG2="$TAG2 ($HASH2)"
+
 ABICHECK=`which abi-compliance-checker 2>/dev/null`
 if [ $? -ne 0 ]
 then
@@ -135,8 +141,8 @@ then
 fi
 
 log "INFO" "We're going to check and make sure that applications built"
-log "INFO" "against DPDK DSOs from tag $TAG1 will still run when executed"
-log "INFO" "against DPDK DSOs built from tag $TAG2."
+log "INFO" "against DPDK DSOs from version $TAG1 will still run when executed"
+log "INFO" "against DPDK DSOs built from version $TAG2."
 log "INFO" ""
 
 # Check to make sure we have a clean tree
@@ -152,7 +158,7 @@ cd $(dirname $0)/..
 
 log "INFO" "Checking out version $TAG1 of the dpdk"
 # Move to the old version of the tree
-git checkout $TAG1
+git checkout $HASH1
 
 # Make sure we configure SHARED libraries
 # Also turn off IGB and KNI as those require kernel headers to build
@@ -185,7 +191,7 @@ cd $TARGET/lib
 log "INFO" "COLLECTING ABI INFORMATION FOR $TAG1"
 for i in `ls *.so`
 do
-	$ABIDUMP $i -o $ABI_DIR/$i-ABI-0.dump -lver $TAG1
+	$ABIDUMP $i -o $ABI_DIR/$i-ABI-0.dump -lver $HASH1
 done
 cd ../..
 
@@ -194,7 +200,7 @@ git clean -f -d
 git reset --hard
 # Move to the new version of the tree
 log "INFO" "Checking out version $TAG2 of the dpdk"
-git checkout $TAG2
+git checkout $HASH2
 
 # Make sure we configure SHARED libraries
 # Also turn off IGB and KNI as those require kernel headers to build
@@ -220,7 +226,7 @@ cd $TARGET/lib
 log "INFO" "COLLECTING ABI INFORMATION FOR $TAG2"
 for i in `ls *.so`
 do
-	$ABIDUMP $i -o $ABI_DIR/$i-ABI-1.dump -lver $TAG2
+	$ABIDUMP $i -o $ABI_DIR/$i-ABI-1.dump -lver $HASH2
 done
 cd ../..
 
-- 
2.5.0

  parent reply	other threads:[~2015-12-03 14:05 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-02 16:50 [dpdk-dev] [PATCH] " Panu Matilainen
2015-12-02 18:23 ` Neil Horman
2015-12-03 12:14 ` Mcnamara, John
2015-12-03 13:28   ` Thomas Monjalon
2015-12-03 13:44     ` Panu Matilainen
2015-12-03 13:49       ` Richardson, Bruce
2015-12-03 15:46       ` Mcnamara, John
2015-12-03 13:39   ` Panu Matilainen
2015-12-03 13:41     ` Thomas Monjalon
2015-12-03 14:05 ` Panu Matilainen [this message]
2015-12-07 14:09   ` [dpdk-dev] [PATCH v2] " Panu Matilainen
2015-12-07 14:32     ` Thomas Monjalon
2015-12-07 16:08       ` Panu Matilainen
2015-12-07 22:38   ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aa833c9f01c5474c8a84efd57a9caad1694d69f6.1449151383.git.pmatilai@redhat.com \
    --to=pmatilai@redhat.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).