Subject: bug#22707: IBus relies on possibly outdated ~/.cache/ibus/bus/registry

From: Ricardo Wurmus <[email-masked]>
Date: Tue, 16 Feb 2016 20:36:47 +0100

I have an annoying little problem with IBus.  IBus creates a binary
registry in ~/.cache/ibus/bus on first start(?) which contains the full
paths to store items such as

    /gnu/store/k3r...-ibus-1.5.11/libexec/ibus-dconf

The problem is that when updating the “ibus” package this registry is
invalid, but never invalidated or regenerated.  IBus will continue to
use the paths in the registry — even after they have disappeared after
“guix gc”.  This results in an unhelpful error when starting
“ibus-setup”:

    Can not execute default config program

This is because it tries to run “$oldstoreitem/libexec/ibus-dconf”,
which has been removed by garbage collection.

The “.cache” directory is not part of the profile, of course, so we
cannot automatically rebuild it.  Looking at the code it seems that IBus
first looks for a system registry, but this registry cannot be right as
the user may have installed additional IBus input methods and the system
registry (wherever that may be) is not writeable.

Should we prevent a registry in the “.cache” directory to be used and
try to make IBus look for a registry that could be generated as part of
generating a new profile generation?

~~ Ricardo