aboutsummaryrefslogtreecommitdiff
path: root/debian/scripts/misc/getabis
diff options
context:
space:
mode:
Diffstat (limited to 'debian/scripts/misc/getabis')
-rwxr-xr-xdebian/scripts/misc/getabis79
1 files changed, 79 insertions, 0 deletions
diff --git a/debian/scripts/misc/getabis b/debian/scripts/misc/getabis
new file mode 100755
index 00000000000..44602a963b0
--- /dev/null
+++ b/debian/scripts/misc/getabis
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+. debian/debian.env
+
+if [ "$#" != "2" ]; then
+ echo "Usage: $0 <release> <revision>" 1>&2
+ exit 1
+fi
+
+ver=$1
+revision=$2
+abi=$(echo $revision | awk -F. '{print $1}')
+
+verabi=$ver-$abi
+verfull=$ver-$revision
+
+src_pkg_name=$(dpkg-parsechangelog -l${DEBIAN}/changelog|grep Source|sed 's/^.*Source: //')
+
+WGET="wget --quiet -c"
+
+abidir="`pwd`/$DEBIAN/abi/$verfull"
+tmpdir="`pwd`/abi-tmp-$verfull"
+origdir="`pwd`"
+
+test -d $tmpdir || mkdir $tmpdir
+
+getall() {
+ arch=$1
+ shift
+
+ mkdir -p $abidir/$arch
+
+ for sub in $@; do
+ if [ -f $abidir/$arch/$sub ]; then
+ echo "Exists: $sub"
+ continue
+ fi
+ echo -n "Fetching $sub..."
+ filename=linux-image-${verabi}-${sub}_${verfull}_${arch}.deb
+ cd $tmpdir
+ for r in "${repo_list[@]}"
+ do
+ url="`echo $r | sed 's/linux$/'${src_pkg_name}'/'`"
+ if ! [ -f $filename ]; then
+ $WGET $url/$filename
+ fi
+ done
+ if [ "$?" = "0" ]; then
+ echo -n "extracting..."
+ dpkg-deb --extract $filename tmp
+ if [ -f tmp/boot/abi-* ]; then
+ mv tmp/boot/abi-* $abidir/$arch/$sub
+ else
+ echo -n "NO ABI FILE..."
+ fi
+ (cd tmp; find lib/modules/$verabi-$sub/kernel -name '*.ko') | \
+ sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > \
+ $abidir/$arch/$sub.modules
+ rm -rf tmp $filename
+ echo "done."
+ else
+ echo "FAILED."
+ fi
+ cd $origdir
+ done
+}
+
+# MAIN
+
+# Setup abi directory
+mkdir -p $abidir
+echo $abi > $abidir/abiname
+
+# NOTE: The flavours are hardcoded, because they may have changed from the
+# current build.
+
+. $DEBIAN/etc/getabis
+
+rmdir $tmpdir