aboutsummaryrefslogtreecommitdiffstats
path: root/meta/classes/gio-module-cache.bbclass
diff options
context:
space:
mode:
authorJussi Kukkonen <jussi.kukkonen@intel.com>2016-03-23 10:59:07 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-03-28 15:54:51 +0100
commit168cf5502a2dda78348cc9679e37bed0c69c0208 (patch)
tree59b3a7fc9a4bf17cf7f4597d809d1f366cf659c4 /meta/classes/gio-module-cache.bbclass
parent832a499046e41be48fb035fa86df24589b94ada3 (diff)
downloadopenembedded-core-contrib-168cf5502a2dda78348cc9679e37bed0c69c0208.tar.gz
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@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/gio-module-cache.bbclass')
-rw-r--r--meta/classes/gio-module-cache.bbclass37
1 files changed, 37 insertions, 0 deletions
diff --git a/meta/classes/gio-module-cache.bbclass b/meta/classes/gio-module-cache.bbclass
new file mode 100644
index 0000000000..91461b11e7
--- /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)
+}
+