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: