lkundrak / rpms / kernel

Forked from rpms/kernel 4 years ago
Clone
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