X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=scripts%2Fvalidate-abi.sh;h=52e4e7ae736aa901f320aedeb121d9b6cd842488;hb=9a24cbb9579ea3cf04924f6da552090ef9b8802a;hp=cbf9d7f11cf8b50f53cf3bfbbf6109860039efd0;hpb=6100ed584939ec2095d719e82c8363e01f5a04c1;p=dpdk.git diff --git a/scripts/validate-abi.sh b/scripts/validate-abi.sh index cbf9d7f11c..52e4e7ae73 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 " + echo "$0 " } 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" ] @@ -98,6 +97,17 @@ fixup_config() { #trap on ctrl-c to clean up trap cleanup_and_exit SIGINT +if [ -z "$DPDK_MAKE_JOBS" ] +then + # This counts the number of cpus on the system + if [ -e /usr/bin/lscpu ] + then + DPDK_MAKE_JOBS=`lscpu -p=cpu | grep -v "#" | wc -l` + else + DPDK_MAKE_JOBS=1 + fi +fi + #Save the current branch CURRENT_BRANCH=`git branch | grep \* | cut -d' ' -f2` @@ -122,6 +132,9 @@ then cleanup_and_exit 1 fi +HASH1=$(git show -s --format=%H "$TAG1" -- 2> /dev/null | tail -1) +HASH2=$(git show -s --format=%H "$TAG2" -- 2> /dev/null | tail -1) + # Make sure our tags exist res=$(validate_tags) if [ -n "$res" ] @@ -130,6 +143,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 @@ -145,8 +162,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 @@ -162,14 +179,14 @@ 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 fixup_config # Checking abi compliance relies on using the dwarf information in # The shared objects. Thats only included in the DSO's if we build # with -g -export EXTRA_CFLAGS="$EXTRA_CFLAGS -g" +export EXTRA_CFLAGS="$EXTRA_CFLAGS -g -O0" export EXTRA_LDFLAGS="$EXTRA_LDFLAGS -g" # Now configure the build @@ -177,7 +194,7 @@ log "INFO" "Configuring DPDK $TAG1" make config T=$TARGET O=$TARGET > $VERBOSE 2>&1 log "INFO" "Building DPDK $TAG1. This might take a moment" -make O=$TARGET > $VERBOSE 2>&1 +make -j$DPDK_MAKE_JOBS O=$TARGET > $VERBOSE 2>&1 if [ $? -ne 0 ] then @@ -190,7 +207,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 ../.. @@ -199,7 +216,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 fixup_config @@ -208,7 +225,7 @@ log "INFO" "Configuring DPDK $TAG2" make config T=$TARGET O=$TARGET > $VERBOSE 2>&1 log "INFO" "Building DPDK $TAG2. This might take a moment" -make O=$TARGET > $VERBOSE 2>&1 +make -j$DPDK_MAKE_JOBS O=$TARGET > $VERBOSE 2>&1 if [ $? -ne 0 ] then @@ -220,7 +237,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 ../..