#!/bin/sh

MODULES="
3c509.o  8390.o   depca.o  eepro100.o  ne.o
3c59x.o  de4x5.o  epic100.o old_tulip.o tulip.o
raid0.o  raid1.o  raid5.o
"

DIR=initrd
ROOT=../../../
KERNELROOT=/tmp/updmodules.kernel-$$
MODROOT=initrd/modules
MODLIST=$PWD/../anaconda/utils/modlist
PCITABLE=$PWD/../anaconda/kudzu/pcitable
TRIMPCITABLE=$PWD/../anaconda/utils/trimpcitable

if [ $# != 2 ] ; then
	echo 'Usage: mkmodules <rpm tree> <kernel version>'
	exit 1
fi

mkdir -p $KERNELROOT $MODROOT $DIR/modules
if [ ! -f $1/kernel-BOOT-$2.alpha.rpm ]; then
	echo "kernel missing from $1"
	exit
fi

rm -rf $MODROOT/*
mkdir $MODROOT/${2}BOOT
rpm2cpio $1/kernel-BOOT-$2.alpha.rpm | (cd $KERNELROOT; cpio -id)
for I in $MODULES; do
    cp $KERNELROOT/lib/modules/*/*/$I $MODROOT/${2}BOOT
done

MODINFO=$KERNELROOT/boot/module-info-${2}BOOT
MODINFO=$PWD/../anaconda/loader/module-info

(cd $MODROOT/${2}BOOT;
/sbin/depmod -m $KERNELROOT/boot/System.map-${2}BOOT -i -e *.o | grep ':.*o' | sed 's/\.o//g')> $MODROOT/modules.dep
if grep "unresolved symbol" $MODROOT/modules.dep; then
    echo "ERROR - Unresolved symbols in $I"
else
    echo "done. "
fi

cd $MODROOT/${2}BOOT

# create the module-info file
$MODLIST --modinfo-file $MODINFO --ignore-missing --modinfo \
    $(ls *.o | sed 's/\.o$//') > ../module-info

# create the pcitable
$TRIMPCITABLE *.o < $PCITABLE > ../pcitable

cd -
cd $MODROOT

find * -name "*.o" | cpio $q -H crc -o | gzip -9 > modules.cgz
rm -rf $2*

cd -

# alpha doesn't have any extra modules to find in the instimage
rm -rf $ROOT/RedHat/instimage/modules
mkdir -p $ROOT/RedHat/instimage/modules
echo "Version 0" > $ROOT/RedHat/instimage/modules/module-info

rm -rf hdimage/modules
mkdir -p hdimage/modules
echo "Version 0" > hdimage/modules/module-info

gzip -9 < $KERNELROOT/boot/vmlinux-${2}BOOT > $ROOT/kernels/generic.gz

cp $ROOT/images/generic.img /tmp/generic.img.$$
mkdir -p /tmp/generic.$$
mount -oloop /tmp/generic.img.$$ /tmp/generic.$$
rm /tmp/generic.$$/vmlinux.gz
gzip -9 < $KERNELROOT/boot/vmlinux-${2}BOOT > /tmp/generic.$$/vmlinux.gz
df /tmp/generic.$$
umount /tmp/generic.$$
rm -rf /tmp/generic.$$
rm -f $ROOT/images/generic.img
mv /tmp/generic.img.$$ $ROOT/images/generic.img

rm -rf $KERNELROOT
