#!/bin/sh

## live-build(7) - System Build Scripts
## Copyright (C) 2006-2011 Daniel Baumann <daniel@debian.org>
##
## live-build comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
## This is free software, and you are welcome to redistribute it
## under certain conditions; see COPYING for details.


set -e

# Including common functions
. "${LB_BASE:-/usr/share/live/build}"/scripts/build.sh

# Setting static variables
DESCRIPTION="$(Echo 'installs syslinux into binary')"
HELP=""
USAGE="${PROGRAM} [--force]"

Arguments "${@}"

# Reading configuration files
Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source
Set_defaults

if [ "${LB_BOOTLOADER}" != "syslinux" ]
then
	exit 0
fi

Echo_message "Begin installing syslinux..."

# Requiring stage file
Require_stagefile .stage/config .stage/bootstrap

# Checking stage file
Check_stagefile .stage/binary_syslinux

# Checking syslinux templates
Check_templates syslinux

# Checking lock file
Check_lockfile .lock

# Creating lock file
Create_lockfile .lock

# Check architecture
Check_architecture amd64 i386
Check_crossarchitecture

# Checking depends
Check_package chroot/usr/bin/syslinux syslinux

# Restoring cache
Restore_cache cache/packages_binary

# Installing depends
Install_package

# Local functions
Utf8_to_latin1 ()
{
	VALUE="${1}"

	echo "${VALUE}" | iconv -f utf-8 -t latin1
}

Syslinux_memtest_entry ()
{
	LABEL="${1}"
	MENULABEL="$(Utf8_to_latin1 "${2}")"
	KERNEL="${3}"

	MEMTEST="${MEMTEST}\nlabel ${LABEL}\n"

	# Write the menu label if the syslinux menu is being use
	MEMTEST="${MEMTEST}\tmenu label ${MENULABEL}\n"
	MEMTEST="${MEMTEST}\tkernel ${LIVE_KERNEL_PATH}/${KERNEL}\n"
	MEMTEST="$(/bin/echo ${MEMTEST} | sed -e 's|//|/|g')"
}

Syslinux_live_entry ()
{
	LABEL="${1}"
	MENULABEL="$(Utf8_to_latin1 "${2}")"
	MENULABEL="${2}"
	KERNEL="${3}"
	INITRD="${4}"
	APPEND="${5}"

	# Boot in quiet mode where appropriate
	QAPPEND="quiet"

	case "${LB_BINARY_IMAGES}" in
		iso*|usb*)
			if [ "${LABEL}" = "live" ]
			then
				# Do not number the default kernel / initrd files.
				_NUMBER=""
			else
				# Use order of flavours in LB_LINUX_FLAVOURS for numbering.
				_NUMBER="$(echo ${LB_LINUX_FLAVOURS} | awk -v FLAVOUR="${FLAVOUR}" 'BEGIN{RS=" "} {if($1 == FLAVOUR) print NR}')"
			fi

			if [ -e ${KERNEL_PATH}/${KERNEL} ]
			then
				# Note: ISOLINUX will not find the kernel if the name ends in ".img".
				mv ${KERNEL_PATH}/${KERNEL} ${KERNEL_PATH}/vmlinuz${_NUMBER}
			fi

			if [ -e ${KERNEL_PATH}/${INITRD} ]
			then
				mv ${KERNEL_PATH}/${INITRD} ${KERNEL_PATH}/initrd${_NUMBER}.img
			fi

			KERNEL=vmlinuz${_NUMBER}
			INITRD=initrd${_NUMBER}.img
		;;
	esac

	# Regular kernel
	LINUX_LIVE="${LINUX_LIVE}\nlabel ${LABEL}\n"

	# Write the menu label if the syslinux menu is being use
	if [ -n "${MENULABEL}" ]
	then
		LINUX_LIVE="${LINUX_LIVE}\tmenu label ${MENULABEL}\n"
	fi

	LINUX_LIVE="${LINUX_LIVE}\tkernel ${LIVE_KERNEL_PATH}/${KERNEL}\n"
	LINUX_LIVE="${LINUX_LIVE}\tappend initrd=${LIVE_KERNEL_PATH}/${INITRD} boot=${INITFS} config ${LB_BOOTAPPEND_LIVE} ${APPEND} ${QAPPEND}\n"

	# Failsafe kernel
	LINUX_LIVE="${LINUX_LIVE}\nlabel ${LABEL}failsafe\n"

	# Write the menu label if the syslinux menu is being use
	if [ -n "${MENULABEL}" ]
	then
		LINUX_LIVE="${LINUX_LIVE}\tmenu label ${MENULABEL} (failsafe)\n"
	fi

	LINUX_LIVE="${LINUX_LIVE}\tkernel ${LIVE_KERNEL_PATH}/${KERNEL}\n"
	LINUX_LIVE="${LINUX_LIVE}\tappend initrd=${LIVE_KERNEL_PATH}/${INITRD} boot=${INITFS} config ${LB_BOOTAPPEND_LIVE} ${APPEND} ${FAILSAFE}\n"
}

