aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2017-03-22 10:02:51 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-03-22 10:12:10 +0000
commitd1d55041e38b12d40f896834b56475ea19a6047f (patch)
treec8d1063b18241362708b4aa1ad2de4685294e300
parent83867079182d8b9e981935da2b254947a89097bb (diff)
downloadopenembedded-core-contrib-d1d55041e38b12d40f896834b56475ea19a6047f.tar.gz
openembedded-core-contrib-d1d55041e38b12d40f896834b56475ea19a6047f.tar.bz2
openembedded-core-contrib-d1d55041e38b12d40f896834b56475ea19a6047f.zip
sstate: Ensure installation directory is empty before execution
When you enable the systemd DISTRO_FEATURE, opkg-native contains systemd units which have a relocation fixme list. When systemd isn't in DISTRO_FEATURES, there are no fixmes required. Unfortunately as sstate isn't cleaning up its installation directory before use, if you install the systemd version, then install the non-systemd version from sstate, it would leave behind the fixme file from the systemd version and breakage results as it would try and fixup files which don't exist. The solution is to ensure the unpack/install directory is clean before use. It does raise other questions about opkg-native, systemd and DISTRO_FEATURES but there is an underlying sstate issue here too which would cause missing file failures. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/sstate.bbclass5
1 files changed, 5 insertions, 0 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index a7809267976..af588548c2e 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -313,6 +313,11 @@ def sstate_installpkg(ss, d):
if not signer.verify(sstatepkg + '.sig'):
bb.warn("Cannot verify signature on sstate package %s" % sstatepkg)
+ # Empty sstateinst directory, ensure its clean
+ if os.path.exists(sstateinst):
+ oe.path.remove(sstateinst)
+ bb.utils.mkdirhier(sstateinst)
+
sstateinst = d.getVar("SSTATE_INSTDIR")
d.setVar('SSTATE_FIXMEDIR', ss['fixmedir'])