#!/bin/bash
ALL_KERNELS="all.kernels"
RPMS=/export/Mandrake/RPMS
ARCH=`uname -m | sed -e 's/i.86/i386/' -e 's/sparc.*/sparc/'`
# move stuff to this new "kernel" directory
if [ ! -d all.kernels ]; then
if [ -d ../all.kernels ]; then
mv ../all.kernels .
rm -rf ../all.modules
else
# make sure "all.kernels" directory exists
mkdir all.kernels
fi
fi
function create_marfile() {
marfile=$1
shift
$GIBASEDIR/mdk-stage1/mar/mar -c $marfile $*
}
function kern_version() {
if echo $1 | grep -q ^2.4; then
version=24
objects="*.o"
else
version=25
objects="*.ko"
fi
}
function create_modules() {
kernel_path=$1
kern=$2
echo "Updating modules in '`pwd`' for kernel '$kern'"
kern_version $kern
find $kernel_path/lib/modules/ -name "$objects" -exec cp -f {} . \;
if [ $version -eq 24 ]; then
/sbin/depmod-24 -F $kernel_path/boot/System.map* -e *.o | perl -pe 's/\\\n//' \
| perl -ne 's/\.o//g; s/[ \t]+/ /g; print if /: /' > modules.dep
else
cp $kernel_path/lib/modules/*/modules.dep .
perl -ni -e 's|/\S+/([^/]+)\.k?o(\.gz)|$1|g; print if /: /' modules.dep
fi
perl -pi -e 's/((plip|ppa|imm): parport)/$1 parport_pc/' modules.dep
/sbin/modinfo-$version -f '%{filename} %{description}\n' $objects | perl -lne 'print "$1\t$2" if /(.*?)\.k?o "(.*)"/' > modules.description
}
function create_modules_mar() {
kern_version $kern
if [ $version -eq 24 ]; then
echo -n "stripping $kern: "
$GIBASEDIR/kernel/strip_modules *.o 2>/dev/null
echo "done"
else
echo "don't strip on 2.6 since it breaks modules"
fi
if [ -z "$MOVE" ]; then
echo -n "packdrake $kern: "
ls $objects | packdrake -b9s "modules.cz" 400000
echo "done"
mv modules.cz ../modules.cz-$kern
fi
for i in $images; do
eval "modules=\$${i}_modules_raw"
modules_with_deps=`perl -I $GIBASEDIR/kernel $GIBASEDIR/kernel/dependencies.pl $version modules.dep $modules`
if [ -n "$MOVE" ]; then modules_with_deps="change_loop.o gzloop.o isofs.o zlib_inflate.o supermount.o $modules_with_deps"; fi
eval "create_marfile ${i}_modules.mar $modules_with_deps"
done
echo
}
function install_kernel() {
rpm=$1
ver=$(rpm -qp --qf '%{name}' $rpm 2>/dev/null | perl -pe 's/kernel(-(BOOT))?-((\.?[0-9]+){3})\.(.*)/$3-$5$2/')
[ -n "$ver" ] || return
if [ -n "$2" ]; then
[ -d $ALL_KERNELS/$ver ] && return
main_ver=$2
echo Removing previous kernel $ALL_KERNELS/$main_ver*
rm -rf $ALL_KERNELS/$main_ver*
fi
rm -rf $ALL_KERNELS/$ver
echo "Installing kernel $ver"
mkdir -p $ALL_KERNELS/$ver
rpm2cpio $rpm | (cd $ALL_KERNELS/$ver ; cpio -id)
find $ALL_KERNELS/$ver -type f -name "*.o.gz" -o -name "*.ko.gz" | xargs gunzip
# will get back when make_boot_img is called
for dir in /tftpboot /var/lib/tftpboot; do
rm -f $dir/{vmlinuz,network.rdz,all.rdz}
done
}
[ -e $ALL_KERNELS/.main ] && main=$(cat $ALL_KERNELS/.main)
if [ "$1" = "--move" ]; then
MOVE=1
shift
fi
if [ "$ARCH" == "ia64" ] || [ "$ARCH" == "ppc" ]; then
name=kernel
else
name=kernel-BOOT
fi
if [ -n "$1" ]; then
#- allow specifying a kernel file on commandline (./update_kernel /RPMS/kernel-2.4.22.10mdk-1-1mdk.i586.rpm)
install_kernel $1
else
install_kernel $RPMS/kernel-BOOT-2.4*.rpm 2.4
install_kernel $RPMS/kernel-BOOT-2.6*.rpm 2.6
fi
[ -n "$main" -a -e $ALL_KERNELS/$main ] || {
cd $ALL_KERNELS
main=$(echo 2.6* | sed 's/.* //')
[ -n "$main" ] || main=$(echo 2.4* | sed 's/.* //')
echo "Choosing $main"
echo $main > .main
cd ..
}
if [ "$ARCH" == "i386" ]; then
for i in $ALL_KERNELS/*/boot/vmlinuz*; do
#disable any existing resolution!!!
/usr/sbin/rdev -v $i 65535 #788 #785
done
fi
GIBASEDIR=`pwd`/..
rm -rf all.modules ; mkdir all.modules
for i in $ALL_KERNELS/*; do
kern=`basename $i`
(
mkdir all.modules/$kern
cd all.modules/$kern
create_modules ../../$i $kern
) || exit 1
done
cp -f all.modules/$main/modules.description .
l=`perl modules.pl images` || exit 1
eval $l
for i in $ALL_KERNELS/*; do
kern=`basename $i`
(
cd all.modules/$kern
if [ "$kern" = "$main" ]; then
create_modules_mar ../../$i $kern
else
echo "$kern ($main)"
create_modules_mar ../../$i $kern 2>/dev/null
fi
) || exit 1
done
./check_mar.pl
b8c49bca04c97a22cb4e2eeef36'>refslogtreecommitdiffstats
|