Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 462764 - dev-libs/{libindicator,libdbusmenu,libappindicator} multilib patches
Summary: dev-libs/{libindicator,libdbusmenu,libappindicator} multilib patches
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Library (show other bugs)
Hardware: All Linux
: Normal enhancement (vote)
Assignee: Ayatana Bugs
Keywords: PATCH
Depends on:
Blocks: gx86-multilib
  Show dependency tree
Reported: 2013-03-23 10:35 UTC by Mario Kicherer
Modified: 2015-05-07 19:49 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---

libindicator.patch (libindicator.patch,1.69 KB, patch)
2013-03-23 10:37 UTC, Mario Kicherer
Details | Diff
libdbusmenu.patch (libdbusmenu.patch,2.13 KB, patch)
2013-03-23 10:41 UTC, Mario Kicherer
Details | Diff
libappindicator.patch (libappindicator.patch,2.26 KB, patch)
2013-03-23 10:45 UTC, Mario Kicherer
Details | Diff
libindicator.patch (libindicator2.patch,1.67 KB, patch)
2013-03-23 11:33 UTC, Mario Kicherer
Details | Diff
gobject-introspection.patch (gobject-introspection.patch,2.10 KB, patch)
2013-03-23 12:31 UTC, Mario Kicherer
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Mario Kicherer 2013-03-23 10:35:10 UTC
Valve's Steam client uses the appindicator framework to create a tray menu. The client is only available as 32bit version and therefore, a multilib version of mentioned ebuilds is required. Additional info with the patches follows.

Reproducible: Always
Comment 1 Mario Kicherer 2013-03-23 10:37:24 UTC
Created attachment 342958 [details, diff]

This creates a multilib version of the libindicator ebuild. It also introduces a gtk3 use flag as the steam client requires gtk2 and gtk2 is used if gtk3 is not enabled.
Comment 2 Mario Kicherer 2013-03-23 10:41:28 UTC
Created attachment 342960 [details, diff]

This patch also introduces multilib and a gtk3 use flag in the ebuild. The PKG_CONFIG_PATH export is required as workaround - a patch has been reported in a separate bug.
Comment 3 Mario Kicherer 2013-03-23 10:45:37 UTC
Created attachment 342962 [details, diff]

This patch introduces multilib and a gtk3 use flag. The building of python bindings is disabled by the build system for gtk3 but enabled for gtk2. Building those bindings fails for me with and without multilib, therefore I disabled the python bindings. Unfortunately it's not as easy as in the mono case. It also adds $(use_enable introspection) to the econf flags, this was missing in the original ebuild.
Comment 4 Mario Kicherer 2013-03-23 10:47:38 UTC
The patched ebuilds can be found here:
Comment 5 Mario Kicherer 2013-03-23 11:33:19 UTC
Created attachment 342970 [details, diff]

Small fix for the libindicator patch.

I just remembered why I didn't post these patches before: introspection is not multilib capable. I'm currently working on this.
Comment 6 Mario Kicherer 2013-03-23 12:31:58 UTC
Created attachment 342980 [details, diff]

Multilib patch for gobject-introspection ebuild. I guess this would require an own bug but I post it here so we can discuss if it's even worth to request inclusion.
Comment 7 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2013-03-23 14:07:39 UTC
AFAICS we have separate GTK+2 and GTK+3 ebuilds for the libs. Please use that properly rather than adding USE=gtk3.

