#!/bin/bash
# Linux Live Kit version 7

export PATH=.:./tools:../tools:/usr/sbin:/usr/bin:/sbin:/bin:/

CHANGEDIR=$(dirname $(readlink -f $0))
echo "Changing current directory to $CHANGEDIR"
CWD="$(pwd)"
cd $CHANGEDIR

. ./config || exit 1
. ./livekitlib || exit 1

# only root can continue, because only root can read all files from your system
allow_only_root

# check for mksquashfs with xz compression
if [ "$(mksquashfs 2>&1 | grep "Xdict-size")" = "" ]; then
   echo "mksquashfs not found or doesn't support -comp xz, aborting, no changes made"
   echo "you may consider installing squashfs-tools package"
   exit 1
fi

MKISOFS=$(which mkisofs)
if [ "$MKISOFS" = "" ]; then
   MKISOFS=$(which genisoimage)
fi
if [ "$MKISOFS" = "" ]; then
   echo "Cannot found mkisofs or genisoimage, stop"
   exit 3
fi

# build initramfs image
if [ "$SKIPINITRFS" = "" ]; then
   echo "Building intramfs image..."
   cd initramfs
   INITRAMFS=$(./initramfs_create)
   cd ..
fi

# create live kit filesystem (cpio archive)
rm -Rf "$LIVEKITDATA"
BOOT="$LIVEKITDATA"/"$LIVEKITNAME"/boot
mkdir -p "$BOOT"
mkdir -p "$BOOT"/../changes
mkdir -p "$BOOT"/../modules

if [ "$INITRAMFS" != "" ]; then
   mv "$INITRAMFS" $BOOT/initrfs.img
fi

cp bootfiles/* $BOOT
cat bootfiles/syslinux.cfg | sed -r "s:/boot/:/$LIVEKITNAME/boot/:" > $BOOT/syslinux.cfg
cat bootfiles/bootinst.bat | sed -r "s:/boot/:/$LIVEKITNAME/boot/:" | sed -r "s:\\\\boot\\\\:\\\\$LIVEKITNAME\\\\boot\\\\:" > $BOOT/bootinst.bat
cp $VMLINUZ $BOOT/

# create compressed 01-core.sb
COREFS=""
for i in $MKMOD; do
   if [ -d /$i ]; then
      COREFS="$COREFS /$i"
   fi
done
mksquashfs $COREFS $LIVEKITDATA/$LIVEKITNAME/01-core.$BEXT -comp xz -b 512k -keep-as-directory || exit

cd "$LIVEKITDATA"
ARCH=$(uname -m)
TARGET=/tmp

cat "$CWD/bootinfo.txt" | fgrep -v "#" | sed -r "s/mylinux/$LIVEKITNAME/" | sed -r "s/\$/
/" > readme.txt

echo cd $LIVEKITDATA '&&' $MKISOFS -o "$TARGET/$LIVEKITNAME-$ARCH.iso" -v -J -R -D -A "$LIVEKITNAME" -V "$LIVEKITNAME" \
-no-emul-boot -boot-info-table -boot-load-size 4 \
-b "$LIVEKITNAME"/boot/isolinux.bin -c "$LIVEKITNAME"/boot/isolinux.boot . \
> $TARGET/gen_"$LIVEKITNAME"_iso.sh
chmod o+x $TARGET/gen_"$LIVEKITNAME"_iso.sh

echo cd $LIVEKITDATA '&&' zip -0 -r "$TARGET/$LIVEKITNAME-$ARCH.zip" '*' \
> $TARGET/gen_"$LIVEKITNAME"_zip.sh
chmod o+x $TARGET/gen_"$LIVEKITNAME"_zip.sh

echo "-----------------------------"
echo "Finished. Find your result in $LIVEKITDATA"
echo "To build ISO, run: $TARGET/gen_iso.sh"
echo "To build ZIP, run: $TARGET/gen_zip.sh"
cd $CWD
