From: Alexander Kanavin <alexander.kanavin@linux.intel.com>
To: openembedded-core@lists.openembedded.org
Subject: [PATCH 3/4] gtk-immodules-cache.bbclass: convert cache creation to postinst_intercept mechanism
Date: Tue, 1 May 2018 21:06:45 +0300 [thread overview]
Message-ID: <20180501180646.28212-3-alexander.kanavin@linux.intel.com> (raw)
In-Reply-To: <20180501180646.28212-1-alexander.kanavin@linux.intel.com>
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>
---
meta/classes/gtk-immodules-cache.bbclass | 70 +++++++++-------------
.../postinst-intercepts/update_gtk_immodules_cache | 18 ++++++
2 files changed, 46 insertions(+), 42 deletions(-)
create mode 100644 scripts/postinst-intercepts/update_gtk_immodules_cache
diff --git a/meta/classes/gtk-immodules-cache.bbclass b/meta/classes/gtk-immodules-cache.bbclass
index 3d82dbe9e34..9bb0af8b26a 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 00000000000..e2b9ff74382
--- /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
--
2.16.1
next prev parent reply other threads:[~2018-05-01 18:12 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-01 18:06 [PATCH 1/4] lib/oe/package_manager: turn postinst failure warnings into bitbake failures Alexander Kanavin
2018-05-01 18:06 ` [PATCH 2/4] gtk+: do not look into $HOME when looking for modules Alexander Kanavin
2018-05-01 18:06 ` Alexander Kanavin [this message]
2018-05-01 18:06 ` [PATCH 4/4] sysvinit-inittab: do not use 'exit 1' to postpone to first boot Alexander Kanavin
2018-05-01 18:32 ` ✗ patchtest: failure for "lib/oe/package_manager: turn p..." and 3 more Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180501180646.28212-3-alexander.kanavin@linux.intel.com \
--to=alexander.kanavin@linux.intel.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox