[oe-commits] [openembedded-core] 23/28: gio-module-cache: Add class for Gio modules

git at git.openembedded.org git at git.openembedded.org
Sat Mar 26 08:04:32 UTC 2016


rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 2d81eaa39b4701836d322391a1f92232da21d9c7
Author: Jussi Kukkonen <jussi.kukkonen at intel.com>
AuthorDate: Wed Mar 23 10:59:07 2016 +0200

    gio-module-cache: Add class for Gio modules
    
    The new class uses gio-querymodules tool on postinst and postrm.
    This regenerates the module cache which is useful to avoid loading
    modules that are not needed at runtime: If a Gio module is not
    listed in the cache file it will always get loaded.
    
    * Add a postinst-intercept 'gio-module-cache': it runs
      gio-querymodules using qemuwrapper. This is required because the tool
      actually loads the modules to generate the cache.
    * Add a gio-module-cache class that adds postinstall and postrm
      scripts. In the sysroot population case use the new intercept.
    * Inherit the new class in glib-2.0, glib-networking and gconf.
    
    Fixes [YOCTO #9241].
    
    Signed-off-by: Jussi Kukkonen <jussi.kukkonen at intel.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/gio-module-cache.bbclass              | 37 ++++++++++++++++++++++
 meta/recipes-core/glib-2.0/glib.inc                |  2 +-
 .../glib-networking/glib-networking_2.46.1.bb      |  2 +-
 meta/recipes-gnome/gnome/gconf_3.2.6.bb            |  2 +-
 .../postinst-intercepts/update_gio_module_cache    |  7 ++++
 5 files changed, 47 insertions(+), 3 deletions(-)

diff --git a/meta/classes/gio-module-cache.bbclass b/meta/classes/gio-module-cache.bbclass
new file mode 100644
index 0000000..91461b1
--- /dev/null
+++ b/meta/classes/gio-module-cache.bbclass
@@ -0,0 +1,37 @@
+DEPENDS += "qemu-native"
+inherit qemu
+
+GIO_MODULE_PACKAGES ??= "${PN}"
+
+gio_module_cache_common() {
+if [ "x$D" != "x" ]; then
+    $INTERCEPT_DIR/postinst_intercept update_gio_module_cache ${PKG} \
+            mlprefix=${MLPREFIX} \
+            binprefix=${MLPREFIX} \
+            libdir=${libdir} \
+            base_libdir=${base_libdir} \
+            bindir=${bindir}
+else
+    ${libexecdir}/${MLPREFIX}gio-querymodules ${libdir}/gio/modules/
+fi
+}
+
+python populate_packages_append () {
+    packages = d.getVar('GIO_MODULE_PACKAGES', True).split()
+
+    for pkg in packages:
+        bb.note("adding gio-module-cache postinst and postrm scripts to %s" % pkg)
+
+        postinst = d.getVar('pkg_postinst_%s' % pkg, True)
+        if not postinst:
+            postinst = '#!/bin/sh\n'
+        postinst += d.getVar('gio_module_cache_common', True)
+        d.setVar('pkg_postinst_%s' % pkg, postinst)
+
+        postrm = d.getVar('pkg_postrm_%s' % pkg, True)
+        if not postrm:
+            postrm = '#!/bin/sh\n'
+        postrm += d.getVar('gio_module_cache_common', True)
+        d.setVar('pkg_postrm_%s' % pkg, postrm)
+}
+
diff --git a/meta/recipes-core/glib-2.0/glib.inc b/meta/recipes-core/glib-2.0/glib.inc
index 75a7d25..bce3ce7 100644
--- a/meta/recipes-core/glib-2.0/glib.inc
+++ b/meta/recipes-core/glib-2.0/glib.inc
@@ -27,7 +27,7 @@ PACKAGES =+ "${PN}-utils ${PN}-codegen"
 LEAD_SONAME = "libglib-2.0.*"
 FILES_${PN}-utils = "${bindir}/* ${datadir}/glib-2.0/gettext"
 
-inherit autotools gettext gtk-doc pkgconfig ptest-gnome upstream-version-is-even bash-completion
+inherit autotools gettext gtk-doc pkgconfig ptest-gnome upstream-version-is-even bash-completion gio-module-cache
 
 S = "${WORKDIR}/glib-${PV}"
 
diff --git a/meta/recipes-core/glib-networking/glib-networking_2.46.1.bb b/meta/recipes-core/glib-networking/glib-networking_2.46.1.bb
index 70be87c..749ac98 100644
--- a/meta/recipes-core/glib-networking/glib-networking_2.46.1.bb
+++ b/meta/recipes-core/glib-networking/glib-networking_2.46.1.bb
@@ -22,7 +22,7 @@ PACKAGECONFIG[pkcs11] = "--with-pkcs11,--without-pkcs11,p11-kit"
 
 EXTRA_OECONF = "--without-gnome-proxy"
 
-inherit gnomebase gettext upstream-version-is-even
+inherit gnomebase gettext upstream-version-is-even gio-module-cache
 
 FILES_${PN} += "${libdir}/gio/modules/libgio*.so ${datadir}/dbus-1/services/"
 FILES_${PN}-dev += "${libdir}/gio/modules/libgio*.la"
diff --git a/meta/recipes-gnome/gnome/gconf_3.2.6.bb b/meta/recipes-gnome/gnome/gconf_3.2.6.bb
index 76fca14..9e9f714 100644
--- a/meta/recipes-gnome/gnome/gconf_3.2.6.bb
+++ b/meta/recipes-gnome/gnome/gconf_3.2.6.bb
@@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
 
 DEPENDS = "glib-2.0 dbus dbus-glib libxml2 intltool-native"
 
-inherit gnomebase gtk-doc gettext gobject-introspection
+inherit gnomebase gtk-doc gettext gobject-introspection gio-module-cache
 
 SRC_URI = "${GNOME_MIRROR}/GConf/${@gnome_verdir("${PV}")}/GConf-${PV}.tar.xz;name=archive \
            file://remove_plus_from_invalid_characters_list.patch \
diff --git a/scripts/postinst-intercepts/update_gio_module_cache b/scripts/postinst-intercepts/update_gio_module_cache
new file mode 100644
index 0000000..fe46809
--- /dev/null
+++ b/scripts/postinst-intercepts/update_gio_module_cache
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+PSEUDO_UNLOAD=1 qemuwrapper -L $D -E LD_LIBRARY_PATH=$D${libdir}:$D${base_libdir} \
+        $D${libexecdir}/${binprefix}gio-querymodules $D${libdir}/gio/modules/
+

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list