X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=debian%2Fneurodebian.config;fp=debian%2Fneurodebian.config;h=ea6f62816a5d6f7d075b84751f2b5f5f7b9ea58b;hb=6c6fa9cd3bd627a60f165682f96af3cc06d9ccc9;hp=0000000000000000000000000000000000000000;hpb=15d0a7f8a363c9fe2b286ddcb99acc41c9c91681;p=neurodebian.git diff --git a/debian/neurodebian.config b/debian/neurodebian.config new file mode 100755 index 0000000..ea6f628 --- /dev/null +++ b/debian/neurodebian.config @@ -0,0 +1,96 @@ +#!/bin/bash +set -e + +. /usr/share/debconf/confmodule + +db_capb backup # allow to go back, for that we implement that STATE loop + +debug() +{ + [ "${DEBCONF_DEBUG:-}" != "developer" ] || echo -e "D: $*" >&2 +} + +db_settitle neurodebian/title + +if [ "$1" = "configure" ]; then + # Must have been called in preinst state, so no nd-configurerepo + # tool is yet installed, thus delay asking questions to + # whenever will be called in postinst state + which nd-configurerepo 1>/dev/null 2>&1 || exit 0 +fi + +# Create temporary directory which will be reused +export ND_AE_TEMPDIR=$(mktemp -d) +trap "rm -rf \"$ND_AE_TEMPDIR\"" TERM INT EXIT + +neurodebian_releases="auto" + +# This implements a simple state machine so the back button can be handled. +# taken from debconf demo example +STATE=1 +while [ "$STATE" != 0 -a "$STATE" != 8 ]; do + case $STATE in + 1) + neurodebian_releases="$(ND_IFS=', ' nd-configurerepo --print-releases)" + debian_release="$(ND_IFS=', ' nd-configurerepo --print-release)" + if [ -z "$debian_release" ]; then # just a failover + debian_release="sid" + fi + debug "releases: $neurodebian_releases" + db_subst neurodebian/release releases "$neurodebian_releases" + db_subst neurodebian/release release "$debian_release" + db_input medium neurodebian/release || true + ;; + 2) + neurodebian_mirrors="$(ND_IFS=', ' nd-configurerepo --print-mirrors)" + debug "mirrors: $neurodebian_mirrors" + db_subst neurodebian/mirror mirrors "$neurodebian_mirrors" + db_input medium neurodebian/mirror || true + mirror_selection_ret="$RET" + debug "mirror select return: <$mirror_selection_ret>" + ;; + 3) neurodebian_flavor="$(ND_IFS=', ' nd-configurerepo --print-flavor)" + db_subst neurodebian/flavor flavor "$neurodebian_flavor" + db_input medium neurodebian/flavor || true ;; + 4) db_input medium neurodebian/components || true ;; + 5) db_input low neurodebian/overwrite || true ;; + 6) db_input low neurodebian/suffix || true ;; + 7) db_input medium neurodebian/run-update-note || true ;; + esac + + if db_go; then +# Ubuntus managed to remove netselect "to accompany apt-netselect" +# https://bugs.launchpad.net/ubuntu/+source/netselect/+bug/337377 +# So for now remove this mandatory demanding of netselect for "best", and +# rely on logic in nd-configurerepo to select default mirror (currently origin) +# as the 'best' +# +# case $STATE in +# 2) +# db_metaget neurodebian/mirror value +# selected_mirror="$RET" +# # TODOs: +# # - handle custom +# # - separate out alias from url +# debug "selected mirror: $selected_mirror" +# if [ "$selected_mirror" = "best" ] && ! which netselect &>/dev/null; then +# if [ "$mirror_selection_ret" = "30 question skipped" ]; then +# # if the question was not even shown, we would +# # not get a chance to specify mirror, thus +# # better just fail altogether and demand intervention +# db_input high neurodebian/netselect-cannot-be-used +# exit 1 +# else +# db_input high neurodebian/netselect-not-found +# continue; +# fi +# fi +# esac + STATE=$(($STATE + 1)) + else + STATE=$(($STATE - 1)) + fi +done + +db_stop +