#!/bin/sh
test -f /.profile && . /.profile

sname=`basename $0`
bname=`echo $sname | cut -f2 -d-`
echo "$sname: Image [$name]..."

#==========================================
# setup kernel version to deal with
#------------------------------------------
VERSION=`rpm -q --qf %{VERSION}-%{RELEASE}-$bname $sname`
if [ ! -d lib/modules/$VERSION ];then
	for VERSION in $(ls -1 lib/modules);do :; done
fi

#==========================================
# move interesting stuff to /tmp
#------------------------------------------
mv lib/modules/$VERSION/updates     /tmp
mv lib/modules/$VERSION/kernel/*    /tmp
mv lib/modules/$VERSION/modules.*   /tmp

#==========================================
# remove unneeded stuff
#------------------------------------------
rm -r lib/modules/$VERSION/*

#==========================================
# insert modules.* files
#------------------------------------------
mv /tmp/modules.* /lib/modules/$VERSION/
mv /tmp/updates   /lib/modules/$VERSION/

#==========================================
# create driver-used dirs with .o's to use
#------------------------------------------
mkdir -p /tmp/usb-used
mkdir -p /tmp/scsi-used/drivers/scsi
mkdir -p /tmp/net-used/drivers/net
mkdir -p /tmp/misc-used

IFS_SAVE=$IFS
IFS=","

#==========================================
# handle USB drivers...
#------------------------------------------
test ! -z "$usbdrivers";for i in $usbdrivers;do
	path=`dirname $i`
	test -f /tmp/drivers/$i && \
	mkdir -p /tmp/usb-used/drivers/$path && \
	mv /tmp/drivers/$i /tmp/usb-used/drivers/$path
done

#==========================================
# handle SCSI drivers...
#------------------------------------------
test ! -z "$scsidrivers";for i in $scsidrivers;do
	path=`dirname $i`
	if [ $path = "." ];then
		test -f /tmp/drivers/scsi/$i && \
		mv /tmp/drivers/scsi/$i /tmp/scsi-used/drivers/scsi
	else
		test -f /tmp/drivers/scsi/$i && \
		mkdir -p /tmp/scsi-used/drivers/scsi/$path && \
		mv /tmp/drivers/scsi/$i /tmp/scsi-used/drivers/scsi/$path
	fi
done

#==========================================
# handle Network drivers...
#------------------------------------------
test ! -z "$netdrivers";for i in $netdrivers;do
	path=`dirname $i`
	if [ $path = "." ];then
		test -f /tmp/drivers/net/$i && \
		mv /tmp/drivers/net/$i /tmp/net-used/drivers/net
	else
		test -f /tmp/drivers/net/$i && \
		mkdir -p /tmp/net-used/drivers/net/$path && \
		mv /tmp/drivers/net/$i /tmp/net-used/drivers/net/$path
	fi
done

#==========================================
# handle misc drivers...
#------------------------------------------
test ! -z "$drivers";for i in $drivers;do
	path=`/usr/bin/dirname $i`
	base=`/usr/bin/basename $i`
	if [ "$base" = "*" ];then
		test -d /tmp/$path && \
		mkdir -p /tmp/misc-used/$path && \
		mv /tmp/$path/* /tmp/misc-used/$path
	else
		test -f /tmp/$i && \
		mkdir -p /tmp/misc-used/$path && \
		mv /tmp/$i /tmp/misc-used/$path
	fi
done

#==========================================
# Save all needed drivers...
#------------------------------------------
IFS=$IFS_SAVE
for root in /tmp/scsi-used /tmp/net-used /tmp/usb-used /tmp/misc-used;do
	cd $root
	for dir in `find -type d`;do
		if [ ! -d /lib/modules/$VERSION/kernel/$dir ];then
			mkdir -p /lib/modules/$VERSION/kernel/$dir 2>/dev/null
		fi
	done
done
for root in /tmp/scsi-used /tmp/net-used /tmp/usb-used /tmp/misc-used;do
	cd $root
	for file in `find -type f`;do
		path=`dirname $file`
		mv $file /lib/modules/$VERSION/kernel/$path;
	done
done

#==========================================
# Cleanup /tmp...
#------------------------------------------
rm -rf /tmp/*

#==========================================
# create common kernel files...
#------------------------------------------
cd /boot
mv vmlinux-$VERSION.gz vmlinux.gz
mv vmlinuz-$VERSION vmlinuz

exit 0
