[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#583388: Non-US keyboard problem with graphical installer

severity 583388 serious
tag      583388 patch
(control bcc'd)

Julien Cristau <jcristau@debian.org> (26/06/2010):
> I can confirm this.  Looks like a cdebconf/gtk issue, there are two
> 'screenshot' and two 'go back' buttons on that screen, and syslog has:
> debconf: cdebconf_gtk (process:318): WARNING: cdebconf_gtk_choice_model_create_full failed.
> debconf: cdebconf_gtk (process:318): WARNING: tag "keyboard-configuration/layout" failed to display!
> which I guess are related.  Any cdebconf gurus could shed some light
> on this?

OK, let's call ourselves cdebconf gurus now that we found out what was
causing this.

1. Replicate the issue on a regular system for easy debugging:

   DEBCONF_USE_CDEBCONF=1 /usr/lib/cdebconf/debconf-loadtemplate keyboard-configuration /usr/lib/cdebconf/debconf-loadtemplate /var/lib/dpkg/info/keyboard-configuration.templates
   DEBCONF_DEBUG=. XAUTHORITY=/home/jcristau/.Xauthority DEBIAN_FRONTEND=gtk DEBCONF_USE_CDEBCONF=1 DISPLAY=:0 /usr/lib/cdebconf/dpkg-reconfigure -plow keyboard-configuration

2. Realize what's going on:

   Splitting [I, Will, Save, The, Whole, List, Here,]
   ERROR:/home/julien/src/debian.org/svn/d-i/packages/cdebconf/src/modules/frontend/gtk/choice_model.c:162:cdebconf_gtk_choice_model_create_full: assertion failed: (sorted_count == count)

3. Suspect what's causing this:

   Trailing comma in the (extra-long) keyboard layout choices?

4. Experiment:

   Remove the trailing comma from /var/lib/cdebconf/questions.dat, and
   try again. Same error, and the comma is back in that file.

5. Fix for real:

   Edit /var/lib/dpkg/info/keyboard-configuration.config, and add the
   following line in ask_debconf(), right before the if part, once all
   choices have been merged together:
      choices=`echo $choices | sed 's/,$//'`

   Patch (against svn) attached.

6. Profit:

   I'm going to call it a serious bug in console-setup-udeb, and a
   wishlist bug in cdebconf, which probably could be a bit more clueful
   and be able to deal gracefully with that extra comma. I'll leave
   commenting, objecting, cloning, reassigning, and whatevering to its

Many thanks to Julien for getting me started with the reproducibility
in a regular environment.

--- a/debian/keyboard-configuration.config
+++ b/debian/keyboard-configuration.config
@@ -160,6 +160,8 @@
 $choices2" | sed -e 's/$/,/'`
     choices=`echo $choices | sed 's/, *$//' | regex_unescape`
+    choices=`echo $choices | sed 's/,$//'`
     if echo "$choices" | grep '[^\\\\],' >/dev/null; then
 	db_subst $template CHOICES "$choices"
 	default_description=`echo "$kbdnames$add" |  

Attachment: signature.asc
Description: Digital signature

Reply to: