← Back to team overview

desktop-packages team mailing list archive

[Bug 908801] [NEW] libgtk-3-0:<arch>.postinst erase IM cache file, that breaks GTK-3 apps IM environment.

 

You have been subscribed to a public bug:

/var/lib/dpkg/info/libgtk-3-0:<arch>.postinst breaks InputMethod(IM)
cache file(immodules.cache), so that breaks IM environment for GTK-3
based applications.

[How to reproduce]

1) install precise
2) sudo apt-get update && sudo apt-get upgrade libgtk-3-0=3.3.4-0ubuntu2
3) open gnome-terminal
4) Type ctrl-space(or your IM invoke key)

[Actual results]

IM(e.g. ibus) does not invoked. But, non GTK-3 application (such as
Firefox) could use ibus.

[Expect results]

IM invoked.

[Root cause/Background]

In many IM stacks, that use /usr/lib/<arch>/gtk-3.0/3.0.0/immodules.cache file for invoking. 
If that file has exists && empty, IM stacks could not start on GTK-3 applications.

in GTK-3 postinst scriptlet(e.g.
/var/lib/dpkg/info/libgtk-3-0:i386.postinst), that uses shell-globs with
unsafe way. If glob files does not exist, gtk-query-immodules-3.0
command does not output anything. So, /usr/lib/i386-linux-
gnu/gtk-3.0/3.0.0/immodules.cache file xed out by redirectiton.

if [ "$1" = triggered ]; then
    for trigger in $2; do
        if ! [ -d $trigger ]; then
            continue
        fi
        case $trigger in
          /usr/lib/i386-linux-gnu/gtk-3.0/3.0.0/immodules|/usr/lib/gtk-3.0/3.0.0/immodules)
            # This is triggered everytime an application installs a
            # GTK immodule loader
            /usr/lib/i386-linux-gnu/libgtk-3-0/gtk-query-immodules-3.0 /usr/lib/i386-linux-gnu/gtk-3.0/3.0.0/immodules/*.so /usr/lib/gtk-3.0/3.0.0/immodules/*.so > /usr/lib/i386-linux-gnu/gtk-3.0/3.0.0/immodules.cache || true
            ;;
        esac
    done
    exit 0
fi


e.g.:
# /usr/lib/i386-linux-gnu/libgtk-3-0/gtk-query-immodules-3.0 /usr/lib/i386-linux-gnu/gtk-3.0/3.0.0/immodules/*.so /usr/lib/gtk-3.0/3.0.0/immodules/*.so 
/usr/lib/i386-linux-gnu/libgtk-3-0/gtk-query-immodules-3.0 /usr/lib/i386-linux-gnu/gtk-3.0/3.0.0/immodules/*.so /usr/lib/gtk-3.0/3.0.0/immodules/*.so 
Cannot load module /usr/lib/gtk-3.0/3.0.0/immodules/*.so: /usr/lib/gtk-3.0/3.0.0/immodules/*.so: cannot open shared object file: No such file or directory
/usr/lib/gtk-3.0/3.0.0/immodules/*.so does not export GTK+ IM module API: /usr/lib/gtk-3.0/3.0.0/immodules/*.so: cannot open shared object file: No such file or directory


----------------------------------------------------------------

ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: libgtk-3-0 3.3.4-0ubuntu2
ProcVersionSignature: Ubuntu 3.0.0-13.22-generic-pae 3.0.6
Uname: Linux 3.0.0-13-generic-pae i686
ApportVersion: 1.90-0ubuntu1
Architecture: i386
Date: Tue Dec 27 00:45:22 2011
InstallationMedia: Ubuntu 11.10 "Oneiric" - Build i386 LIVE Binary 20111014-16:01
ProcEnviron:
 PATH=(custom, user)
 LANG=ja_JP.utf8
 SHELL=/bin/zsh
SourcePackage: gtk+3.0
UpgradeStatus: Upgraded to precise on 2011-12-13 (12 days ago)

** Affects: gtk+3.0 (Ubuntu)
     Importance: High
         Status: Triaged


** Tags: apport-bug i386 precise running-unity
-- 
libgtk-3-0:<arch>.postinst erase IM cache file, that breaks GTK-3 apps IM environment.
https://bugs.launchpad.net/bugs/908801
You received this bug notification because you are a member of Desktop Packages, which is subscribed to gtk+3.0 in Ubuntu.


References