Also, the official QA-blessed way of running multilib with autotools is through the use of autotools-multilib eclass. Please don't use multilib-minimal unless dealing with a messy build system.
Comment 8 Jonathan Callen (RETIRED) gentoo-dev 2013-03-23 14:16:48 UTC
(In reply to comment #6)
> Created attachment 342980 [details, diff] [details, diff]
> gobject-introspection.patch
> Multilib patch for gobject-introspection ebuild. I guess this would require
> an own bug but I post it here so we can discuss if it's even worth to
> request inclusion.

Please do *not* assume that $(get_libdir) will be "lib32" for x86-on-amd64. It is possible (and, from what I understand, eventually will be a primary configuration) to have LIBDIR_x86=lib (without a lib->lib64 symlink), which makes get_libdir() return "lib" for x86-on-amd64, and "lib64" for amd64.
Comment 9 Samuli Suominen (RETIRED) gentoo-dev 2013-04-01 09:49:17 UTC
(In reply to comment #7)
> AFAICS we have separate GTK+2 and GTK+3 ebuilds for the libs. Please use
> that properly rather than adding USE=gtk3.

USE=gtk3 was purposely removed already from every ayatana ebuilds, and since
we don't have staffing we decided to only maintain GTK+ 3.x versions in tree currently

if you want support for both 2 and 3, then you should submit patches to upstream to allow clean splitting which isn't possible with the current way
Comment 10 Mario Kicherer 2013-04-01 13:33:36 UTC
First, thank you all for your hints, I'm currently fiddling with those changes.

If gtk2 and gtk3 versions cannot be installed in parallel, wouldn't it be better to remove slotting and handle the choice using use-flags?

The gtk2 versions of those three ebuilds work for me and some of the overlay users so far. With "gtk3" use flag the ebuilds should behave like those in main tree. If gtk2 cannot be supported, couldn't we just mask it in main tree?

I'm not completely happy with my approach either but I think it makes things a little bit less troublesome.
Comment 11 Mario Kicherer 2013-04-01 13:36:07 UTC
Sorry, I mean, adding gtk3 to package.use.force for those packages.
Comment 12 Tony Murray 2014-10-17 16:30:36 UTC
Is there anyway we could support both gtk2 and gtk3 libraries in the ebuild?
It looks like the library names do not collide.

This is important for supporting system tray icons in Plasma Desktop 5.
Comment 13 Tony Murray 2014-10-17 16:37:29 UTC
For reference:

It looks like other distros have solved this by multiple builds and install.  I suspect it will work to run two builds and install them into the same tree.  I'll see if I can modify the ebuilds to do that.
Comment 14 Tony Murray 2014-10-20 14:20:42 UTC
I've  created  some initial builds for this that support building both  gtk2 and gtk3 libraries.

They are incomplete, but I wanted input on the approach before I polish them.

libdbusmenu and libappindicator are not working on multilib and I skip non-native gtk3 builds because of dependencies that don't support multilib.

The libappindicators bindings do some weird things in the gtk2 build, so if we are building gtk2 I yank them out right now, that needs to be fixed.

Please let me know if this is worth more work from me, otherwise, I'll just get them good enough for my own uses.  (System tray support in Plasma  5)
Comment 15 Karol Herbst 2014-11-21 17:07:35 UTC
libappindicator can be slotted very easily without file collisons:

I think this is the best approach for libappindicator
Comment 16 Karol Herbst 2015-02-20 15:21:37 UTC
I've updated the stuff a little bit:
it basically contains some gtk2/gtk3 handling inside libappindicator and libdbusmenu.

I could integrate the multilib parts from indicator and appindicator, too.
Comment 17 Karol Herbst 2015-02-20 17:42:11 UTC
so on my github branch are now the needed bits for libappindicator multilib gtk2/gtk3 and multilib sni-qt. Both seems to work nice (tested sni-qt with skype and libappindicator with various gtk apps)
Comment 18 Karol Herbst 2015-03-01 19:14:39 UTC
newest ebuilds are here:
Comment 19 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2015-04-05 15:10:55 UTC
I'm starting to apply those changes. I'm going to start with the slotmove + gtk->gtk3 flag change.
Comment 20 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2015-04-19 16:31:02 UTC
+*libdbusmenu-12.10.2-r2 (19 Apr 2015)
+  19 Apr 2015; Michał Górny <>
+  +files/libdbusmenu-12.10.2-gtk2-signal-fix.patch,
+  +libdbusmenu-12.10.2-r2.ebuild, metadata.xml:
+  Enable optional GTK+2 support. Enable multilib support. Remove gtk-doc install
+  hacks, just install into the proper gtk-doc location. Based on the work done
+  by Karol Herbst on
+  mirror/pull/65. Part of bug #462764.
Comment 21 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2015-05-07 19:49:53 UTC
And all shall be done now. Please test.