#!/bin/sh -efu

alterator_api_version=1

. install2-sh-functions
. alterator-sh-functions

init_chroot()
{
    # check chroot state
    [ -s "$destdir/var/lib/rpm/Packages" ] && return 0

    # create apt/rpm skeleton directories
    mkdir -p -- "$destdir"
    cd "$destdir"
	mkdir -p -- \
	    ./dev \
	    ./etc/apt/{apt.conf,{sources,vendors}.list}.d \
	    ./var/cache/apt/archives/partial \
	    ./var/lib/apt/lists/partial \
	    ./var/lib/rpm >&2
    cd - >/dev/null

    # create a new rpm database
    rpmdb --initdb --dbpath "$destdir/var/lib/rpm"

    # create minimum device set
    cp -at "$destdir/dev" -- \
	/dev/null \
	/dev/zero \
	/dev/full \
	/dev/random \
	/dev/urandom \
	/dev/console \
	/dev/tty \
	/dev/ptmx

    # bind virtual filesystems
    for i in /dev /dev/pts /proc /sys /tmp/alterator; do
	[ -d "$i" ] || continue
	mkdir -p -- "$destdir/$i"
	mount --bind "$i" "$destdir/$i"
    done

    # flag to notify installer's postinstall.d hooks about new system
    touch -- "$destdir/_NEW_SYSTEM_"

    apt-get update

    # Run hooks
    run-parts /usr/share/install2/prepkg.d/
}

export LANG=C

on_message()
{
	case "$in_action" in
	    write)
		local err=
		if ! err="$(init_chroot 2>&1)"; then
		    write_error "$err"
		fi
		;;
	esac
}

message_loop
