summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kanavin <alexander.kanavin@linux.intel.com>2018-06-11 16:38:17 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-06-16 22:34:12 +0100
commitef092e70a17c34586b3f9236a7afbd554354c636 (patch)
tree96aadf37339797fa10f07b212c75642ba4f2ca54
parentf2572f0bfb4b62971642901131063ea891038811 (diff)
downloadopenembedded-core-contrib-ef092e70a17c34586b3f9236a7afbd554354c636.tar.gz
openembedded-core-contrib-ef092e70a17c34586b3f9236a7afbd554354c636.tar.bz2
openembedded-core-contrib-ef092e70a17c34586b3f9236a7afbd554354c636.zip
gtk-immodules-cache.bbclass: convert cache creation to postinst_intercept mechanism
This has the following benefits: - consistent with how the other caches are created into target rootfs - only runs once per package manager transaction, instead of once per every immodule package - correctly postpones to first boot if qemu is not working; from postinst itself this would've required special arrangements to avoid what is now a do_rootfs failure. Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/gtk-immodules-cache.bbclass70
-rw-r--r--scripts/postinst-intercepts/update_gtk_immodules_cache18
2 files changed, 46 insertions, 42 deletions
diff --git a/meta/classes/gtk-immodules-cache.bbclass b/meta/classes/gtk-immodules-cache.bbclass
index 3d82dbe9e3..9bb0af8b26 100644
--- a/meta/classes/gtk-immodules-cache.bbclass
+++ b/meta/classes/gtk-immodules-cache.bbclass
@@ -10,53 +10,39 @@ GTKIMMODULES_PACKAGES ?= "${PN}"
gtk_immodule_cache_postinst() {
if [ "x$D" != "x" ]; then
- if [ -x $D${bindir}/gtk-query-immodules-2.0 ]; then
- IMFILES=$(ls $D${libdir}/gtk-2.0/*/immodules/*.so)
- ${@qemu_run_binary(d, '$D', '${bindir}/gtk-query-immodules-2.0')} \
- $IMFILES > $D${libdir}/gtk-2.0/2.10.0/immodules.cache 2>/dev/null &&
- sed -i -e "s:$D::" $D${libdir}/gtk-2.0/2.10.0/immodules.cache
- fi
- if [ -x $D${bindir}/gtk-query-immodules-3.0 ]; then
- IMFILES=$(ls $D${libdir}/gtk-3.0/*/immodules/*.so)
- ${@qemu_run_binary(d, '$D', '${bindir}/gtk-query-immodules-3.0')} \
- $IMFILES > $D${libdir}/gtk-3.0/3.0.0/immodules.cache 2>/dev/null &&
- sed -i -e "s:$D::" $D${libdir}/gtk-3.0/3.0.0/immodules.cache
- fi
-
- [ $? -ne 0 ] && exit 1
- exit 0
-fi
-if [ ! -z `which gtk-query-immodules-2.0` ]; then
- gtk-query-immodules-2.0 > ${libdir}/gtk-2.0/2.10.0/immodules.cache
-fi
-if [ ! -z `which gtk-query-immodules-3.0` ]; then
- gtk-query-immodules-3.0 > ${libdir}/gtk-3.0/3.0.0/immodules.cache
+ $INTERCEPT_DIR/postinst_intercept update_gtk_immodules_cache ${PKG} \
+ mlprefix=${MLPREFIX} \
+ binprefix=${MLPREFIX} \
+ libdir=${libdir} \
+ libexecdir=${libexecdir} \
+ base_libdir=${base_libdir} \
+ bindir=${bindir}
+else
+ if [ ! -z `which gtk-query-immodules-2.0` ]; then
+ gtk-query-immodules-2.0 > ${libdir}/gtk-2.0/2.10.0/immodules.cache
+ fi
+ if [ ! -z `which gtk-query-immodules-3.0` ]; then
+ gtk-query-immodules-3.0 > ${libdir}/gtk-3.0/3.0.0/immodules.cache
+ fi
fi
}
gtk_immodule_cache_postrm() {
if [ "x$D" != "x" ]; then
- if [ -x $D${bindir}/gtk-query-immodules-2.0 ]; then
- IMFILES=$(ls $D${libdir}/gtk-2.0/*/immodules/*.so)
- ${@qemu_run_binary(d, '$D', '${bindir}/gtk-query-immodules-2.0')} \
- $IMFILES > $D${libdir}/gtk-2.0/2.10.0/immodules.cache 2>/dev/null &&
- sed -i -e "s:$D::" $D${libdir}/gtk-2.0/2.10.0/immodules.cache
- fi
- if [ -x $D${bindir}/gtk-query-immodules-3.0 ]; then
- IMFILES=$(ls $D${libdir}/gtk-3.0/*/immodules/*.so)
- ${@qemu_run_binary(d, '$D', '${bindir}/gtk-query-immodules-3.0')} \
- $IMFILES > $D${libdir}/gtk-3.0/3.0.0/immodules.cache 2>/dev/null &&
- sed -i -e "s:$D::" $D${libdir}/gtk-3.0/3.0.0/immodules.cache
- fi
-
- [ $? -ne 0 ] && exit 1
- exit 0
-fi
-if [ ! -z `which gtk-query-immodules-2.0` ]; then
- gtk-query-immodules-2.0 > ${libdir}/gtk-2.0/2.10.0/immodules.cache
-fi
-if [ ! -z `which gtk-query-immodules-3.0` ]; then
- gtk-query-immodules-3.0 > ${libdir}/gtk-3.0/3.0.0/immodules.cache
+ $INTERCEPT_DIR/postinst_intercept update_gtk_immodules_cache ${PKG} \
+ mlprefix=${MLPREFIX} \
+ binprefix=${MLPREFIX} \
+ libdir=${libdir} \
+ libexecdir=${libexecdir} \
+ base_libdir=${base_libdir} \
+ bindir=${bindir}
+else
+ if [ ! -z `which gtk-query-immodules-2.0` ]; then
+ gtk-query-immodules-2.0 > ${libdir}/gtk-2.0/2.10.0/immodules.cache
+ fi
+ if [ ! -z `which gtk-query-immodules-3.0` ]; then
+ gtk-query-immodules-3.0 > ${libdir}/gtk-3.0/3.0.0/immodules.cache
+ fi
fi
}
diff --git a/scripts/postinst-intercepts/update_gtk_immodules_cache b/scripts/postinst-intercepts/update_gtk_immodules_cache
new file mode 100644
index 0000000000..e2b9ff7438
--- /dev/null
+++ b/scripts/postinst-intercepts/update_gtk_immodules_cache
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+set -e
+
+if [ -x $D${bindir}/gtk-query-immodules-2.0 ]; then
+ PSEUDO_UNLOAD=1 qemuwrapper -L $D -E LD_LIBRARY_PATH=$D${libdir}:$D${base_libdir} \
+ $D/${bindir}/gtk-query-immodules-2.0 \
+ > $D${libdir}/gtk-2.0/2.10.0/immodules.cache &&
+ sed -i -e "s:$D::" $D${libdir}/gtk-2.0/2.10.0/immodules.cache
+ chown root:root $D${libdir}/gtk-2.0/2.10.0/immodules.cache
+fi
+if [ -x $D${bindir}/gtk-query-immodules-3.0 ]; then
+ PSEUDO_UNLOAD=1 qemuwrapper -L $D -E LD_LIBRARY_PATH=$D${libdir}:$D${base_libdir} \
+ $D/${bindir}/gtk-query-immodules-3.0 \
+ > $D${libdir}/gtk-3.0/3.0.0/immodules.cache &&
+ sed -i -e "s:$D::" $D${libdir}/gtk-3.0/3.0.0/immodules.cache
+ chown root:root $D${libdir}/gtk-3.0/3.0.0/immodules.cache
+fi