Syslinux_install_entry ()
{
	LABEL="${1}"
	KERNEL="${2}"
	INITRD="${3}"
	APPEND="${4}"

	# Boot in quiet mode where appropriate
	QAPPEND="quiet"

	for TYPE in Install Expert Rescue Auto
	do
		case "${TYPE}" in
			Install)
				TAPPEND="${APPEND} ${QAPPEND}"
				;;

			Expert)
				TAPPEND="priority=low ${APPEND}"
				;;

			Rescue)
				TAPPEND="rescue/enable=true ${APPEND} ${QAPPEND}"
				;;

			Auto)
				TAPPEND="auto=true priority=critical ${APPEND} ${QAPPEND}"
				;;
		esac

		case "${LABEL}" in
			Text)
				TYPE_SUFFIX=""
				;;
			GUI)
				TYPE_SUFFIX="gui"
				;;
		esac

		LINUX_INSTALL="${LINUX_INSTALL}\nlabel $(echo "${TYPE}" | tr A-Z a-z)${TYPE_SUFFIX}\n"
		LINUX_INSTALL="${LINUX_INSTALL}\tmenu label ${LABEL} ${TYPE}\n"
		LINUX_INSTALL="${LINUX_INSTALL}\tkernel ${LIVE_INSTALL_KERNEL_PATH}/${KERNEL}\n"
		LINUX_INSTALL="${LINUX_INSTALL}\tappend initrd=${LIVE_INSTALL_KERNEL_PATH}/${INITRD} ${TAPPEND} ${LB_BOOTAPPEND_INSTALL}\n"
	done
}

