+ fi
+}
+# }}}
+
+# make sure we have what we need {{{
+check4progs debootstrap || bailout 1
+# }}}
+
+# source main configuration file {{{
+if [ -r /etc/debootstrap/config ] ; then
+ . /etc/debootstrap/config
+fi
+# }}}
+
+# cmdline handling {{{
+# source external command line parameter-processing script
+self_dir="$(dirname "$(which "$0")")"
+if [ -r "${self_dir}"/cmdlineopts.clp ] ; then
+ . "${self_dir}"/cmdlineopts.clp
+elif [ -r /usr/share/grml-debootstrap/functions/cmdlineopts.clp ] ; then
+ . /usr/share/grml-debootstrap/functions/cmdlineopts.clp
+else
+ eerror "Error: cmdline function file not found, exiting."
+ eend 1
+ bailout 1
+fi
+
+# == business-logic of command line parameter-processing
+
+# source configuration file in <confdir> if supplied. {{{
+[ "$_opt_confdir" ] && {
+ CONFFILES=$_opt_confdir
+ einfo "Using config files under $CONFFILES/."
+ if ! [ -r "$CONFFILES/config" ] ; then
+ eerror "Error: config file $CONFFILES/config not found."; eend 1; bailout 1
+ fi
+ if ! . "$CONFFILES/config" ; then
+ eerror "Error reading config file $CONFFILES/config" ; eend 1 ; bailout 1
+ fi
+ # restore the command line parameter value
+ CONFFILES=$_opt_confdir
+}
+# }}}
+
+[ "$_opt_mirror" ] && MIRROR=$_opt_mirror
+[ "$_opt_iso" ] && ISO=$_opt_iso
+[ "$_opt_release" ] && RELEASE=$_opt_release
+[ "$_opt_target" ] && TARGET=$_opt_target
+[ "$_opt_vm" ] && VIRTUAL=1
+[ "$_opt_vmfile" ] && VMFILE=1 && VIRTUAL=1
+[ "$_opt_vmsize" ] && VMSIZE=$_opt_vmsize
+[ "$_opt_mntpoint" ] && MNTPOINT=$_opt_mntpoint
+[ "$_opt_debopt" ] && DEBOOTSTRAP_OPT=$_opt_debopt
+[ "$_opt_interactive" ] && INTERACTIVE=1
+[ "$_opt_config" ] && CONFIGFILE=$_opt_config
+[ "$_opt_filesystem" ] && MKFS="mkfs.$_opt_filesystem"
+[ "$_opt_packages_set" ] && PACKAGES='yes'
+[ "$_opt_nopackages" ] && PACKAGES=''
+[ "$_opt_debconf_set" ] && DEBCONF='yes'
+[ "$_opt_post_scripts_set" ] && POST_SCRIPTS='yes'
+[ "$_opt_pre_scripts_set" ] && PRE_SCRIPTS='yes'
+[ "$_opt_chroot_scripts_set" ] && CHROOT_SCRIPTS='yes'
+[ "$_opt_keep_src_list" ] && KEEP_SRC_LIST='yes'
+[ "$_opt_grmlrepos" ] && GRMLREPOS='yes'
+[ "$_opt_backportrepos" ] && BACKPORTREPOS='yes'
+[ "$_opt_hostname" ] && HOSTNAME=$_opt_hostname
+[ "$_opt_password" ] && ROOTPASSWORD=$_opt_password
+[ "$_opt_nopassword" ] && NOPASSWORD='yes'
+[ "$_opt_defaultinterfaces" ] && USE_DEFAULT_INTERFACES="true"
+[ "$_opt_nointerfaces" ] && NOINTERFACES="true"
+[ "$_opt_nokernel" ] && NOKERNEL="true"
+[ "$_opt_bootappend" ] && BOOT_APPEND=$_opt_bootappend
+[ "$_opt_grub" ] && GRUB=$_opt_grub
+[ "$_opt_efi" ] && EFI=$_opt_efi
+[ "$_opt_arch" ] && ARCH=$_opt_arch
+[ "$_opt_insecure" ] && echo "Warning: --insecure is deprecated, continuing anyway."
+[ "$_opt_force" ] && FORCE=$_opt_force
+[ "$_opt_verbose" ] && VERBOSE="-v"
+[ "$_opt_debug" ] && DEBUG="true"
+[ "$_opt_remove_configs" ] && REMOVE_CONFIGS="yes"
+
+# make sure main is always included
+[ -z "$COMPONENTS" ] && COMPONENTS="main"
+[ "$_opt_contrib" ] && COMPONENTS="$COMPONENTS contrib"
+[ "$_opt_non_free" ] && COMPONENTS="$COMPONENTS non-free"
+
+# command line option checks
+if [ "$_opt_scripts_set" ] ; then
+ ewarn "Deprecation NOTE: --scripts option is deprecated, please switch to --post-scripts instead."
+ SCRIPTS='yes' # deprecated since grml-debootstrap >=0.71
+fi
+
+if [ "$_opt_grub" ] && [ "$_opt_vmfile" ] ; then
+ eerror "The --grub option is incompatible with --vmfile, please drop it from your command line."
+ eerror "The --grub option is unneeded as GRUB will be installed automatically."
+ eend 1
+ bailout 1
+fi
+
+
+if [ "$DEBUG" = "true" ] ; then
+ set -x
+fi
+
+[ "$_opt_help" ] && {
+ usage ; eend 0
+ eend 0
+ exit 0
+}
+
+[ "$_opt_version" ] && {
+ einfo "$PN - version $VERSION"
+ einfo "Send bug reports to bugs@grml.org or http://grml.org/bugs/"
+ eend 0
+ exit 0
+}
+# }}}
+
+# check for root permissions {{{
+if ! check4root ; then
+ echo "For usage instructions please execute '$PN --help'."
+ bailout 1
+fi
+# }}}
+
+# make sure we have what we need {{{
+if [ -n "$VIRTUAL" ] ; then
+ check4progs kpartx parted qemu-img || bailout 1
+fi
+# }}}
+
+# source specified configuration file {{{
+if [ -n "$CONFIGFILE" ] ; then
+ einfo "Reading specified config file $CONFIGFILE."
+ if ! . "$CONFIGFILE" ; then
+ eerror "Error reading config file $CONFIGFILE" ; eend 1 ; bailout 1
+ fi
+fi
+# }}}
+
+# backwards compability checks {{{
+if [ -n "$GROOT" ] ; then
+ eerror "Error: you seem to have \$GROOT configured."
+ eerror "This variable is no longer supported, please visit the"
+ eerror "grml-debootstrap documentation for details."
+ eend 1
+ bailout 1
+fi
+
+if echo "$GRUB" | grep -q '^hd' ; then
+ eerror "Error: this syntax for the grub configuration variable is no longer supported."
+ eerror "Please do not use hd... any longer but /dev/sdX instead."
+ eend 1
+ bailout 1
+fi
+# }}}
+
+# welcome screen {{{
+welcome_dialog()
+{
+ dialog --title "$PN" --yesno "Welcome to the interactive configuration of ${PN}.
+Do you want to continue installing Debian using this frontend?" 0 0 || bailout 0
+}
+# }}}
+
+# ask for target {{{
+prompt_for_target()
+{
+ AVAILABLE_PARTITIONS=$(LANG=C fdisk -l 2>/dev/null | \
+ sed 's/*//' | \
+ grep -v 'Extended$' | \
+ gawk -v num=0 -v ORS=' ' '/^\/dev\// {print $1}'; ls /dev/md[0-9]* 2>/dev/null || true);
+
+ if [ -z "$AVAILABLE_PARTITIONS" ] ; then
+ dialog --title "$PN" --trim \
+ --msgbox "Sorry, no partitions found. Please configure your
+ harddisks (see /proc/partitions) using a tool like fdisk,
+ cfdisk, gpart, gparted,..." 0 0
+ bailout 1
+ fi
+
+ PARTITION_LIST=$(for i in $AVAILABLE_PARTITIONS ; do
+ fs="$(blkid -s TYPE -o value "$i" 2>/dev/null)"
+ [ -n "$fs" ] || fs='[no_filesystem_yet]'
+ echo "$i" "$fs"
+ unset fs
+ done)
+
+ TARGET=$(dialog --title "$PN" --single-quoted --stdout \
+ --menu "Please select the target partition:" 0 0 0 \
+ $PARTITION_LIST)
+ [ $? -eq 0 ] || bailout 1
+}
+# }}}
+
+# ask for bootmanager {{{
+prompt_for_bootmanager()
+{
+ ADDITIONAL_PARAMS=""
+
+ if echo "$TARGET" | grep -q "/dev/md" ; then
+ MBRPART="all disks of Software RAID $TARGET"