#!/bin/sh # Script to build all kernel modules, whose source packages are # installed to /usr/src/*.tar.gz, for the running kernel. KVERS=`uname -r` if ( ! dpkg --status kernel-image-${KVERS} 2>/dev/null | egrep -q '^Status:.*installed' ) then echo "The running kernel is not installed as a Debian package." 1>&2 exit 1 fi alt_KVERS=`echo ${KVERS} | cut -f1 -d-` if ( dpkg --status kernel-headers-${KVERS} 2>/dev/null | egrep -q '^Status:.*installed' ) then header_KVERS=${KVERS} elif ( dpkg --status kernel-headers-${alt_KVERS} 2>/dev/null | egrep -q '^Status:.*installed' ) then header_KVERS=${alt_KVERS} else echo kernel-headers-${KVERS} or kernel-headers-${alt_KVERS} is required 1>&2 exit 2 fi trap 'rm -rf $tmpdir;exit 4' 2 trap 'rm -rf $tmpdir;exit 4' 15 curdir=`pwd` tmpdir=`mktemp -d` if [ $# -gt 0 ] then while test $# -gt 0 do if [ -f /usr/src/"$1".tar.gz ] then ( cd ${tmpdir} && tar xzf /usr/src/"$1".tar.gz ) elif [ -f /usr/src/"$1".tar.bz2 ] then ( cd ${tmpdir} && tar xjf /usr/src/"$1".tar.bz2 ) elif [ -d /usr/src/modules/"$1" ] then ( cd /usr/src/modules && tar cf - "$1" )|( cd ${tmpdir} && tar xpf - ) elif [ -f "$1" ] then ( cd ${tmpdir} && tar xzf "$1" ) else rm -rf ${tmpdir} echo "Illegal option: $1" 2>&1 exit 3 fi shift done else if [ -d /usr/src/modules ] then cd /usr/src tar cf - modules |( cd ${tmpdir} && tar xpf - ) fi for f in /usr/src/*.tar.gz /usr/src/*.tar.bz2 do case ${f} in /usr/src/kernel-source-*) ;; *.gz) if [ -f ${f} ] then ( cd ${tmpdir} && tar xzf ${f} ) fi ;; *.bz2) if [ -f ${f} ] then ( cd ${tmpdir} && tar xjf ${f} ) fi ;; esac done fi cd /usr/src tar chf - kernel-headers-${header_KVERS} |( cd ${tmpdir} && tar xpf - ) KSRC=${tmpdir}/kernel-headers-${header_KVERS} KDREV=`dpkg --status kernel-headers-${header_KVERS} | awk '/^Version:/{print $2}'` for d in ${tmpdir}/modules/* do echo "==== Build "`basename "$d"`" ====" cd "$d" fakeroot debian/rules kdist_clean fakeroot debian/rules KSRC=${KSRC} KVERS=${KVERS} KDREV=${KDREV} kdist_image done for f in ${tmpdir}/*.deb ${tmpdir}/modules/*.deb do test -f "$f" && mv "$f" ${curdir} done cd ${curdir} rm -rf ${tmpdir}