Move the modules-extra processing to a script

This commit is contained in:
Josh Boyer 2012-09-14 12:25:07 -04:00
parent 1b9395fd03
commit 9da87a497f
2 changed files with 73 additions and 61 deletions

View File

@ -62,7 +62,7 @@ Summary: The Linux kernel
# For non-released -rc kernels, this will be appended after the rcX and
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
#
%global baserelease 1
%global baserelease 2
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
@ -563,6 +563,7 @@ Source11: genkey
Source15: merge.pl
Source16: mod-extra.list
Source17: mod-extra.sh
Source19: Makefile.release
Source20: Makefile.config
@ -1749,66 +1750,8 @@ BuildKernel() {
rm -f modinfo modnames
pushd $RPM_BUILD_ROOT/lib/modules/$KernelVer/
rm -rf modnames
find . -name "*.ko" -type f > modnames
# Look through all of the modules, and throw any that have a dependency in
# our list into the list as well.
rm -rf dep.list dep2.list
rm -rf req.list req2.list
touch dep.list req.list
cp %{SOURCE16} .
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
# check if the module we're looking at is in mod-extra too. if so
# we don't need to mark the dep as required
mod2=`basename $dep`
match2=`grep "^$mod2" mod-extra.list` ||:
if [ -n "$match2" ]
then
continue
#echo $mod2 >> notreq.list
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
# get the path for the module
modpath=`grep /$mod modnames` ||:
[ -z "$modpath" ] && continue;
echo $modpath >> dep.list
done
sort -u dep.list > dep2.list
# now move the modules into the extra/ directory
for mod in `cat dep2.list`
do
newpath=`dirname $mod | sed -e 's/kernel\//extra\//'`
mkdir -p $newpath
mv $mod $newpath
done
rm modnames dep.list dep2.list req.list req2.list
rm mod-extra.list mod-extra2.list mod-extra3.list
popd
# Call the modules-extra script to move things around
%{SOURCE17} $RPM_BUILD_ROOT/lib/modules/$KernelVer %{SOURCE16}
# remove files that will be auto generated by depmod at rpm -i time
for i in alias alias.bin builtin.bin ccwmap dep dep.bin ieee1394map inputmap isapnpmap ofmap pcimap seriomap symbols symbols.bin usbmap devname softdep
@ -2317,6 +2260,9 @@ fi
# ||----w |
# || ||
%changelog
* Tue Sep 25 2012 Josh Boyer <jwboyer@redhat.com>
- Move the modules-extra processing to a script
* Tue Sep 25 2012 Josh Boyer <jwboyer@redhat.com> - 3.6.0-0.rc7.git1.2
- Update team driver from net-next from Jiri Pirko

66
mod-extra.sh Executable file
View File

@ -0,0 +1,66 @@
#! /bin/bash
Dir=$1
List=$2
pushd $Dir
rm -rf modnames
find . -name "*.ko" -type f > modnames
# Look through all of the modules, and throw any that have a dependency in
# our list into the list as well.
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
# check if the module we're looking at is in mod-extra too. if so
# we don't need to mark the dep as required
mod2=`basename $dep`
match2=`grep "^$mod2" mod-extra.list` ||:
if [ -n "$match2" ]
then
continue
#echo $mod2 >> notreq.list
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
# get the path for the module
modpath=`grep /$mod modnames` ||:
[ -z "$modpath" ] && continue;
echo $modpath >> dep.list
done
sort -u dep.list > dep2.list
# now move the modules into the extra/ directory
for mod in `cat dep2.list`
do
newpath=`dirname $mod | sed -e 's/kernel\//extra\//'`
mkdir -p $newpath
mv $mod $newpath
done
rm modnames dep.list dep2.list req.list req2.list
rm mod-extra.list mod-extra2.list mod-extra3.list
popd