|
Josh Boyer |
0b43386 |
#! /bin/bash
|
|
Josh Boyer |
0b43386 |
|
|
Josh Boyer |
0b43386 |
Dir=$1
|
|
Josh Boyer |
0b43386 |
List=$2
|
|
Josh Boyer |
0b43386 |
|
|
Josh Boyer |
0b43386 |
pushd $Dir
|
|
Josh Boyer |
0b43386 |
rm -rf modnames
|
|
Josh Boyer |
0b43386 |
find . -name "*.ko" -type f > modnames
|
|
Josh Boyer |
0b43386 |
# Look through all of the modules, and throw any that have a dependency in
|
|
Josh Boyer |
0b43386 |
# our list into the list as well.
|
|
Josh Boyer |
0b43386 |
rm -rf dep.list dep2.list
|
|
Josh Boyer |
0b43386 |
rm -rf req.list req2.list
|
|
Josh Boyer |
0b43386 |
touch dep.list req.list
|
|
Josh Boyer |
0b43386 |
cp $2 .
|
|
Josh Boyer |
0b43386 |
|
|
Josh Boyer |
0b43386 |
for dep in `cat modnames`
|
|
Josh Boyer |
0b43386 |
do
|
|
Josh Boyer |
0b43386 |
depends=`modinfo $dep | grep depends| cut -f2 -d":" | sed -e 's/^[ \t]*//'`
|
|
Josh Boyer |
0b43386 |
[ -z "$depends" ] && continue;
|
|
Josh Boyer |
0b43386 |
for mod in `echo $depends | sed -e 's/,/ /g'`
|
|
Josh Boyer |
0b43386 |
do
|
|
Josh Boyer |
0b43386 |
match=`grep "^$mod.ko" mod-extra.list` ||:
|
|
Josh Boyer |
0b43386 |
if [ -z "$match" ]
|
|
Josh Boyer |
0b43386 |
then
|
|
Josh Boyer |
0b43386 |
continue
|
|
Josh Boyer |
0b43386 |
else
|
|
Josh Boyer |
0b43386 |
# check if the module we're looking at is in mod-extra too. if so
|
|
Josh Boyer |
0b43386 |
# we don't need to mark the dep as required
|
|
Josh Boyer |
0b43386 |
mod2=`basename $dep`
|
|
Josh Boyer |
0b43386 |
match2=`grep "^$mod2" mod-extra.list` ||:
|
|
Josh Boyer |
0b43386 |
if [ -n "$match2" ]
|
|
Josh Boyer |
0b43386 |
then
|
|
Josh Boyer |
0b43386 |
continue
|
|
Josh Boyer |
0b43386 |
#echo $mod2 >> notreq.list
|
|
Josh Boyer |
0b43386 |
else
|
|
Josh Boyer |
0b43386 |
echo $mod.ko >> req.list
|
|
Josh Boyer |
0b43386 |
fi
|
|
Josh Boyer |
0b43386 |
fi
|
|
Josh Boyer |
0b43386 |
done
|
|
Josh Boyer |
0b43386 |
done
|
|
Josh Boyer |
0b43386 |
|
|
Josh Boyer |
0b43386 |
sort -u req.list > req2.list
|
|
Josh Boyer |
0b43386 |
sort -u mod-extra.list > mod-extra2.list
|
|
Josh Boyer |
0b43386 |
join -v 1 mod-extra2.list req2.list > mod-extra3.list
|
|
Josh Boyer |
0b43386 |
|
|
Josh Boyer |
0b43386 |
for mod in `cat mod-extra3.list`
|
|
Josh Boyer |
0b43386 |
do
|
|
Josh Boyer |
0b43386 |
# get the path for the module
|
|
Josh Boyer |
0b43386 |
modpath=`grep /$mod modnames` ||:
|
|
Josh Boyer |
0b43386 |
[ -z "$modpath" ] && continue;
|
|
Josh Boyer |
0b43386 |
echo $modpath >> dep.list
|
|
Josh Boyer |
0b43386 |
done
|
|
Josh Boyer |
0b43386 |
|
|
Josh Boyer |
0b43386 |
sort -u dep.list > dep2.list
|
|
Josh Boyer |
0b43386 |
|
|
Josh Boyer |
0b43386 |
# now move the modules into the extra/ directory
|
|
Josh Boyer |
0b43386 |
for mod in `cat dep2.list`
|
|
Josh Boyer |
0b43386 |
do
|
|
Josh Boyer |
0b43386 |
newpath=`dirname $mod | sed -e 's/kernel\//extra\//'`
|
|
Josh Boyer |
0b43386 |
mkdir -p $newpath
|
|
Josh Boyer |
0b43386 |
mv $mod $newpath
|
|
Josh Boyer |
0b43386 |
done
|
|
Josh Boyer |
0b43386 |
|
|
Josh Boyer |
7e6e483 |
popd
|
|
Josh Boyer |
7e6e483 |
|
|
Josh Boyer |
7e6e483 |
# If we're signing modules, we can't leave the .mod files for the .ko files
|
|
Josh Boyer |
7e6e483 |
# we've moved in .tmp_versions/. Remove them so the Kbuild 'modules_sign'
|
|
Josh Boyer |
7e6e483 |
# target doesn't try to sign a non-existent file. This is kinda ugly, but
|
|
Josh Boyer |
7e6e483 |
# so is modules-extra.
|
|
Josh Boyer |
7e6e483 |
|
|
Josh Boyer |
7e6e483 |
for mod in `cat ${Dir}/dep2.list`
|
|
Josh Boyer |
7e6e483 |
do
|
|
Josh Boyer |
7e6e483 |
modfile=`basename $mod | sed -e 's/.ko/.mod/'`
|
|
Josh Boyer |
7e6e483 |
rm .tmp_versions/$modfile
|
|
Josh Boyer |
7e6e483 |
done
|
|
Josh Boyer |
7e6e483 |
|
|
Josh Boyer |
7e6e483 |
pushd $Dir
|
|
Josh Boyer |
0b43386 |
rm modnames dep.list dep2.list req.list req2.list
|
|
Josh Boyer |
0b43386 |
rm mod-extra.list mod-extra2.list mod-extra3.list
|
|
Josh Boyer |
0b43386 |
popd
|