#!/bin/sh -e

[ -n "$spt_dir" ] || spt_dir=/usr/share/spt3
. $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 $chroot/.host/modules $chroot/.host/modules.list
mkdir -p $out_dir/isolinux/alt0

# Install required tools in chroot
chroot_install mar propagator

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

# generate .VERSION
echo "${ORIGIN:+$ORIGIN }${VERSION:+$VERSION }${SUITE:+$SUITE }${CODENAME:+($CODENAME)}" > $tmp_dir/.VERSION
rm -Rf $chroot/.host/{modules,.VERSION,initfs}
cp -ar "$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"

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

# copy any available OS kernels with appropriated modules bundles
MEMTEST=`ls -1 /boot/memtest* 2>/dev/null|head -1`
[ -z "\$MEMTEST" ] || cp -f /boot/\$(basename \$MEMTEST) /.isolinux/memtest

# get kernel versions
for kver in \$(ls -d /lib/modules/*); do
	kver=\${kver##*/}

	mkdir -p /.isolinux/modules

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

	# generate marfile
	/usr/bin/mkmar -r / -p /.host/modules.list -o /.isolinux/modules/modules -k \$kver

	# and create initramfs images
	gencpio /.host/initfs | gzip -c >/.isolinux/alt0/full-\$kver.cz

	# remove modules dir
	rm -rf /.isolinux/modules
done | { [ -z "${verbose}" ] && grep -v "^0x" || cat; }
__EOF__

chroot_exec "$tmp_dir/script" \
	&& Verbose 'Success: boot and initfs stuff make' \
	|| Fatal 'Failed: boot or initfs stuff make'

# move .isolinux prepare inside chroot to the outside
cp -a $chroot/.isolinux/* $out_dir/isolinux/

# garbage collection
chroot_run rm -Rf /.isolinux
rm -f $tmp_dir/script
