#!/bin/sh

spt_dir=/usr/share/mspt
. $spt_dir/init

# Prepare boot stuff for propagator:
#
# * modules archive (mar)
# * propagator image
# * kernel image

# Cleanup previous possible runs, initialize dirs
rm -Rf $out_dir/isolinux $tmp_dir/modules $chroot/.host/modules $chroot/.host/modules.list
mkdir -p $out_dir/isolinux/alt0
mkdir -p $tmp_dir/modules

# Install required software in chroot
hsh-install "$work_dir" \
	${verbose:+$verbose} \
	${quiet:+$quiet} \
	${excludedocs:+$excludedocs} \
	--save-fakeroot \
	mar propagator
# || Fatal "Failed to install mar and propagator in chroot"

# copy profile & utils
cp -a "$profile_dir/modules" $chroot/.host/modules.list
cat >"$tmp_dir/script" <<__EOF__
# temp isolinux dir
rm -rf /.isolinux /.splash
mkdir -p /.isolinux/alt0
mkdir -p /.isolinux/modules

# get kernel version
kver=\$(ls -d /lib/modules/* | tail -n1)
kver=\${kver##*/}

# kernel image
cp -a /boot/vmlinuz-\$kver /.isolinux/alt0/vmlinuz

MEMTEST=`ls -1 /boot/memtest* 2>/dev/null|head -1`
[ -z "\$MEMTEST" ] || cp -f /boot/\$(basename \$MEMTEST) /.isolinux/memtest

# generate marfile
/usr/bin/mkmar -p /.host/modules.list -o /.isolinux/modules/modules -k \$kver || exit 1
__EOF__

$hasher_dir/hsh-run --rooter --execute="$tmp_dir/script" "$work_dir" \
	&& Verbose 'Success: boot stuff make' \
	|| Fatal 'Failed: boot stuff make'

# copy bootlogo
[ ! -f "$chroot/usr/share/gfxboot/$THEME/bootlogo" ] ||
    cp -a $chroot/usr/share/gfxboot/$THEME/bootlogo $out_dir/isolinux/bootlogo

if [ -d "$chroot/etc/bootsplash/themes/current/config" -a -x "$chroot/sbin/splash" ]; then
    cat >"$tmp_dir/script" <<'__EOF__'
pushd /etc/bootsplash/themes/current/config >/dev/null
    mkdir -p /.splash
    for n in bootsplash-*.cfg; do
	name="$(basename $n)"
	X="$(echo $name | sed -e 's/.*-\(.*\)x\(.*\)\.cfg/\1/' | xargs printf '%04d')"
	Y="$(echo $name | sed -e 's/.*-\(.*\)x\(.*\)\.cfg/\2/' | xargs printf '%04d')"
	filename="$X$Y.spl"
	tmpspl="$(mktemp -d /.splash/spl.XXXXXXXXXX)"
	/sbin/splash -f -s $n > $tmpspl/bootsplash
	echo "file /bootsplash $tmpspl/bootsplash 0777 0 0" |
	    /usr/bin/gencpio - > /.isolinux/$filename
	rm -rf $tmpspl
    done
    rm -rf /.splash
popd >/dev/null
__EOF__
fi

$hasher_dir/hsh-run --rooter --execute="$tmp_dir/script" "$work_dir" \
	&& Verbose 'Success: boot logo' \
	|| Fatal 'Failed: boot logo'

# generate .VERSION
echo "${ORIGIN:+$ORIGIN }${VERSION:+$VERSION }${SUITE:+$SUITE }${CODENAME:+($CODENAME)}" > $tmp_dir/.VERSION

case "$ARCH" in
    x86_64)
	LIBDIR=/usr/lib64
	;;
    *)
	LIBDIR=/usr/lib
	;;
esac

# and create initramfs image
rm -Rf $chroot/.host/{modules,.VERSION,initfs}
cp -ar "$tmp_dir/modules" "$tmp_dir/.VERSION" "$chroot/.host"
sed -e "s|@MODDIR@|/.isolinux/modules|g;s|@DOTVERSION@|/.host/.VERSION|g;s|@LIBDIR@|$LIBDIR|g" <"$profile_dir/initfs.in" >"$chroot/.host/initfs"
echo "gencpio /.host/initfs | gzip -c >/full.cz" >"$tmp_dir/create-initramfs-script"

$hasher_dir/hsh-run --rooter --execute="$tmp_dir/create-initramfs-script" "$work_dir" \
	&& Verbose 'initfs stuff make complete.' \
	|| Fatal 'initfs stuff make failed.'

cp -a "$chroot/full.cz" "$out_dir/isolinux/alt0/"

# copy boot stuff
cp -a $chroot/.isolinux/* $out_dir/isolinux/
#mv -f $out_dir/isolinux/modules $tmp_dir/modules

# clean boot stuff
#$hasher_dir/hsh-run --rooter "$work_dir" -- /bin/rm -Rf /.isolinux /.splash \
#	&& Verbose 'Sucesss: clean of boot stuff' \
#	|| Fatal 'Failed: clean of boot stuff'
