Hi!
It's been quite some time that I have noticed that we could considerably
simplify debconf_select in partman-base by using the features provided
by Choices-C, as debconf_select was basically reimplementing it
manually. And tonight was the night!
As far as I have tested, everything works after applying this patch.
But a second look is more than needed on such a core function…
Other comments:
* All templates using debconf_select or ask_user must now
define the following:
Choices-C: ${CHOICES}
Choices: ${DESCRIPTIONS}
* The deprecated ability to set default values through localised
strings have also been removed.
* Templates used through debconf_select in partman-base,
partman-crypto, partman-auto, partman-partitioning and partman-target
have all been updated.
Stats:
installer/doc/devel/partman/partman-doc.sgml | 6 +-
packages/partman/partman-auto/debian/changelog | 7 ++
packages/partman/partman-auto/debian/control | 2 +-
.../partman-auto/debian/partman-auto.templates | 12 +++-
packages/partman/partman-base/debian/changelog | 14 ++++
.../partman-base/debian/partman-base.templates | 12 +++-
packages/partman/partman-base/lib/base.sh | 65 +++++++-------------
packages/partman/partman-crypto/debian/changelog | 7 ++
packages/partman/partman-crypto/debian/control | 2 +-
.../partman-crypto/debian/partman-crypto.templates | 15 +++--
.../partman/partman-partitioning/debian/changelog | 7 ++
.../debian/partman-partitioning.templates | 3 +-
packages/partman/partman-target/debian/changelog | 7 ++
.../partman-target/debian/partman-target.templates | 3 +-
14 files changed, 100 insertions(+), 62 deletions(-)
Cheers,
--
Jérémy Bobbio .''`.
lunar@debian.org : :Ⓐ : # apt-get install anarchism
`. `'`
`-
commit c02d2d5837c257d76d3c042c42864abf11251848
Author: Jérémy Bobbio <lunar@debian.org>
Date: Sun Mar 30 00:14:35 2008 +0000
Use Choices-C in partman debconf_select
Instead of mangling the localised strings, debconf_select (and thus
ask_user) now uses Choices-C.
All templates using debconf_select or ask_user must now
define the following:
Choices-C: ${CHOICES}
Choices: ${DESCRIPTIONS}
The deprecated ability to set default values through localised strings
have also been removed.
Templates used through debconf_select in partman-base, partman-crypto,
partman-auto, partman-partitioning and partman-target have all been
updated.
diff --git a/installer/doc/devel/partman/partman-doc.sgml b/installer/doc/devel/partman/partman-doc.sgml
index 21017bd..e763629 100644
--- a/installer/doc/devel/partman/partman-doc.sgml
+++ b/installer/doc/devel/partman/partman-doc.sgml
@@ -337,7 +337,8 @@ UMSDOS file systems, only a few new udebs must be all that is needed.
and choices fields:
<example>
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
</example>
<p> All other files in the menu directory are subdirectories. Any
@@ -736,7 +737,8 @@ debconf_select <var>priority</var> <var>template</var> <var>choices</var> <var>d
The template must have exactly the following type and choices fields:
<example>
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
</example>
<p> The udebs that generate menus using menu-directories use the
diff --git a/packages/partman/partman-auto/debian/changelog b/packages/partman/partman-auto/debian/changelog
index 4cd409e..d17e39a 100644
--- a/packages/partman/partman-auto/debian/changelog
+++ b/packages/partman/partman-auto/debian/changelog
@@ -1,3 +1,10 @@
+partman-auto (77) UNRELEASED; urgency=low
+
+ * Update to the new debconf_select interface.
+ Requires partman-base (>= 118).
+
+ -- Jérémy Bobbio <lunar@debian.org> Sat, 29 Mar 2008 23:35:43 +0100
+
partman-auto (76) unstable; urgency=low
[ Colin Watson ]
diff --git a/packages/partman/partman-auto/debian/control b/packages/partman/partman-auto/debian/control
index a14204d..23b7691 100644
--- a/packages/partman/partman-auto/debian/control
+++ b/packages/partman/partman-auto/debian/control
@@ -9,5 +9,5 @@ Vcs-Svn: svn://svn.debian.org/d-i/trunk/packages/partman/partman-auto
Package: partman-auto
XC-Package-Type: udeb
Architecture: any
-Depends: ${misc:Depends}, di-utils, partman-base (>= 114), partman-basicfilesystems, partman-ext3
+Depends: ${misc:Depends}, di-utils, partman-base (>= 118), partman-basicfilesystems, partman-ext3
Description: Automatically partition storage devices (partman)
diff --git a/packages/partman/partman-auto/debian/partman-auto.templates b/packages/partman/partman-auto/debian/partman-auto.templates
index f5c7ce6..354efee 100644
--- a/packages/partman/partman-auto/debian/partman-auto.templates
+++ b/packages/partman/partman-auto/debian/partman-auto.templates
@@ -24,7 +24,8 @@ _Description: Failed to partition the selected disk
Template: partman-auto/init_automatically_partition
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
# :sl1:
_Description: Partitioning method:
The installer can guide you through partitioning a disk (using different
@@ -47,7 +48,8 @@ Description: for internal use; can be preseeded
Template: partman-auto/automatically_partition
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
# :sl1:
_Description: Partitioning method:
If you choose guided partitioning for an entire disk, you will next be
@@ -55,7 +57,8 @@ _Description: Partitioning method:
Template: partman-auto/choose_recipe
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
# :sl1:
#flag:comment:2
# "Selected for partitioning" can be either an entire disk
@@ -112,7 +115,8 @@ _Description: Guided - use entire disk
Template: partman-auto/select_disk
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
# :sl1:
_Description: Select disk to partition:
Note that all data on the disk you select will be erased, but not before
diff --git a/packages/partman/partman-base/debian/changelog b/packages/partman/partman-base/debian/changelog
index 0735b1a..8ed2699 100644
--- a/packages/partman/partman-base/debian/changelog
+++ b/packages/partman/partman-base/debian/changelog
@@ -1,3 +1,17 @@
+partman-base (118) UNRELEASED; urgency=low
+
+ * Use Choices-C in debconf_select instead of mangling the localised
+ strings. All templates using debconf_select or ask_user must now define
+ the following:
+ Choices-C: ${CHOICES}
+ Choices: ${DESCRIPTIONS}
+ The deprecated ability to set default values through localised strings
+ have also been removed.
+ * Update partman/choose_partition, partman/storage_device,
+ partman/free_space and partman/active_partition to the new format.
+
+ -- Jérémy Bobbio <lunar@debian.org> Sat, 29 Mar 2008 22:57:27 +0100
+
partman-base (117) unstable; urgency=low
[ Colin Watson ]
diff --git a/packages/partman/partman-base/debian/partman-base.templates b/packages/partman/partman-base/debian/partman-base.templates
index 0a1564f..edb7240 100644
--- a/packages/partman/partman-base/debian/partman-base.templates
+++ b/packages/partman/partman-base/debian/partman-base.templates
@@ -55,7 +55,8 @@ Description: ${TYPE}
Template: partman/choose_partition
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
# :sl1:
_Description: This is an overview of your currently configured partitions and mount points. Select a partition to modify its settings (file system, mount point, etc.), a free space to create partitions, or a device to initialize its partition table.
@@ -108,19 +109,22 @@ _Description: The partition tables of the following devices are changed:
Template: partman/storage_device
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
# :sl2:
_Description: What to do with this device:
Template: partman/free_space
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
# :sl2:
_Description: How to use this free space:
Template: partman/active_partition
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
# :sl2:
_Description: Partition settings:
You are editing partition #${PARTITION} of ${DEVICE}. ${OTHERINFO} ${DESTROYED}
diff --git a/packages/partman/partman-base/lib/base.sh b/packages/partman/partman-base/lib/base.sh
index 9187bac..bd8a6ee 100644
--- a/packages/partman/partman-base/lib/base.sh
+++ b/packages/partman/partman-base/lib/base.sh
@@ -42,65 +42,44 @@ maybe_escape () {
}
debconf_select () {
- local IFS priority template choices default_choice default x u newchoices code
+ local IFS priority template choices default keys descriptions code x
priority="$1"
template="$2"
choices="$3"
- default_choice="$4"
- default=''
- # Debconf ignores spaces so we have to remove them from $choices
- newchoices=''
+ default="$4"
+ keys=""
+ descriptions=""
IFS="$NL"
for x in $choices; do
- local key option
+ local key plugin
restore_ifs
- key=$(echo ${x%$TAB*})
- option=$(echo "${x#*$TAB}" | sed "s/ *\$//g; s/^ /$debconf_select_lead/g")
- newchoices="${newchoices:+${newchoices}${NL}}${key}${TAB}${option}"
- if [ "$key" = "$default_choice" ]; then
- default="$option"
+ key="${x%$TAB*}"
+ keys="${keys:+${keys}, }$key"
+ descriptions="${descriptions:+${descriptions}, }$(
+ echo "${x#*$TAB}" |
+ sed "s/ *\$//g; s/^ /$debconf_select_lead/g; s/,/\\\\,/g; s/^ /\\\\ /")"
+
+ # If the question was asked via ask_user, this allow preseeding
+ # by using the name of the plugin responsible for the answer.
+ if [ -n "$default" ]; then
+ plugin="${key%%__________*}"
+ if [ "$default" = "$plugin" ] ||
+ [ "$default" = "${plugin#[0-9][0-9]}" ]; then
+ default="$key"
+ fi
fi
done
- choices="$newchoices"
- u=''
- IFS="$NL"
- # escape the commas and leading whitespace but keep them unescaped
- # in $choices
- for x in $choices; do
- u="$u, `echo ${x#*$TAB} | sed 's/,/\\\\,/g; s/^ /\\\\ /'`"
- done
- u=${u#, }
- restore_ifs
# You can preseed questions asked through this function by using
- # full localised text (deprecated) or by using the key (the part
- # before the tab). Additionally, if the question was asked via
- # ask_user below, then you can also preseed it using the name of the
- # plugin responsible for the answer you want.
+ # the key (the part before the tab).
if [ -n "$default" ]; then
db_set $template "$default"
fi
- db_subst $template CHOICES "$u"
+ db_subst $template CHOICES "$keys"
+ db_subst $template DESCRIPTIONS "$descriptions"
code=0
db_input $priority $template || code=1
db_go || return 255
db_get $template
- IFS="$NL"
- for x in $choices; do
- if [ "$RET" = "${x#*$TAB}" ]; then
- RET="${x%$TAB*}"
- break
- else
- # Help out ask_user.
- local key="${x%%__________*}"
- if [ "$key" != "$x" ] && \
- ([ "$RET" = "$key" ] || \
- [ "$RET" = "${key#[0-9][0-9]}" ]); then
- RET="${x%$TAB*}"
- break
- fi
- fi
- done
- restore_ifs
return $code
}
diff --git a/packages/partman/partman-crypto/debian/changelog b/packages/partman/partman-crypto/debian/changelog
index 8c6f31e..69ac781 100644
--- a/packages/partman/partman-crypto/debian/changelog
+++ b/packages/partman/partman-crypto/debian/changelog
@@ -1,3 +1,10 @@
+partman-crypto (29) UNRELEASED; urgency=low
+
+ * Update to the new debconf_select interface.
+ Requires partman-base (>= 118).
+
+ -- Jérémy Bobbio <lunar@debian.org> Sat, 29 Mar 2008 23:37:32 +0100
+
partman-crypto (28) unstable; urgency=low
[ Max Vozeler ]
diff --git a/packages/partman/partman-crypto/debian/control b/packages/partman/partman-crypto/debian/control
index 3c3faa6..891e50b 100644
--- a/packages/partman/partman-crypto/debian/control
+++ b/packages/partman/partman-crypto/debian/control
@@ -9,7 +9,7 @@ Vcs-Svn: svn://svn.debian.org/d-i/trunk/packages/partman/partman-crypto
Package: partman-crypto
XC-Package-Type: udeb
Architecture: any
-Depends: partman-base (>= 114), ${shlibs:Depends}, ${misc:Depends}
+Depends: partman-base (>= 118), ${shlibs:Depends}, ${misc:Depends}
Description: Add to partman support for block device encryption
Package: partman-crypto-dm
diff --git a/packages/partman/partman-crypto/debian/partman-crypto.templates b/packages/partman/partman-crypto/debian/partman-crypto.templates
index 022f121..bbd9412 100644
--- a/packages/partman/partman-crypto/debian/partman-crypto.templates
+++ b/packages/partman/partman-crypto/debian/partman-crypto.templates
@@ -47,7 +47,8 @@ _Description: Encryption method:
Template: partman-crypto/crypto_type
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
# :sl3:
_Description: Encryption method for this partition:
@@ -71,7 +72,8 @@ _Description: Key size:
Template: partman-crypto/keysize
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
# :sl3:
_Description: Key size for this partition:
@@ -85,7 +87,8 @@ _Description: IV algorithm:
Template: partman-crypto/ivalgorithm
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
# An initialization vector is the initial randomness used to seed
# the encryption algorithm
# :sl3:
@@ -103,7 +106,8 @@ _Description: Encryption key:
Template: partman-crypto/keytype
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
# :sl3:
_Description: Type of encryption key for this partition:
@@ -115,7 +119,8 @@ _Description: Encryption key hash:
Template: partman-crypto/keyhash
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
# :sl3:
_Description: Type of encryption key hash for this partition:
The encryption key is derived from the passphrase by applying a
diff --git a/packages/partman/partman-partitioning/debian/changelog b/packages/partman/partman-partitioning/debian/changelog
index 93953a6..f0b4519 100644
--- a/packages/partman/partman-partitioning/debian/changelog
+++ b/packages/partman/partman-partitioning/debian/changelog
@@ -1,3 +1,10 @@
+partman-partitioning (59) UNRELEASED; urgency=low
+
+ * Update to the new debconf_select interface.
+ Requires partman-base (>= 118).
+
+ -- Jérémy Bobbio <lunar@debian.org> Sun, 30 Mar 2008 00:17:48 +0000
+
partman-partitioning (58) unstable; urgency=low
[ Frans Pop ]
diff --git a/packages/partman/partman-partitioning/debian/partman-partitioning.templates b/packages/partman/partman-partitioning/debian/partman-partitioning.templates
index 2c05fbf..6b6d43b 100644
--- a/packages/partman/partman-partitioning/debian/partman-partitioning.templates
+++ b/packages/partman/partman-partitioning/debian/partman-partitioning.templates
@@ -26,7 +26,8 @@ _Description: Write previous changes to disk and continue?
Template: partman-partitioning/source_partition
Type: select
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
# :sl2:
_Description: Source partition:
Please choose the partition which contains the data you want to copy.
diff --git a/packages/partman/partman-target/debian/changelog b/packages/partman/partman-target/debian/changelog
index e4ec78c..ab1fc4f 100644
--- a/packages/partman/partman-target/debian/changelog
+++ b/packages/partman/partman-target/debian/changelog
@@ -1,3 +1,10 @@
+partman-target (55) UNRELEASED; urgency=low
+
+ * Update to the new debconf_select interface.
+ Requires partman-base (>= 118).
+
+ -- Jérémy Bobbio <lunar@debian.org> Sat, 29 Mar 2008 23:38:00 +0100
+
partman-target (54) unstable; urgency=low
[ Colin Watson ]
diff --git a/packages/partman/partman-target/debian/partman-target.templates b/packages/partman/partman-target/debian/partman-target.templates
index b26dc22..8ccac64 100644
--- a/packages/partman/partman-target/debian/partman-target.templates
+++ b/packages/partman/partman-target/debian/partman-target.templates
@@ -81,7 +81,8 @@ _Description: Do you want to resume partitioning?
Template: partman-target/choose_method
Type: select
# :sl2:
-Choices: ${CHOICES}
+Choices-C: ${CHOICES}
+Choices: ${DESCRIPTIONS}
_Description: How to use this partition:
Template: partman-target/text/method
Attachment:
signature.asc
Description: Digital signature