diff options
author | Andreas Oberritter <obi@opendreambox.org> | 2012-08-29 23:27:44 +0200 |
---|---|---|
committer | Andreas Oberritter <obi@opendreambox.org> | 2012-08-29 23:31:01 +0200 |
commit | 0ba8294b3746980b7b93c2dbb9b9cba235c67c67 (patch) | |
tree | 5b575e6efd24553ece729499f9ac2465a4181c5a | |
parent | d409f1f7594944153bb8edd42fd4d8140b8964eb (diff) | |
download | openembedded-core-contrib-0ba8294b3746980b7b93c2dbb9b9cba235c67c67.tar.gz |
sstate.bbclass: don't remove shared pkgdata if PACKAGE_ARCH changed to MACHINE_ARCH
Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
-rw-r--r-- | meta/classes/sstate.bbclass | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index a8c98e5c7f..a9d70e6cd9 100644 --- a/meta/classes/sstate.bbclass +++ b/meta/classes/sstate.bbclass @@ -219,13 +219,45 @@ def sstate_clean_cachefiles(d): sstate_clean_cachefile(ss, d) def sstate_clean_manifest(manifest, d): + from glob import glob import oe.path + check_package_arch = manifest.endswith('.package') + if check_package_arch: + package_arch = d.getVar('PACKAGE_ARCH', True) + machine = d.getVar('MACHINE', True) + package_arch_old = '' + dir_scanned = False + pkg_set = set() + pn = d.getVar('PN', True) + sstate_manifests = d.getVar('SSTATE_MANIFESTS', True) + pkgdata_dir = d.getVar('PKGDATA_DIR', True) + pkgdata_root = '/'.join(pkgdata_dir.split('/')[:-1]) + '/' + mfile = open(manifest) entries = mfile.readlines() mfile.close() for entry in entries: + if check_package_arch: + if not package_arch_old and entry.startswith(pkgdata_root): + package_arch_old = entry[len(pkgdata_root):].split('-')[0] + if package_arch_old: + if package_arch_old != package_arch: + if not dir_scanned: + for f in glob('%s/manifest-*-%s.package' % (sstate_manifests, pn)): + if f == manifest: + continue + tfile = open(f) + pkg_set = pkg_set | set(tfile.readlines()) + tfile.close() + dir_scanned = True + if entry in pkg_set: + bb.debug(2, "Keeping manifest: %s (used by another machine)" % entry.strip()) + continue + else: + check_package_arch = False + entry = entry.strip() bb.debug(2, "Removing manifest: %s" % entry) # We can race against another package populating directories as we're removing them |