Hi,
Mark H Weaver <mhw@netris.org> skribis:
> I found them:
>
> ~/.cache/ibus/bus/registry
> /var/lib/gdm/.cache/ibus/bus/registry
>
> On my system, those files include absolute pathnames to programs in
> /gnu/store/a4r6q1fbfqapy5hrrxap1yg96rjgln6q-ibus-1.5.22, which I
> compiled last December.
Looks like <https://issues.guix.gnu.org/22707>.
The problem seems to generally affect GLib/GNOME-ish caches.
From a quick look at ibusregistry.c & co, I think the values that end up
in the cache are taken from these XML files:
--8<---------------cut here---------------start------------->8---
$ grep /gnu/store $(find $(guix build ibus) -name \*.xml)
/gnu/store/a7lxf1i35yqil6pxwxhzvr5q3xcqldyq-ibus-1.5.22/share/ibus/component/gtkpanel.xml: <exec>/gnu/store/a7lxf1i35yqil6pxwxhzvr5q3xcqldyq-ibus-1.5.22/libexec/ibus-ui-gtk3</exec>
/gnu/store/a7lxf1i35yqil6pxwxhzvr5q3xcqldyq-ibus-1.5.22/share/ibus/component/dconf.xml: <exec>/gnu/store/a7lxf1i35yqil6pxwxhzvr5q3xcqldyq-ibus-1.5.22/libexec/ibus-dconf</exec>
/gnu/store/a7lxf1i35yqil6pxwxhzvr5q3xcqldyq-ibus-1.5.22/share/ibus/component/simple.xml: <exec>/gnu/store/a7lxf1i35yqil6pxwxhzvr5q3xcqldyq-ibus-1.5.22/libexec/ibus-engine-simple</exec>
/gnu/store/a7lxf1i35yqil6pxwxhzvr5q3xcqldyq-ibus-1.5.22/share/ibus/component/gtkextension.xml: <exec>/gnu/store/a7lxf1i35yqil6pxwxhzvr5q3xcqldyq-ibus-1.5.22/libexec/ibus-extension-gtk3</exec>
--8<---------------cut here---------------end--------------->8---
It’s the ‘components’ field of _IBusRegistryPrivate:
--8<---------------cut here---------------start------------->8---
struct _IBusRegistryPrivate {
/* a list of IBusObservedPath objects. */
GList *observed_paths;
/* a list of IBusComponent objects that are created from component XML
* files (or from the cache of them). */
GList *components;
gboolean changed;
/* a mapping from GFile to GFileMonitor. */
GHashTable *monitor_table;
guint monitor_timeout_id;
};
--8<---------------cut here---------------end--------------->8---
The attached patch does the following:
1. change the above <exec> file names in XML files to relative file
names;
2. change ibuscomponent.c to automatically prepend $libexecdir to
<exec> items that are relative file names.
That way, XML files and thus caches should only contain relative file
names for ibus’ own executables.
The attached patch builds with:
guix build ibus --with-patch=ibus=/tmp/ibus.patch
… but I don’t know if it actually works. Testing welcome. :-)
Unfortunately this strategy doesn’t help with IBus extensions:
--8<---------------cut here---------------start------------->8---
$ grep exec $(find $(guix build ibus-anthy) -name \*.xml)
/gnu/store/d3mfffz41as1blfb28m8n461j42i6zjr-ibus-anthy-1.5.9/share/ibus/component/anthy.xml: <exec>/gnu/store/d3mfffz41as1blfb28m8n461j42i6zjr-ibus-anthy-1.5.9/libexec/ibus-engine-anthy --ibus</exec>
/gnu/store/d3mfffz41as1blfb28m8n461j42i6zjr-ibus-anthy-1.5.9/share/ibus/component/anthy.xml: <engines exec="/gnu/store/d3mfffz41as1blfb28m8n461j42i6zjr-ibus-anthy-1.5.9/libexec/ibus-engine-anthy --xml" />
--8<---------------cut here---------------end--------------->8---
Thoughts?
Ludo’.
Debbugs is free software and licensed under the terms of the
GNU Public License version 2. The current version can be
obtained from https://bugs.debian.org/debbugs-source/.