#!/bin/sh

. ./scripts/parse-config

if [ -z "$1" ] ; then
	echo
	echo "Usage: ./scripts/Create-Isolinux  source | arch"
	echo
	echo "Type './scripts/Help Create-CD' for details."
	echo
	exit 1
fi

if [ "$1" != "source" -a ! -d arch-conf/"$1" ] ; then
	echo
	echo "Don't know how to create cd image '$1'."
	echo
	exit 1
fi

# Create cd root
#
rm -rf src/cd-root-$1
mkdir -p src/cd-root-$1

# Configure the mkisofs call
#
cmd="mkisofs -A 'dRock Linux $rockver' -d -f -l -J -L"
cmd="$cmd -r -T -v -o rock-$1-$rockver.iso"
cmd="$cmd -P 'The ROCK Projects Workgroup"
cmd="$cmd <http://www.rock-projects.com/>'"
cmd="$cmd -p 'Clifford Wolf <http://www.clifford.at/>'"
#if [ -f rock-$1-$rockver/isolinux/isolinux.bin ] ; then
	cmd="$cmd -b isolinux/isolinux.bin"
	cmd="$cmd -c isolinux/boot.cat"
	cmd="$cmd -no-emul-boot -boot-load-size=4 -boot-info-table"
#elif [ -f rock-$1-$rockver/floppies/kombo-disk.img ] ; then
#	cmd="$cmd -b rock-$1-$rockver/floppies/kombo-disk.img"
#	cmd="$cmd -c rock-$1-$rockver/floppies/boot.catalog"
#fi
cmd="$cmd src/cd-root-$1"

if [ "$1" = source ] ; then
	./scripts/Create-SrcTar
	for x in rock-src-$rockver.tar.bz2 pkg-archive ext-archive \
	         opt-archive ext-config Documentation COPYING README \
		 README.dRock TODO.dRock ChangeLog.dRock
	do cp -rs $base/$x src/cd-root-$1/$x ; done
else
	for x in rock-src-$rockver.tar.bz2 Documentation   \
	         rock-$1-$rockver COPYING README \
		 README.dRock TODO.dRock ChangeLog.dRock
	do cp -rs $base/$x src/cd-root-$1/$x ; done

	find src/cd-root-$1 -follow -name 'rock-debug.tar.bz2'   -o \
	     -name CONFIG-FAQ.src -o -name rock-debug -name logs -o \
	     -name buildit.sh -o -name '*~' | xargs rm -rfv

	# DOS Utilities
	#
	case $arch_machine in
	    i?86)
		set -e

		# isolinux
		#
		echo "Creating isolinux dist ..."
		mkdir -p src/cd-root-$1/isolinux
		cd src/cd-root-$1/isolinux
		tar xIf $base/opt-archive/syslinux-1.62.tar.bz2
		cd syslinux-1.62; make >/dev/null
		cp isolinux.bin isolinux-debug.bin ppmtolss16 sample/syslogo.lss .. 
		cd .. ; rm -rf syslinux-1.62
		
		echo "Creating ramdisk for cd-image"
#		cp $base/subdists/install-disks/root-kombo.img ramdisk.gz
		mkdir -p inst-disks; cd inst-disks
		mkdir -p loopmnt
		tar xIf $base/rock-$arch-$rockver/base-pkgs/install-disks.tar.bz2 \
		    --same-owner --same-permissions usr/lib/
		dd if=/dev/zero of=buffer bs=1k count=4096
		tmpdev=x
		for x in /dev/loop/* ; do
		    if [ $tmpdev = x ]; then
			echo "Trying to use loopback device $x ... "
			if losetup $x buffer; then tmpdev=$x; fi
		    fi
		done
		if [ $tmpdev = x ]; then
		    echo "No free loopback device found. Abort"; exit 1
		fi
		echo "Using loopback device $tmpdev."
		trap "losetup -d $tmpdev" TERM QUIT ABRT KILL SEGV
		mke2fs -q -m0 $tmpdev 4096; mount $tmpdev loopmnt
    		mv usr/lib/boot-disk/{vmlinuz,System.map} ..
		rm -f usr/lib/install-disk/bin/*.static
		cp -a usr/lib/install-disk/* loopmnt; umount loopmnt
		dd if=$tmpdev bs=1k count=4096 | gzip -9 > ../ramdisk.gz
		losetup -d $tmpdev

		echo "Creating rootfs for cd-image"
		cp usr/lib/install-disk/sbin/init .
		mv usr/lib/install-disk/* ../..
		cat init | \
		    sed 's:-o remount,rw:-n -o remount,ro:g' \
		    > ../../sbin/init
		cd .. ; rm -rf inst-disks
		ln -sf ../rock-$1-$rockver ../src/rock-$1-$rockver

		echo "Creating config file"
		cat > isolinux.cfg <<EOF
TIMEOUT 100
PROMPT 1
DISPLAY boot.msg
DEFAULT cdrom

LABEL cdrom
 KERNEL vmlinuz
 APPEND root=/dev/cdroms/cdrom0 devfs=nocompat ro

LABEL initrd
 KERNEL vmlinuz
 APPEND root=/dev/rd/0 devfs=nocompat initrd=ramdisk.gz
 
LABEL next_drive
 LOCALBOOT -1

LABEL hd0
 LOCALBOOT 0x80
EOF
		echo "Creating boot message file"
		cat > boot.msg <<EOF
                             Welcome to dRock

Please choose which installation system to boot.
	cdrom	- mounts cdrom drive as root (default after 10sec)
	initrd	- mounts a ramdisk as root

EOF
		cd $base
		echo "Copying additional tools"

		# rawrite
		#
		mkdir -p src/cd-root-$1/dosutils/rawrite3
		cd src/cd-root-$1/dosutils/rawrite3
		unzip -q $base/opt-archive/rawrite3.zip

		# fips
		#
		mkdir -p ../fips20 ; cd ../fips20
		unzip -q $base/opt-archive/fips20.zip
		rm -rf source restorrb
		chmod -x -R *

		# loadlin
		#
		mkdir -p ../lodlin16 ; cd ../lodlin16
		tar --use-compress-program=bzip2 -xvf \
			$base/opt-archive/lodlin16.tbz2 >/dev/null
		rm -rf src
		chmod -x -R *

		cd $base ; set +e ;;
	esac
fi

# Do it!
#
cd $base
echo "$cmd" ; eval "$cmd"
rm -rf src/cd-root-$1
