[Pkg-mono-svn-commits] rev 3627 - mono/trunk/debian
Mirco Bauer
meebey at alioth.debian.org
Tue Apr 22 22:14:44 UTC 2008
Author: meebey
Date: 2008-04-22 22:14:43 +0000 (Tue, 22 Apr 2008)
New Revision: 3627
Modified:
mono/trunk/debian/mono-api-check
Log:
implemented support to compare .deb and .changes files
Modified: mono/trunk/debian/mono-api-check
===================================================================
--- mono/trunk/debian/mono-api-check 2008-04-15 22:43:14 UTC (rev 3626)
+++ mono/trunk/debian/mono-api-check 2008-04-22 22:14:43 UTC (rev 3627)
@@ -1,17 +1,18 @@
-#!/bin/sh
+#!/bin/bash
NAME=$(basename $0)
MONO_API_INFO1="/usr/lib/mono/1.0/mono-api-info.exe"
MONO_API_INFO2="/usr/lib/mono/2.0/mono-api-info.exe"
MONO_API_DIFF="/usr/lib/mono/1.0/mono-api-diff.exe"
-
+RUNTIME_VERSION=1
if [ "$1" = "-2" ]; then
if [ ! -x $MONO_API_INFO2 ]; then
echo "Error: $MONO_API_INFO2 does not exist, you need to install the mono-gmcs package"
exit 1
fi
MONO_API_INFO=$MONO_API_INFO2
+ RUNTIME_VERSION=2
shift
else
MONO_API_INFO=$MONO_API_INFO1
@@ -38,21 +39,109 @@
exit 1
fi
+if ! [ "$1" = "${1%.deb}" ]; then
+ DEB_TMP_DIR1=/tmp/$NAME-$$-$RANDOM
+ DEB_TMP_DIR2=/tmp/$NAME-$$-$RANDOM
+
+ mkdir $DEB_TMP_DIR1
+ if [ $? != 0 ]; then
+ echo "Error: could not create: $DEB_TMP_DIR1"
+ exit 1
+ fi
+
+ mkdir $DEB_TMP_DIR2
+ if [ $? != 0 ]; then
+ echo "Error: could not create: $DEB_TMP_DIR2"
+ exit 1
+ fi
+
+ dpkg -x $1 $DEB_TMP_DIR1
+ if [ $? != 0 ]; then
+ echo "Error: could extract: $1"
+ exit 1
+ fi
+
+ dpkg -x $2 $DEB_TMP_DIR2
+ if [ $? != 0 ]; then
+ echo "Error: could extract: $2"
+ exit 1
+ fi
+
+ DLLS=$(find $DEB_TMP_DIR1 -type f -name "*.dll")
+ for DLL1 in $DLLS; do
+ FILE=${DLL1#$DEB_TMP_DIR1/}
+ DLL2=$DEB_TMP_DIR2/$FILE
+ #echo $DLL1
+ #echo $DLL2
+
+ if [ $RUNTIME_VERSION = 2 ]; then
+ RUNTIME_VERSION_PARAM="-2"
+ fi
+ if [ $KEEP = 1 ]; then
+ KEEP_PARAM="-k"
+ fi
+ $0 $RUNTIME_VERSION_PARAM $KEEP_PARAM $DLL1 $DLL2
+ done
+
+ rm -rf $DEB_TMP_DIR1
+ rm -rf $DEB_TMP_DIR2
+
+ exit 0
+fi
+
+if ! [ "$1" = "${1%.changes}" ]; then
+ DEB_DIR1=$(dirname $1)
+ DEB_DIR2=$(dirname $2)
+ DEBS=$(grep ".deb$" $2 | cut -d ' ' -f 6)
+ for DEB in $DEBS; do
+ PKG_VERSION2=$(dpkg -I $DEB_DIR2/$DEB | grep Version: | cut -d ':' -f 2 | sed -e 's/^ *//')
+ break
+ done
+
+ DEBS=$(grep ".deb$" $1 | cut -d ' ' -f 6)
+ for DEB1 in $DEBS; do
+ PKG_NAME=$(dpkg -I $DEB_DIR1/$DEB1 | grep Package: | cut -d ':' -f 2 | sed -e 's/^ *//')
+ PKG_ARCH=$(dpkg -I $DEB_DIR1/$DEB1 | grep Architecture: | cut -d ':' -f 2 | sed -e 's/^ *//')
+ DEB2=$DEB_DIR2/${PKG_NAME}_${PKG_VERSION2}_${PKG_ARCH}.deb
+
+ if [ $RUNTIME_VERSION = 2 ]; then
+ RUNTIME_VERSION_PARAM="-2"
+ fi
+ if [ $KEEP = 1 ]; then
+ KEEP_PARAM="-k"
+ fi
+ $0 $RUNTIME_VERSION_PARAM $KEEP_PARAM $DEB1 $DEB2
+ done
+
+ exit 0
+fi
+
ASM_NAME=$(basename $1)
API_OLD=$(tempfile --suffix=_$ASM_NAME.api-old)
API_NEW=$(tempfile --suffix=_$ASM_NAME.api-new)
API_DIFF=$(tempfile --suffix=_$ASM_NAME.api-diff)
-/usr/bin/cli ${MONO_API_INFO} "$1" > ${API_OLD}
-/usr/bin/cli ${MONO_API_INFO} "$2" > ${API_NEW}
-/usr/bin/cli ${MONO_API_DIFF} ${API_OLD} ${API_NEW} > ${API_DIFF}
+/usr/bin/cli ${MONO_API_INFO} "$1" > ${API_OLD} 2> /dev/null
+if [ $? != 0 ]; then
+ echo "Error: ${MONO_API_INFO} on $1 failed!"
+ exit 1
+fi
+/usr/bin/cli ${MONO_API_INFO} "$2" > ${API_NEW} 2> /dev/null
+if [ $? != 0 ]; then
+ echo "Error: ${MONO_API_INFO} on $2 failed!"
+ exit 1
+fi
+/usr/bin/cli ${MONO_API_DIFF} ${API_OLD} ${API_NEW} > ${API_DIFF} 2> /dev/null
+if [ $? != 0 ]; then
+ echo "Error: ${MONO_API_DIFF} failed!"
+ exit 1
+fi
version_changed=0
grep -q 'Assembly version not equal: ' ${API_DIFF}
if [ $? = 0 ]; then
version_changed=1
fi
-echo $version_changed
name=$(head -n3 ${API_DIFF} | tail -n1 | sed 's;\ ;\n;g' | grep ^name | cut -d\= -f2 | sed 's;\";;g')
missing_total=$(head -n3 ${API_DIFF} | tail -n1 | sed 's;\ ;\n;g' | grep ^missing_total | cut -d\= -f2 | sed 's;\";;g')
More information about the Pkg-mono-svn-commits
mailing list