Copy_syslinux_templates ()
{
	cp -r "${TEMPLATES}"/common/* ${SCREEN_PATH}

	if [ "${LB_SYSLINUX_MENU}" = "false" ]
	then
		cp -r "${TEMPLATES}"/normal/* ${SCREEN_PATH}
	else
		cp -r "${TEMPLATES}"/menu/* ${SCREEN_PATH}

		case "${LB_SYSLINUX_MENU}" in
			gfxboot)
				MENUMODULE="gfxboot.c32"
				;;

			menu)
				MENUMODULE="menu.c32"
				;;

			vesamenu)
				MENUMODULE="vesamenu.c32"
				;;

			*)
				if [ -z "${LB_SYSLINUX_CFG}" ]
				then
					MENUMODULE=$(grep 'menu.c32' ${TEMPLATES}/menu/syslinux.cfg | sed 's|default\s*.*/\(.*menu.c32\)$|\1|g')
				else
					LB_SYSLINUX_CFG="${LB_SYSLINUX_CFG:-${TEMPLATES}/menu/syslinux.cfg}"
				fi
				;;
		esac

		case "${LB_BUILD_WITH_CHROOT}" in
			true)
				cp chroot/usr/lib/syslinux/"${MENUMODULE}" ${DATA_PATH}
				;;
			false)
				cp /usr/lib/syslinux/"${MENUMODULE}" ${DATA_PATH}
				;;
		esac
	fi

	if ls "${TEMPLATES}/${LB_LANGUAGE}"/* > /dev/null 2>&1
	then
		cp -r "${TEMPLATES}"/"${LB_LANGUAGE}"/* ${SCREEN_PATH}
	else
		if ls "${TEMPLATES}"/en/* > /dev/null 2>&1
		then
			cp -r "${TEMPLATES}"/en/* ${SCREEN_PATH}
		fi
	fi

	if ls ${SCREEN_PATH}/*.live > /dev/null 2>&1
	then
		for FILE in ${SCREEN_PATH}/*.live
		do
			mv ${FILE} $(dirname ${FILE})/$(basename ${FILE} .live)
		done
	fi

	if [ "${LB_DEBIAN_INSTALLER}" != "false" ]
	then
		if ls ${SCREEN_PATH}/*.install > /dev/null 2>&1
		then
			for FILE in ${SCREEN_PATH}/*.install
			do
				mv ${FILE} $(dirname ${FILE})/$(basename ${FILE} .install)
			done
		fi

		case "${LB_ARCHITECTURE}" in
			amd64|i386|powerpc)
				if ls ${SCREEN_PATH}/*.install.g-i > /dev/null 2>&1
				then
					for FILE in ${SCREEN_PATH}/*.install.g-i
					do
						mv ${FILE} $(dirname ${FILE})/$(basename ${FILE} .install.g-i)
					done
				fi
				;;

			*)
				rm -f ${SCREEN_PATH}/*.install.g-i
				;;
		esac
	else
		rm -f ${SCREEN_PATH}/*.install*
	fi

	if [ "${LB_SYSLINUX_MENU}" != "false" ]
	then
		rm -f ${DATA_PATH}/boot.txt
	fi

	# Copying custom splash screen
	if [ "${LB_SYSLINUX_SPLASH}" = "none" ]
	then
		# no splash screen
		SPLASH=""
		rm -f ${SCREEN_PATH}/splash.rle
		rm -f ${DATA_PATH}/splash.png
	else
		if [ "${LB_SYSLINUX_MENU}" = "false" ]
		then
			SPLASH="${LIVE_DATA_PATH}/splash.rle"
		else
			SPLASH="${LIVE_DATA_PATH}/splash.png"
		fi

		if [ -n "${LB_SYSLINUX_SPLASH}" ]
		then
			if [ ! -e "${LB_SYSLINUX_SPLASH}" ]
			then
				Echo_error "%s doen't exist" "${LB_SYSLINUX_SPLASH}"
				exit 1
			else
				rm -f ${SCREEN_PATH}/splash.rle
				rm -f ${DATA_PATH}/splash.png
				cp -f "${LB_SYSLINUX_SPLASH}" ${DATA_PATH}/$(basename ${SPLASH})
			fi
		fi
	fi
}

Configure_syslinux_templates ()
{
	templates="$(find ${SYSLINUX_PATH} -type f -name '*.cfg' -o -name '*.txt')"

	for template_file in ${templates}
	do
		sed -i -e "s|{\$LINUX_LIVE}|${LINUX_LIVE}|" \
		       -e "s|{\$LINUX_INSTALL}|${LINUX_INSTALL}|" \
		       -e "s|{\$MEMTEST}|${MEMTEST}|" \
		       -e "s|{\$LIVE_SCREEN_PATH}|${LIVE_SCREEN_PATH}|" \
		       -e "s|{\$LIVE_DATA_PATH}|${LIVE_DATA_PATH}|" \
		       -e "s|{\$LIVE_KERNEL_PATH}|${LIVE_KERNEL_PATH}|" \
		       -e "s|{\$SPLASH}|${SPLASH}|" \
		       -e "s|{\$LB_DISTRIBUTION}|${LB_DISTRIBUTION}|" \
		       -e "s|{\$LB_DATE}|$(date +%Y%m%d)|" \
		       -e "s|{\$LB_MEDIA}|${MEDIA}|" \
		       -e "s|{\$LB_VERSION}|${VERSION}|" \
		       -e "s|{\$LB_SYSLINUX_TIMEOUT}|${LB_SYSLINUX_TIMEOUT}0|" \
		$template_file
	done

	case "${LB_BINARY_IMAGES}" in
		usb*)
			if [ -f "${SYSLINUX_PATH}/exithelp.cfg" ]
			then
				sed -i -e "s|config isolinux.cfg|config syslinux.cfg|" "${SYSLINUX_PATH}"/exithelp.cfg
			fi
			;;

		net)
			if [ -f "${SCREEN_PATH}/exithelp.cfg" ]
			then
				sed -i -e "s|config isolinux.cfg|config ${LIVE_KERNEL_PATH}/pxelinux.cfg/default|" "${SCREEN_PATH}"/exithelp.cfg
			fi
			;;
	esac
}

# Setting up common variables
case "${LB_INITRAMFS}" in
	casper)
		INITFS="casper"
		;;

	live-initramfs|live-boot)
		INITFS="live"
		;;
esac

# Setting boot method specific variables
case "${LB_BINARY_IMAGES}" in
	iso*)
		SYSLINUX_PATH="binary/isolinux"
		KERNEL_PATH="binary/${INITFS}"
		SCREEN_PATH="${SYSLINUX_PATH}"
		DATA_PATH="${SCREEN_PATH}"
		LIVE_KERNEL_PATH="/${INITFS}"
		LIVE_INSTALL_KERNEL_PATH="/install"
		LIVE_SCREEN_PATH="/isolinux"
		LIVE_DATA_PATH="${LIVE_SCREEN_PATH}"
		MEDIA="CD-ROM"
		;;

	net)
		SYSLINUX_PATH="tftpboot"
		KERNEL_PATH="${SYSLINUX_PATH}/debian-live/${LB_ARCHITECTURE}"
		SCREEN_PATH="${SYSLINUX_PATH}/debian-live/${LB_ARCHITECTURE}/boot-screens"
		DATA_PATH="${SCREEN_PATH}"
		LIVE_KERNEL_PATH="debian-live/${LB_ARCHITECTURE}"
		LIVE_INSTALL_KERNEL_PATH="debian-install/${LB_ARCHITECTURE}"
		LIVE_SCREEN_PATH="debian-live/${LB_ARCHITECTURE}/boot-screens"
		LIVE_DATA_PATH="${LIVE_SCREEN_PATH}"
		MEDIA="netboot"
		;;

	usb*|tar)
		SYSLINUX_PATH="binary/syslinux"
		KERNEL_PATH="binary/${INITFS}"
		SCREEN_PATH="${SYSLINUX_PATH}"
		DATA_PATH="${SCREEN_PATH}"
		LIVE_KERNEL_PATH="/${INITFS}"
		LIVE_INSTALL_KERNEL_PATH="/install"
		LIVE_SCREEN_PATH="/syslinux"
		LIVE_DATA_PATH="${LIVE_SCREEN_PATH}"
		MEDIA="hd-media"
		;;
esac

Check_multiarchitecture

# Creating directories
mkdir -p "${KERNEL_PATH}"
mkdir -p "${SCREEN_PATH}"
mkdir -p "${DATA_PATH}"

# Setting boot parameters
case "${LB_ENCRYPTION}" in
	""|false)
		;;
	*)
		LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} encryption=${LB_ENCRYPTION}"
		;;
esac

if [ -n "${LB_USERNAME}" ]
then
	case "${LB_INITRAMFS}" in
		casper)
			LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} username=${LB_USERNAME}"
			;;

		live-initramfs|live-boot)
			if [ "${LB_USERNAME}" != "user" ]
			then
				LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} username=${LB_USERNAME}"
			fi
			;;
	esac
fi

if [ -n "${LB_HOSTNAME}" ]
then
	case "${LB_INITRAMFS}" in
		casper)
			LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} hostname=${LB_HOSTNAME}"
			;;

		live-initramfs|live-boot)
			if [ "${LB_HOSTNAME}" != "debian" ]
			then
				LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} hostname=${LB_HOSTNAME}"
			fi
			;;
	esac
fi

if [ "${LB_UNION_FILESYSTEM}" != "aufs" ]
then
	LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} union=${LB_UNION_FILESYSTEM}"
fi

if [ "${LB_EXPOSED_ROOT}" != "false" ]
then
	LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} exposedroot"
fi

if [ "${LB_BINARY_IMAGES}" = "net" ]
then
	case "${LB_NET_ROOT_FILESYSTEM}" in
		nfs)
			LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} netboot=nfs nfsroot=${LB_NET_ROOT_SERVER}:${LB_NET_ROOT_PATH}"
			;;

		cifs)
			LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} netboot=cifs nfsroot=//${LB_NET_ROOT_SERVER}${LB_NET_ROOT_PATH}"
			;;

		*)
			Echo_error "Unsupported net filesystem"
			exit 1
			;;
	esac

	if [ -n "${LB_NET_ROOT_MOUNTOPTIONS}" ]
	then
		LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} nfsopts=${LB_NET_ROOT_MOUNTOPTIONS}"
	fi
fi

if [ -n "${LB_NET_COW_PATH}" ]
then
	case "${LB_NET_COW_FILESYSTEM}" in
		nfs)
			if [ -n "${LB_NET_COW_MOUNTOPTIONS}" ]
			then
				LB_NET_COW_MOUNTOPTIONS=",${LB_NET_COW_MOUNTOPTIONS}"
			fi

			LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} nfscow=${LB_NET_COW_SERVER}:${LB_NET_COW_PATH}${LB_NET_COW_MOUNTOPTIONS}"
			;;

		*)
			Echo_error "Unsupported net filesystem"
			exit 1
			;;
	esac
fi

LB_BOOTAPPEND_LIVE="$(echo ${LB_BOOTAPPEND_LIVE} | sed -e 's|  ||')"

# Parameters are listed at: linux/Documentation/kernel-parameters.txt
FAILSAFE="noapic noapm nodma nomce nolapic nomodeset nosmp vga=normal"

# Moving kernels into place
if [ "binary/${INITFS}" != "${KERNEL_PATH}" ]
then
	mv binary/${INITFS}/vmlinuz* ${KERNEL_PATH}
	mv binary/${INITFS}/initrd* ${KERNEL_PATH}

	if [ "${LB_MEMTEST}" != "false" ] && [ "${LB_MEMTEST}" != "none" ]
	then
		mv binary/${INITFS}/memtest ${KERNEL_PATH}
	fi
fi

# Default entries
DEFAULT_FLAVOUR="$(echo ${LB_LINUX_FLAVOURS} | awk '{ print $1 }')"
DEFAULT_KERNEL="$(basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR})"
DEFAULT_INITRD="initrd.img-$(echo ${DEFAULT_KERNEL} | sed -e 's|vmlinuz-||')"

Syslinux_live_entry "live" "${LB_SYSLINUX_MENU_LIVE_ENTRY}" "${DEFAULT_KERNEL}" "${DEFAULT_INITRD}"

if [ "$(echo ${LB_LINUX_FLAVOURS} | wc -w)" -gt "1" ]
then
	for FLAVOUR in ${LB_LINUX_FLAVOURS}
	do
		if [ "${FLAVOUR}" != "${DEFAULT_FLAVOUR}" ]
		then
			FLAVOUR_KERNEL="$(basename chroot/boot/vmlinuz-*${FLAVOUR})"
			FLAVOUR_INITRD="initrd.img-$(echo ${FLAVOUR_KERNEL} | sed -e 's|vmlinuz-||')"
			Syslinux_live_entry "live-${FLAVOUR}" "${LB_SYSLINUX_MENU_LIVE_ENTRY} ${FLAVOUR}" "${FLAVOUR_KERNEL}" "${FLAVOUR_INITRD}"
		fi
	done
fi

# Only needed for non-vesamenu, non-gfxboot syslinux
case "${LB_SYSLINUX_MENU}" in
	false|menu)
		# Adding syslinux hardcoded default label entry
		Syslinux_live_entry "linux" "" "${DEFAULT_KERNEL}" "${DEFAULT_INITRD}"
		;;
esac

# Assembling debian-installer configuration
if [ "${LB_DEBIAN_INSTALLER}" != "false" ]
then
	VMLINUZ_DI="vmlinuz"
	INITRD_DI="initrd.gz"
	APPEND_DI="vga=normal"

	VMLINUZ_GI="gtk/vmlinuz"
	INITRD_GI="gtk/initrd.gz"
	APPEND_GI="video=vesa:ywrap,mtrr vga=788"

	if [ -f "binary/${LIVE_INSTALL_KERNEL_PATH}/${VMLINUZ_DI}" ] && [ -f "binary/${LIVE_INSTALL_KERNEL_PATH}/${INITRD_DI}" ]
	then
		Syslinux_install_entry "Text" "${VMLINUZ_DI}" "${INITRD_DI}" "${APPEND_DI}"
	fi

	if [ -f "binary/${LIVE_INSTALL_KERNEL_PATH}/${VMLINUZ_GI}" ] && [ -f "binary/${LIVE_INSTALL_KERNEL_PATH}/${INITRD_GI}" ]
	then
		Syslinux_install_entry "GUI" "${VMLINUZ_GI}" "${INITRD_GI}" "${APPEND_GI}"
	fi
fi

# Assembling memtest configuration
if [ -f "${KERNEL_PATH}"/memtest ]
then
	Syslinux_memtest_entry "memtest" "${LB_SYSLINUX_MENU_MEMTEST_ENTRY}" "memtest"
fi

# Copy templates to base syslinux directory
Copy_syslinux_templates

# Fill in templates with created values
Configure_syslinux_templates

# Configure syslinux setup per boot method
case "${LB_BINARY_IMAGES}" in
	iso*)
		case "${LB_BUILD_WITH_CHROOT}" in
			true)
				cp chroot/usr/lib/syslinux/isolinux.bin ${SCREEN_PATH}
				;;
			false)
				cp /usr/lib/syslinux/isolinux.bin ${SCREEN_PATH}
				;;
		esac

		mv ${SCREEN_PATH}/syslinux.cfg ${SCREEN_PATH}/isolinux.cfg

		# Copying configuration file
		if [ -n "${LB_SYSLINUX_CFG}" ]
		then
			cp "${LB_SYSLINUX_CFG}" ${SCREEN_PATH}/isolinux.cfg
		fi
		;;

	net)
		case "${LB_BUILD_WITH_CHROOT}" in
			true)
				cp chroot/usr/lib/syslinux/pxelinux.0 ${KERNEL_PATH}
				;;
			false)
				cp /usr/lib/syslinux/pxelinux.0 ${KERNEL_PATH}
				;;
		esac

		mkdir -p ${KERNEL_PATH}/pxelinux.cfg
		ln -s ${LIVE_KERNEL_PATH}/pxelinux.cfg ${SYSLINUX_PATH}/pxelinux.cfg
		ln -s ${LIVE_KERNEL_PATH}/pxelinux.0 ${SYSLINUX_PATH}/pxelinux.0

		# Adjusting include pathes
		for FILE in ${SCREEN_PATH}/*.cfg
		do
			sed -i -e "s|^include |include ${LIVE_SCREEN_PATH}/|g" "${FILE}"
		done

		sed -i -e "s| f| ${LIVE_SCREEN_PATH}/f|g" ${SCREEN_PATH}/prompt.cfg

		mv ${SCREEN_PATH}/syslinux.cfg ${KERNEL_PATH}/pxelinux.cfg/default

		# Copying configuration file
		if [ -n "${LB_SYSLINUX_CFG}" ]
		then
			cp "${LB_SYSLINUX_CFG}" ${KERNEL_PATH}/pxelinux.cfg/default
		fi
		;;

	usb*|tar)
		case "${LB_BUILD_WITH_CHROOT}" in
			true)
				cp chroot/usr/lib/syslinux/isolinux.bin ${SCREEN_PATH}/syslinux.bin
				;;
			false)
				cp /usr/lib/syslinux/isolinux.bin ${SCREEN_PATH}/syslinux.bin
				;;
		esac

		# Copying configuration file
		if [ -n "${LB_SYSLINUX_CFG}" ]
		then
			cp "${LB_SYSLINUX_CFG}" ${SCREEN_PATH}/syslinux.cfg
		fi
		;;
esac

# Saving cache
Save_cache cache/packages_binary

# Removing depends
Remove_package

# Creating stage file
Create_stagefile .stage/binary_syslinux