#!/bin/sh

SCSIMODULES=""
NETMODULES=""
CDMODULES=""
BLOCKMODULES=""
PCMCIAMODULES=""

LIBS="ld.so libc.so libcom_err.so libe2p.so libext2fs.so libc-"
USRLIBS="libnewt"
BINS="gzip ls mke2fs ash fdisk badblocks cp rm cat"

SBIN='$1/misc/src/install/install $1/misc/src/init/init $1/misc/src/install/install2'

PATH=/sbin:/usr/sbin:$PATH

usage () {
    echo "updboot: <imagetree> <kernel-version>" 2>&1
    exit 1
}

if [ -z "$1" -o -z "$2" ]; then
    usage
fi

if [ ! -d "$1/misc/src/install" ]; then
    echo "$1 is not a valid directory" 2>&1
    usage
fi

rm -rf boot/modules
mkdir boot/modules

for n in $SCSIMODULES; do 
    cp /lib/modules/$2/scsi/$n ./boot/modules
done

for n in $NETMODULES; do 
    cp /lib/modules/$2/net/$n ./boot/modules
done

for n in $CDMODULES; do 
    cp /lib/modules/$2/cdrom/$n ./boot/modules
done
    
for n in $BLOCKMODULES; do 
    cp /lib/modules/$2/block/$n ./boot/modules
done
    
for n in $PCMCIAMODULES; do 
    ln -s /lib/modules/$2/pcmcia/$n ./boot/modules
done

# Unfortunately, this breaks modules
#strip --strip-unneeded boot/modules/*.o
    
for n in $SBIN; do
    file=`eval echo $n`
    strip $file
    cp -f $file boot/sbin
done

rm -rf boot/lib
mkdir boot/lib
for n in $LIBS; do
	cp -a /lib/${n}* boot/lib
done

for n in $USRLIBS; do
	cp -a /usr/lib/${n}* boot/lib
done

strip boot/lib/*

for n in $BINS; do
	rm -f boot/usr/bin/$n
	cp -af `which $n` boot/usr/bin
done

for n in $ZBINS; do
	rm -f boot/usr/bin/$n
	gzip -9 < `which $n` > boot/usr/bin/$n
	chmod 755 boot/usr/bin/$n
done


ln -sf /sbin/init boot/linuxrc
