summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@intel.com>2018-03-02 14:06:49 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-03-06 06:19:18 -0800
commitbe18eff13960421a56dee23d4eac91320d3e3e66 (patch)
treecefd98d4be3d574ad1c675f990a412b7327c4b42
parentbd5424f5b05a0a65471a77632efe7b9907370217 (diff)
downloadpoky-be18eff13960421a56dee23d4eac91320d3e3e66.tar.gz
xcb-proto: solve python cache collision
Because I didn't really want python3-native to be at the bottom of the entire X11 stack this recipe jumps through a small hoop to use the host Python to run some modules it installs into the sysroot. The Makefile compiles the Python module, which is good as the cache file is recorded in the sstate manifest so when the package is removed from the sysroot all of it is removed. However in an enviroment where the sstate is shared between multiple hosts it is possible that a different Python is used and this will generate a new cache when the code is executed, which is not recorded in the manifest. Eventually you'll end up with ownerless cache files in a sysroot which conflict with the same file coming from a sstate upgrade. Solve this with a SSTATE_INST_POSTRM which is ran when sstate is removed to ensure that there are no Python cache files left behind. [ YOCTO #11809 ] (From OE-Core rev: 6f6a2b5ff7ec23bd3782f0c3521f3576101cbc9d) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb17
1 files changed, 17 insertions, 0 deletions
diff --git a/meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb b/meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb
index 712ab6c59a..25a8373e0b 100644
--- a/meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb
+++ b/meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb
@@ -34,3 +34,20 @@ RDEPENDS_${PN}-dev = ""
34RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" 34RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
35 35
36BBCLASSEXTEND = "native nativesdk" 36BBCLASSEXTEND = "native nativesdk"
37
38# Need to do this dance because we're forcing the use of host Python above and
39# if xcb-proto is built with Py3.5 and then re-used from sstate on a host with
40# Py3.6 the second build will write new cache files into the sysroot which won't
41# be listed in the manifest so won't be deleted, resulting in an error on
42# rebuilds. Solve this by deleting the entire cache directory when this package
43# is removed from the sysroot.
44SSTATEPOSTINSTFUNCS += "xcb_sstate_postinst"
45xcb_sstate_postinst() {
46 if [ "${BB_CURRENTTASK}" = "populate_sysroot" -o "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ]
47 then
48 cat <<EOF >${SSTATE_INST_POSTRM}
49#!/bin/sh
50rm -rf ${libdir}/xcb-proto/xcbgen/__pycache__
51EOF
52 fi
53}