summaryrefslogtreecommitdiffstats
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:55:49 +0100
commitcef8bc9e80cf5e3620df1cb54e6ac0305f8f92d9 (patch)
tree8f7cdc32aef9e095522d946af2d52c8489ee87ad
parent0cda9d8c8ddf67bad1a043c3486e1febcab646cf (diff)
downloadpoky-cef8bc9e80cf5e3620df1cb54e6ac0305f8f92d9.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]. (From OE-Core rev: 168cf5502a2dda78348cc9679e37bed0c69c0208) Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/gio-module-cache.bbclass37
-rw-r--r--meta/recipes-core/glib-2.0/glib.inc2
-rw-r--r--meta/recipes-core/glib-networking/glib-networking_2.46.1.bb2
-rw-r--r--meta/recipes-gnome/gnome/gconf_3.2.6.bb2
-rw-r--r--scripts/postinst-intercepts/update_gio_module_cache7
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 0000000000..91461b11e7
--- /dev/null
+++ b/meta/classes/gio-module-cache.bbclass
@@ -0,0 +1,37 @@
1DEPENDS += "qemu-native"
2inherit qemu
3
4GIO_MODULE_PACKAGES ??= "${PN}"
5
6gio_module_cache_common() {
7if [ "x$D" != "x" ]; then
8 $INTERCEPT_DIR/postinst_intercept update_gio_module_cache ${PKG} \
9 mlprefix=${MLPREFIX} \
10 binprefix=${MLPREFIX} \
11 libdir=${libdir} \
12 base_libdir=${base_libdir} \
13 bindir=${bindir}
14else
15 ${libexecdir}/${MLPREFIX}gio-querymodules ${libdir}/gio/modules/
16fi
17}
18
19python populate_packages_append () {
20 packages = d.getVar('GIO_MODULE_PACKAGES', True).split()
21
22 for pkg in packages:
23 bb.note("adding gio-module-cache postinst and postrm scripts to %s" % pkg)
24
25 postinst = d.getVar('pkg_postinst_%s' % pkg, True)
26 if not postinst:
27 postinst = '#!/bin/sh\n'
28 postinst += d.getVar('gio_module_cache_common', True)
29 d.setVar('pkg_postinst_%s' % pkg, postinst)
30
31 postrm = d.getVar('pkg_postrm_%s' % pkg, True)
32 if not postrm:
33 postrm = '#!/bin/sh\n'
34 postrm += d.getVar('gio_module_cache_common', True)
35 d.setVar('pkg_postrm_%s' % pkg, postrm)
36}
37
diff --git a/meta/recipes-core/glib-2.0/glib.inc b/meta/recipes-core/glib-2.0/glib.inc
index 75a7d250d8..bce3ce7bea 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"
27LEAD_SONAME = "libglib-2.0.*" 27LEAD_SONAME = "libglib-2.0.*"
28FILES_${PN}-utils = "${bindir}/* ${datadir}/glib-2.0/gettext" 28FILES_${PN}-utils = "${bindir}/* ${datadir}/glib-2.0/gettext"
29 29
30inherit autotools gettext gtk-doc pkgconfig ptest-gnome upstream-version-is-even bash-completion 30inherit autotools gettext gtk-doc pkgconfig ptest-gnome upstream-version-is-even bash-completion gio-module-cache
31 31
32S = "${WORKDIR}/glib-${PV}" 32S = "${WORKDIR}/glib-${PV}"
33 33
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 70be87c8c0..749ac988ab 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"
22 22
23EXTRA_OECONF = "--without-gnome-proxy" 23EXTRA_OECONF = "--without-gnome-proxy"
24 24
25inherit gnomebase gettext upstream-version-is-even 25inherit gnomebase gettext upstream-version-is-even gio-module-cache
26 26
27FILES_${PN} += "${libdir}/gio/modules/libgio*.so ${datadir}/dbus-1/services/" 27FILES_${PN} += "${libdir}/gio/modules/libgio*.so ${datadir}/dbus-1/services/"
28FILES_${PN}-dev += "${libdir}/gio/modules/libgio*.la" 28FILES_${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 76fca14234..9e9f714282 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"
5 5
6DEPENDS = "glib-2.0 dbus dbus-glib libxml2 intltool-native" 6DEPENDS = "glib-2.0 dbus dbus-glib libxml2 intltool-native"
7 7
8inherit gnomebase gtk-doc gettext gobject-introspection 8inherit gnomebase gtk-doc gettext gobject-introspection gio-module-cache
9 9
10SRC_URI = "${GNOME_MIRROR}/GConf/${@gnome_verdir("${PV}")}/GConf-${PV}.tar.xz;name=archive \ 10SRC_URI = "${GNOME_MIRROR}/GConf/${@gnome_verdir("${PV}")}/GConf-${PV}.tar.xz;name=archive \
11 file://remove_plus_from_invalid_characters_list.patch \ 11 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 0000000000..fe468092cf
--- /dev/null
+++ b/scripts/postinst-intercepts/update_gio_module_cache
@@ -0,0 +1,7 @@
1#!/bin/sh
2
3set -e
4
5PSEUDO_UNLOAD=1 qemuwrapper -L $D -E LD_LIBRARY_PATH=$D${libdir}:$D${base_libdir} \
6 $D${libexecdir}/${binprefix}gio-querymodules $D${libdir}/gio/modules/
7