From 46416f9fc4f22deab8c962cc6819cf536c7b84d4 Mon Sep 17 00:00:00 2001 From: Helmut Buchsbaum Date: Wed, 4 May 2022 19:58:37 +0200 Subject: [PATCH] debian: acrn-hypervisor: Refactor debconf Tracked-On: #6688 Signed-off-by: Helmut Buchsbaum --- debian/acrn-hypervisor.config | 13 --------- debian/acrn-hypervisor.config.in | 44 ++++++++++++++++++++++++++++++ debian/acrn-hypervisor.postinst.in | 10 ------- debian/acrn-hypervisor.postrm.in | 7 +++-- debian/control | 3 +- debian/rules | 9 +++++- 6 files changed, 59 insertions(+), 27 deletions(-) delete mode 100644 debian/acrn-hypervisor.config create mode 100644 debian/acrn-hypervisor.config.in diff --git a/debian/acrn-hypervisor.config b/debian/acrn-hypervisor.config deleted file mode 100644 index 4651ab96a..000000000 --- a/debian/acrn-hypervisor.config +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -# Exit on error -set -e - -# Source debconf library. -. /usr/share/debconf/confmodule - -# query board -db_input critical acrn-hypervisor/board || true - -# Show interface -db_go || true diff --git a/debian/acrn-hypervisor.config.in b/debian/acrn-hypervisor.config.in new file mode 100644 index 000000000..d2959050f --- /dev/null +++ b/debian/acrn-hypervisor.config.in @@ -0,0 +1,44 @@ +#!/bin/bash +# inspired by http://www.fifi.org/doc/debconf-doc/tutorial.html + +# Exit on error +set -e + +# Source debconf library. +. /usr/share/debconf/confmodule +db_version 2.0 + +# This conf script is capable of backing up +db_capb backup + +ACRNDIR=@acrndir@ +declare -A SCENARIOS=@scenarios@ +STATE="board" +while [ "$STATE" != "quit" -a "$STATE" != "done" ]; do + case "$STATE" in + board) + # query board + db_input critical acrn-hypervisor/board || true + if db_go; then + STATE="scenario" + else + STATE="quit" + fi + ;; + scenario) + db_get acrn-hypervisor/board + db_subst acrn-hypervisor/scenario scenariolist ${SCENARIOS[${RET}]} + db_clear + db_input critical acrn-hypervisor/scenario || true + if db_go; then + STATE="done" + else + STATE="board" + fi + ;; + esac +done + +# trigger grub update +dpkg-trigger --await --by-package=acrn-hypervisor grub-acrn-update + diff --git a/debian/acrn-hypervisor.postinst.in b/debian/acrn-hypervisor.postinst.in index 6ef528e19..d916c3af2 100644 --- a/debian/acrn-hypervisor.postinst.in +++ b/debian/acrn-hypervisor.postinst.in @@ -11,16 +11,6 @@ ACRNDIR=@acrndir@ db_get acrn-hypervisor/board BOARD=${RET} - -SCENARIOS=$(find ${ACRNDIR}/${BOARD} -maxdepth 1 -type d \ - | tail -n +2 | sed "s#${ACRNDIR}/${BOARD}/##" \ - | sort | awk '{s=s (s?OFS:x) $1} END {print s}' OFS=", ") - -db_subst acrn-hypervisor/scenario scenariolist ${SCENARIOS} -db_clear -db_input critical acrn-hypervisor/scenario || true -db_go || true - db_get acrn-hypervisor/scenario SCENARIO=${RET} diff --git a/debian/acrn-hypervisor.postrm.in b/debian/acrn-hypervisor.postrm.in index fa8ce7e6a..a34e2bf41 100644 --- a/debian/acrn-hypervisor.postrm.in +++ b/debian/acrn-hypervisor.postrm.in @@ -30,9 +30,12 @@ rm_acrn() case "$1" in - remove|purge) + remove) rm_acrn - db_purge acrn-hypervisor || : + ;; + purge) + rm_acrn + db_purge acrn-hypervisor || : ;; upgrade) rm_acrn diff --git a/debian/control b/debian/control index 1add890fb..392567394 100644 --- a/debian/control +++ b/debian/control @@ -59,7 +59,8 @@ Depends: ${misc:Depends}, grub-acrn, acrn-devicemodel, - debconf (>=1.5.71) + debconf (>=1.5.71), + bash (>=4) Suggests: acrn-doc Recommends: setserial Description: ACRN Hypervisor for IoT diff --git a/debian/rules b/debian/rules index daeb7da2d..9e1943700 100755 --- a/debian/rules +++ b/debian/rules @@ -165,7 +165,14 @@ debian/acrn-hypervisor.templates: debian/acrn-hypervisor.templates.in @$(call echo-silent,CREATE $@) $(Q)sed -e 's/@boardlist@/$(call commasep,$(boardlist))/g' $< > $@ -override_dh_installdebconf-arch: debian/acrn-hypervisor.templates +debian/acrn-hypervisor.config: debian/acrn-hypervisor.config.in + @$(call echo-verbose) + @$(call echo-silent,CREATE $@) + @# create scenarios as bash associative array + $(Q)sed -e 's%@acrndir@%$(libdir)/acrn%g' \ + -e 's%@scenarios@%($(foreach b,$(boardlist),[$b]="$(call commasep,$(scenariolist_$b))"))%g' $< > $@ + +override_dh_installdebconf-arch: debian/acrn-hypervisor.templates debian/acrn-hypervisor.config $(Q)dh_installdebconf -a ### build-arch ###############################################################