#!/bin/bash

###################################################################################
# UCK - Ubuntu Customization Kit                                                  #
# Copyright (C) 2006-2009 UCK Team                                                #
#                                                                                 #
# UCK is free software: you can redistribute it and/or modify                     #
# it under the terms of the GNU General Public License as published by            #
# the Free Software Foundation, either version 3 of the License, or               #
# (at your option) any later version.                                             #
#                                                                                 #
# UCK is distributed in the hope that it will be useful,                          #
# but WITHOUT ANY WARRANTY; without even the implied warranty of                  #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                   #
# GNU General Public License for more details.                                    #
#                                                                                 #
# You should have received a copy of the GNU General Public License               #
# along with UCK.  If not, see <http://www.gnu.org/licenses/>.                    #
###################################################################################

BUILD_DIR=`mktemp -d`

function failure()
{
	echo "$@"
	exit 1
}

function get_latest_kernel()
{
	set -- $(ls "$REMASTER_DIR"/boot/vmlinuz* | sed -e "s@$REMASTER_DIR/boot/@@" |\
		tr --  '-.' '\t' |\
		sort --key=2 --key=3 --key=4  --key=5 --numeric-sort | \
		tail -n1 )
	[ "$1" = "vmlinuz" ] && echo "$REMASTER_DIR/boot/$1-$2.$3.$4-$5-$6"
}

SCRIPT_DIR=`dirname "$0"`
BOOT_LANG=`cat "$SCRIPT_DIR/livecd_locale"`
REMASTER_HOME=$1
ISO_REMASTER_DIR="$REMASTER_HOME/remaster-iso"
REMASTER_DIR="$REMASTER_HOME/remaster-root"

pushd "$BUILD_DIR" || failure "Cannot change directory to $BUILD_DIR, error=$?"
bzr get http://bazaar.launchpad.net/~ubuntu-core-dev/gfxboot-theme-ubuntu/mainline gfxboot-theme-ubuntu || failure "Failed to fetch gfxboot-theme-ubuntu source, error=$?"
cd gfxboot-theme-ubuntu

LIVECD_LANGS=`cat "$SCRIPT_DIR/language_packs"`
LANGPACKS_CONCATENATED=""

for LANGPACK in $LIVECD_LANGS; do
	if [ -z "$LANGPACKS_CONCATENATED" ]; then
		LANGPACKS_CONCATENATED="$LANGPACK"
	else
		LANGPACKS_CONCATENATED="$LANGPACKS_CONCATENATED|$LANGPACK"
	fi
done

make DEFAULT_LANG="$BOOT_LANG" || failure "Failed to build gfxboot theme, error=$?"
pushd boot
#fix list of languages to contain all languages for which there are language packs on CD
ls -1 *.tr | while read i ; do echo $(basename $i .tr) ; done | grep -E "^($LANGPACKS_CONCATENATED)\>(_.*)?" >langlist
popd

cp -af boot/* "$ISO_REMASTER_DIR/isolinux/" || failure "Error while copying boot files ( " boot/* " ) to $ISO_REMASTER_DIR/isolinux/, error=$?"

popd

if [ "$BUILD_DIR" = "/" ] ; then
	failure "Trying to remove root dir"
else
	rm -rf "$BUILD_DIR"
fi

#copy kernel and initrd, in case it was changed during installation
VMLINUZ=$(get_latest_kernel)
if [ "$VMLINUZ" != "" ]; then
	INITRD="$REMASTER_DIR"/boot/initrd.img-$(echo `basename $VMLINUZ` | cut -d'-' -f 2-)
	if [ -e "$VMLINUZ" -a -e "$INITRD" ]; then
		echo "Updating kernel, kernel=$VMLINUZ, initrd=$INITRD"
		cp -f "$VMLINUZ" "$ISO_REMASTER_DIR/casper/vmlinuz"
		cp -f "$INITRD" "$ISO_REMASTER_DIR/casper/initrd.gz"
	else
		echo "Not updating kernel as initrd not present"
	fi
fi
