| #! /bin/bash |
| |
| Dir=$1 |
| List=$2 |
| |
| pushd $Dir |
| rm -rf modnames |
| find . -name "*.ko" -type f > modnames |
| |
| |
| rm -rf dep.list dep2.list |
| rm -rf req.list req2.list |
| touch dep.list req.list |
| cp $2 . |
| |
| for dep in `cat modnames` |
| do |
| depends=`modinfo $dep | grep depends| cut -f2 -d":" | sed -e 's/^[ \t]*//'` |
| [ -z "$depends" ] && continue; |
| for mod in `echo $depends | sed -e 's/,/ /g'` |
| do |
| match=`grep "^$mod.ko" mod-extra.list` ||: |
| if [ -z "$match" ] |
| then |
| continue |
| else |
| |
| |
| mod2=`basename $dep` |
| match2=`grep "^$mod2" mod-extra.list` ||: |
| if [ -n "$match2" ] |
| then |
| continue |
| |
| else |
| echo $mod.ko >> req.list |
| fi |
| fi |
| done |
| done |
| |
| sort -u req.list > req2.list |
| sort -u mod-extra.list > mod-extra2.list |
| join -v 1 mod-extra2.list req2.list > mod-extra3.list |
| |
| for mod in `cat mod-extra3.list` |
| do |
| |
| modpath=`grep /$mod modnames` ||: |
| [ -z "$modpath" ] && continue; |
| echo $modpath >> dep.list |
| done |
| |
| sort -u dep.list > dep2.list |
| |
| |
| for mod in `cat dep2.list` |
| do |
| newpath=`dirname $mod | sed -e 's/kernel\//extra\//'` |
| mkdir -p $newpath |
| mv $mod $newpath |
| done |
| |
| popd |
| |
| |
| |
| |
| |
| |
| for mod in `cat ${Dir}/dep2.list` |
| do |
| modfile=`basename $mod | sed -e 's/.ko/.mod/'` |
| rm .tmp_versions/$modfile |
| done |
| |
| pushd $Dir |
| rm modnames dep.list dep2.list req.list req2.list |
| rm mod-extra.list mod-extra2.list mod-extra3.list |
| popd |