#!/bin/sh -efu
#
# mki-sh-image-prepare
#
# This file is part of mkimage
# Copyright (C) 2007-2009  Alexey Gladkov <gladkov.alexey@gmail.com>
#
# This file is covered by the GNU General Public License,
# which should be included with mkimage as the file COPYING.
#

pkgbox="${PKGBOX:?aptbox required}"
target="${TARGET:+--target="$TARGET"}"
with_qemu="${HSH_USE_QEMU:+--with-qemu="$HSH_USE_QEMU"}"
apt_config="${HSH_APT_CONFIG:+--apt-config="$HSH_APT_CONFIG"}"
apt_prefix="${HSH_APT_PREFIX:+--apt-prefix="$HSH_APT_PREFIX"}"

hsh_initroot() {
	env -i PATH="$PATH" \
	hsh \
		--initroot \
		--without-stuff \
		--pkg-build-list='' \
		--save-fakeroot \
		$verbose $quiet $target $with_qemu $apt_config $apt_prefix \
		${HSH_LANGS:+--install-langs="$HSH_LANGS"} \
		${HSH_NUMBER:+--number="$HSH_NUMBER"} \
		${HSH_EXCLUDE_DOCS:+--excludedocs} \
		${HSH_CACHEDIR:+--cache-dir="$HSH_CACHEDIR"} \
		${IMAGE_INIT_LIST:+--pkg-init-list="$IMAGE_INIT_LIST"} \
		-- "$1" ||
	fatal "$1: unable to make initial chroot: rc=$?"

	local pkgs="${PACKAGES_REQUIRED_INITROOT:-}"
	if [ -n "$pkgs" ]; then
		env -i PATH="$PATH" \
		hsh-install \
			$verbose $quiet \
			${HSH_NUMBER:+--number="$HSH_NUMBER"} \
			${HSH_EXCLUDE_DOCS:+--excludedocs} \
			-- "$1" $pkgs ||
		fatal "$1: unable to install packages: rc=$?"
	fi

        # Create essential tty devices.
        echo "\
		600 /dev/console c 5 1
		600 /dev/tty0 c 4 0
		666 /dev/tty c 5 0
		666 /dev/ptmx c 5 2" |
	while read mode name type major minor ; do
	        hsh-fakedev \
			$verbose $quiet \
			${HSH_NUMBER:+--number="$HSH_NUMBER"} \
			-o root \
			-m "$mode" \
			-- "$1" "$name" "$type" "$major" "$minor" ||
		fatal 'Failed to create tty devices.'
        done

	rm -rf -- "$1/repo" "$1/chroot/.out"
}
