#!/bin/sh -e

[ -n "$spt_dir" ] || spt_dir=/usr/share/spt3
. $spt_dir/init

ISOLINUXCFG=$out_dir/isolinux/isolinux.cfg
if [ -n "$debug" ]; then
	ISOLINUXBIN=isolinux-debug.bin
else
	ISOLINUXBIN=isolinux.bin
fi

# syslinux stuff
if [ -f $profile_dir/isolinux.cfg.in ]; then
	# sanity check
	[ -d "$(dirname $ISOLINUXCFG)" ] ||
		Fatal 'isolinux directory not found: did you forgot to do spt-boot-*?'

	cp $profile_dir/isolinux.cfg.in $ISOLINUXCFG

	# load isolinux directory from $out_dir into $chroot
	chroot_run mkdir -p /.isolinux
	chroot_run chmod 0777 /.isolinux
	mv $out_dir/isolinux/* $chroot/.isolinux

	# install syslinux stuff
	chroot_install syslinux

	cat >"$tmp_dir/script" <<__EOF__
#!/bin/sh -e
cp /usr/lib/syslinux/$ISOLINUXBIN /.isolinux
isolinux-config --base /isolinux /.isolinux/$ISOLINUXBIN
#cp /usr/lib/syslinux/menu.c32 /.isolinux
__EOF__
	chroot_exec "$tmp_dir/script"

	# unload isolinux from $chroot back to $out_dir
	cp -a $chroot/.isolinux/* $out_dir/isolinux/
	chroot_run rm -Rf /.isolinux || rm -Rf $chroot/.isolinux
fi
[ -f $profile_dir/syslinux.cfg.in ] && cp $profile_dir/syslinux.cfg.in $out_dir/isolinux/syslinux.cfg

Verbose 'Adding linux kernels to isolinux.cfg'

first=1
for name in $out_dir/isolinux/alt0/vmlinuz-*; do
	# Check if such files really exist; if there are none, we'll get "...vmlinuz-*"
	[ -r "$name" ] || continue 

	name=${name##*/vmlinuz-}
	isolinuxname=$(echo $name | sed s/[.-]//g)

	mv $out_dir/isolinux/alt0/vmlinuz-$name $out_dir/isolinux/alt0/vmlinuz$isolinuxname
	mv $out_dir/isolinux/alt0/full-$name.cz $out_dir/isolinux/alt0/full$isolinuxname.cz

	# Prepare links to default image to boot (first one)
	if [ "$first" == 1 ]; then
		ln -s vmlinuz$isolinuxname $out_dir/isolinux/alt0/vmlinuz
		ln -s full$isolinuxname.cz $out_dir/isolinux/alt0/full.cz
		first=0
	fi

	echo -e "\nlabel $name" >>$ISOLINUXCFG
	echo -e "\tkernel alt0/vmlinuz$isolinuxname" >>$ISOLINUXCFG
	echo -e "\tappend initrd=alt0/full$isolinuxname.cz live fastboot automatic=method:cdrom stagename=$OUT/$STAGENAME showopts\n" >>$ISOLINUXCFG
	Verbose "Added kernel \"$name\" as \"$isolinuxname\" to isolinux.cfg"
done

# Determine sort stuff
if [ -n "$MKISOFS_SORT" ]; then
	mkisofs_add="-sort $MKISOFS_SORT"
elif [ -r $profile_dir/mkisofs.sort ]; then
	mkisofs_add="-sort $profile_dir/mkisofs.sort"
else
	mkisofs_add=
fi

Verbose 'Making ISO image...'

mkdir -p $out_dir/.disk
echo "${PUBLISHER:+$PUBLISHER }${VERSION:+$VERSION }${LABEL:+$LABEL }${CODENAME:+($CODENAME)}" > $out_dir/.disk/info
CDFILENAME=${isoname:-$CDFILENAME}
CDFILENAME=${CDFILENAME:-livecd.iso}

mkisofs -b isolinux/$ISOLINUXBIN \
	-c isolinux/boot.cat \
	-copyright "LICENSE.html" \
	--volset "`cat $out_dir/.disk/info`" \
	-V "$SUITE" \
	-publisher "$PUBLISHER" \
	-p `id -n -u` \
	-sysid "$ORIGIN" \
	-no-emul-boot \
	-boot-info-table \
	-boot-load-size 4 \
	-J -l -r -f \
	$verbose $quiet $mkisofs_add -o $work_dir/$CDFILENAME $out_dir
