#!/bin/sh

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

LIBS="ld.so libc.so libuuid.so libcom_err.so libe2p.so libext2fs.so libc- libcrypt libnss_files libnss_dns libnsl"
USRLIBS="libnewt"
BINS="gzip ls mke2fs ash fdisk badblocks cp rm cat minlabel"

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

cp keymaps/keymaps.gz boot/etc/keymaps.gz