[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

lib-compare.sh script



Here's the lib-compare.sh script I've been using to detect when
symbols get added (or removed, unfortunately) from libraries.  The
usage is: lib-compare.sh old-deb new-deb.
-- 
Daniel Schepler              "Please don't disillusion me.  I
schepler@math.berkeley.edu    haven't had breakfast yet."
                                 -- Orson Scott Card
#! /bin/sh -e

listsyms() {
    nm -DC $1 | egrep '^[0-9a-f]' | cut -c18- | sort
}

if [ $# -ne 2 ]; then
    echo "Usage: $0 old-deb new-deb" 1>&2
    exit 1
fi

olddeb=$1
newdeb=$2

olddebdir=`mktemp -d`
newdebdir=`mktemp -d`
trap 'rm -rf $olddebdir $newdebdir' exit

dpkg-deb -x $olddeb $olddebdir
dpkg-deb -x $newdeb $newdebdir

olddebsyms=`mktemp`
newdebsyms=`mktemp`

trap 'rm -rf $olddebsyms $newdebsyms $olddebdir $newdebdir' exit

for f in `cd $newdebdir; find . -name lib\*.so\* -type f -print | sort`; do
    echo $f
    g=`basename $f|sed -e 's/\.so\..*$/.so\*/'`
    h=`find $olddebdir -name "$g" -type f -print`
    if [ -f $h ]; then
	listsyms $h >$olddebsyms
	listsyms $newdebdir/$f >$newdebsyms
	(diff -U 0 $olddebsyms $newdebsyms | egrep '^[-+]') || [ $? = 1 ]
    else
	echo "(new library)"
    fi
done


Reply to: