Please ignore this.

Unfortunately, the conditional inherit statement that works
seemingly in every recipe that's in openembedded-core and
others doesn't work in the Chromium recipe for some reason.

I will send a patch against gtk-icon-cache.bbclass in openembedded-core.

2022. 02. 23. 17:54 keltezéssel, Zoltan Boszormenyi via lists.openembedded.org 
írta:
From: Zoltán Böszörményi <[email protected]>

gtk4 stores its icon cache in a different location than either gtk+
or gtk+3 and uses a different binary to update this cache. It's one
of the wonders of the parallel installable major GTK versions.

So, if a recipe wants to use gtk4, "inherit gtk-icon-cache" would
use the utility from GTK 3 and this class also adds the older
version to RDEPENDS. A new bbclass is needed to fix this.

Signed-off-by: Zoltán Böszörményi <[email protected]>
---
  meta-gnome/classes/gtk4-icon-cache.bbclass | 84 ++++++++++++++++++++++
  1 file changed, 84 insertions(+)
  create mode 100644 meta-gnome/classes/gtk4-icon-cache.bbclass

diff --git a/meta-gnome/classes/gtk4-icon-cache.bbclass 
b/meta-gnome/classes/gtk4-icon-cache.bbclass
new file mode 100644
index 000000000..de9808774
--- /dev/null
+++ b/meta-gnome/classes/gtk4-icon-cache.bbclass
@@ -0,0 +1,84 @@
+FILES:${PN} += "${datadir}/icons/hicolor"
+
+#gtk4 require GTK3DISTROFEATURES, DEPENDS on it make all the
+#recipes inherit this class require GTK3DISTROFEATURES
+inherit features_check
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+DEPENDS +=" ${@['hicolor-icon-theme', '']['${BPN}' == 'hicolor-icon-theme']} \
+            ${@['gdk-pixbuf', '']['${BPN}' == 'gdk-pixbuf']} \
+            ${@['gtk4', '']['${BPN}' == 'gtk4']} \
+            gtk4-native \
+"
+
+PACKAGE_WRITE_DEPS += "gtk4-native gdk-pixbuf-native"
+
+gtk_icon_cache_postinst() {
+if [ "x$D" != "x" ]; then
+       $INTERCEPT_DIR/postinst_intercept update_gtk_icon_cache ${PKG} \
+               mlprefix=${MLPREFIX} \
+               libdir_native=${libdir_native}
+else
+
+       # Update the pixbuf loaders in case they haven't been registered yet
+       ${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders --update-cache
+
+       for icondir in /usr/share/icons/* ; do
+               if [ -d $icondir ] ; then
+                       gtk4-update-icon-cache -fqt  $icondir
+               fi
+       done
+fi
+}
+
+gtk_icon_cache_postrm() {
+if [ "x$D" != "x" ]; then
+       $INTERCEPT_DIR/postinst_intercept update_gtk_icon_cache ${PKG} \
+               mlprefix=${MLPREFIX} \
+               libdir=${libdir}
+else
+       for icondir in /usr/share/icons/* ; do
+               if [ -d $icondir ] ; then
+                       gtk4-update-icon-cache -qt  $icondir
+               fi
+       done
+fi
+}
+
+python populate_packages:append () {
+    packages = d.getVar('PACKAGES').split()
+    pkgdest =  d.getVar('PKGDEST')
+
+    for pkg in packages:
+        icon_dir = '%s/%s/%s/icons' % (pkgdest, pkg, d.getVar('datadir'))
+        if not os.path.exists(icon_dir):
+            continue
+
+        bb.note("adding hicolor-icon-theme dependency to %s" % pkg)
+        rdepends = ' ' + d.getVar('MLPREFIX', False) + "hicolor-icon-theme"
+        d.appendVar('RDEPENDS:%s' % pkg, rdepends)
+
+        #gtk_icon_cache_postinst depend on gdk-pixbuf and gtk4
+        bb.note("adding gdk-pixbuf dependency to %s" % pkg)
+        rdepends = ' ' + d.getVar('MLPREFIX', False) + "gdk-pixbuf"
+        d.appendVar('RDEPENDS:%s' % pkg, rdepends)
+
+        bb.note("adding gtk4 dependency to %s" % pkg)
+        rdepends = ' ' + d.getVar('MLPREFIX', False) + "gtk4"
+        d.appendVar('RDEPENDS:%s' % pkg, rdepends)
+
+        bb.note("adding gtk-icon-cache postinst and postrm scripts to %s" % 
pkg)
+
+        postinst = d.getVar('pkg_postinst:%s' % pkg)
+        if not postinst:
+            postinst = '#!/bin/sh\n'
+        postinst += d.getVar('gtk_icon_cache_postinst')
+        d.setVar('pkg_postinst:%s' % pkg, postinst)
+
+        postrm = d.getVar('pkg_postrm:%s' % pkg)
+        if not postrm:
+            postrm = '#!/bin/sh\n'
+        postrm += d.getVar('gtk_icon_cache_postrm')
+        d.setVar('pkg_postrm:%s' % pkg, postrm)
+}
+






-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#95496): 
https://lists.openembedded.org/g/openembedded-devel/message/95496
Mute This Topic: https://lists.openembedded.org/mt/89345188/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to