diff options
| author | Daniel Baumann <daniel@debian.org> | 2010-05-01 13:31:18 +0200 |
|---|---|---|
| committer | Daniel Baumann <daniel@debian.org> | 2011-03-09 17:48:09 +0100 |
| commit | c967ebfc4e43fb16a0c2c140c66900712be95ab7 (patch) | |
| tree | 74a8a142d7d6ceadcd9c4cb23ee3819fd8739336 /bin | |
| parent | 65721717c4e37f6cec9e66f2ac355746490338ab (diff) | |
| download | live-boot-c967ebfc4e43fb16a0c2c140c66900712be95ab7.tar.gz live-boot-c967ebfc4e43fb16a0c2c140c66900712be95ab7.zip | |
Merging casper 1.216.
Diffstat (limited to 'bin')
| -rwxr-xr-x | bin/live-preseed | 23 | ||||
| -rwxr-xr-x | bin/live-set-selections | 92 |
2 files changed, 107 insertions, 8 deletions
diff --git a/bin/live-preseed b/bin/live-preseed index d98c4f3..add29bd 100755 --- a/bin/live-preseed +++ b/bin/live-preseed @@ -4,22 +4,29 @@ set -e PATH=/usr/sbin:/usr/bin:/sbin:/bin +# Only do this once +if [ -z "${DEBCONF_REDIR}" ] +then + exec <&4 + export DEBIAN_HAS_FRONTEND=1 + export DEBCONF_REDIR=1 +fi + root="${1}" +. "$root/usr/share/debconf/confmodule" + question="${2}" value="${3}" seen="${4}" [ "${seen}" ] || seen=true -if ! (echo "SET ${question} ${value}"; echo "FSET ${question} seen ${seen}") | chroot "${1}" /usr/bin/debconf-communicate -fnoninteractive live-initramfs >/dev/null +if ! db_set "${question}" "${value}" then - -chroot "${1}" /usr/bin/debconf-communicate -fnoninteractive live-initramfs >/dev/null << EOF -REGISTER debian-installer/dummy ${question} -SET ${question} ${value} -FSET ${question} seen ${seen} -EOF - + db_register debian-installer/dummy "${question}" + db_set "${question}" "${value}" fi +db_fset "${question}" seen "${seen}" + exit 0 diff --git a/bin/live-set-selections b/bin/live-set-selections new file mode 100755 index 0000000..c4c38dd --- /dev/null +++ b/bin/live-set-selections @@ -0,0 +1,92 @@ +#!/bin/sh +# Cloned-and-hacked from preseed/debconf-set-selections for live-initramfs. +set -e + +OLDIFS="$IFS" +CR=$(echo -en "\r") +NL=" +" + +. /scripts/live-functions +load_confmodule + +# Returns the first field in the current line +first_field() { + echo "$line" | grep -q "[[:space:]]" || return 1 + echo "$line" | sed -r 's/^([^[:space:]]*).*/\1/' +} + +# Returns any fields after the first field in the current line +rest_line() { + if echo "$line" | grep -q "[[:space:]]"; then + echo "$line" | sed 's/^[^[:space:]]*[[:space:]]*//' + fi +} + +SEEN=1 +if [ "$1" = --unseen ]; then + SEEN= + shift +fi + +file="$1" + +parse_error() { + echo "Error parsing preconfiguration file: $*" >&2 + exit 1 +} + +IFS="$NL" +multiline="" +# TODO: this squashes \r elsewhere in the line too +for line in $(grep -v '^#\|^[[:space:]]*$' "$file" | sed "s/$CR//g"); do + IFS="$OLDIFS" + + line="$(echo "$line" | sed 's/^[[:space:]]*//')" + if echo "$line" | grep -q '\\$'; then + multiline="${multiline:+$multiline }$(echo "$line" | \ + sed 's/[[:space:]]*\\$//')" + continue + elif [ -n "$multiline" ]; then + line="$multiline $line" + multiline="" + fi + + package="" + var="" + type="" + val="" + if ! package="$(first_field)"; then + parse_error "Syntax error: unable to determine template owner" + fi + line="$(rest_line)" + if ! var="$(first_field)"; then + parse_error "Syntax error: unable to determine template name" + fi + line="$(rest_line)" + if ! type="$(first_field)"; then + # Allow for lines without separator before an empty value + if [ "$line" ]; then + type="$line" + else + parse_error "Syntax error: unable to determine template type" + fi + fi + line="$(rest_line)" + val="$line" + + if [ "$type" = seen ]; then + # Set seen flag. + db_fset "$var" "$type" "$val" || true # how to handle this error? + else + if ! db_set "$var" "$val"; then + # Question does not exist yet. + db_register debian-installer/dummy "$var" + db_set "$var" "$val" + db_subst "$var" ID "$var" + fi + if [ "$SEEN" ]; then + db_fset "$var" seen true + fi + fi +done |
