diff options
author | Jussi Kukkonen <jussi.kukkonen@intel.com> | 2016-03-23 10:59:07 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-03-28 15:55:49 +0100 |
commit | cef8bc9e80cf5e3620df1cb54e6ac0305f8f92d9 (patch) | |
tree | 8f7cdc32aef9e095522d946af2d52c8489ee87ad | |
parent | 0cda9d8c8ddf67bad1a043c3486e1febcab646cf (diff) | |
download | poky-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.bbclass | 37 | ||||
-rw-r--r-- | meta/recipes-core/glib-2.0/glib.inc | 2 | ||||
-rw-r--r-- | meta/recipes-core/glib-networking/glib-networking_2.46.1.bb | 2 | ||||
-rw-r--r-- | meta/recipes-gnome/gnome/gconf_3.2.6.bb | 2 | ||||
-rw-r--r-- | scripts/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 0000000000..91461b11e7 --- /dev/null +++ b/meta/classes/gio-module-cache.bbclass | |||
@@ -0,0 +1,37 @@ | |||
1 | DEPENDS += "qemu-native" | ||
2 | inherit qemu | ||
3 | |||
4 | GIO_MODULE_PACKAGES ??= "${PN}" | ||
5 | |||
6 | gio_module_cache_common() { | ||
7 | if [ "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} | ||
14 | else | ||
15 | ${libexecdir}/${MLPREFIX}gio-querymodules ${libdir}/gio/modules/ | ||
16 | fi | ||
17 | } | ||
18 | |||
19 | python 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" | |||
27 | LEAD_SONAME = "libglib-2.0.*" | 27 | LEAD_SONAME = "libglib-2.0.*" |
28 | FILES_${PN}-utils = "${bindir}/* ${datadir}/glib-2.0/gettext" | 28 | FILES_${PN}-utils = "${bindir}/* ${datadir}/glib-2.0/gettext" |
29 | 29 | ||
30 | inherit autotools gettext gtk-doc pkgconfig ptest-gnome upstream-version-is-even bash-completion | 30 | inherit autotools gettext gtk-doc pkgconfig ptest-gnome upstream-version-is-even bash-completion gio-module-cache |
31 | 31 | ||
32 | S = "${WORKDIR}/glib-${PV}" | 32 | S = "${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 | ||
23 | EXTRA_OECONF = "--without-gnome-proxy" | 23 | EXTRA_OECONF = "--without-gnome-proxy" |
24 | 24 | ||
25 | inherit gnomebase gettext upstream-version-is-even | 25 | inherit gnomebase gettext upstream-version-is-even gio-module-cache |
26 | 26 | ||
27 | FILES_${PN} += "${libdir}/gio/modules/libgio*.so ${datadir}/dbus-1/services/" | 27 | FILES_${PN} += "${libdir}/gio/modules/libgio*.so ${datadir}/dbus-1/services/" |
28 | FILES_${PN}-dev += "${libdir}/gio/modules/libgio*.la" | 28 | 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 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 | ||
6 | DEPENDS = "glib-2.0 dbus dbus-glib libxml2 intltool-native" | 6 | DEPENDS = "glib-2.0 dbus dbus-glib libxml2 intltool-native" |
7 | 7 | ||
8 | inherit gnomebase gtk-doc gettext gobject-introspection | 8 | inherit gnomebase gtk-doc gettext gobject-introspection gio-module-cache |
9 | 9 | ||
10 | SRC_URI = "${GNOME_MIRROR}/GConf/${@gnome_verdir("${PV}")}/GConf-${PV}.tar.xz;name=archive \ | 10 | SRC_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 | |||
3 | set -e | ||
4 | |||
5 | PSEUDO_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 | |||