diff options
author | Robert Yang <liezhi.yang@windriver.com> | 2016-07-27 00:51:10 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-08-10 10:45:32 +0100 |
commit | 647fc7913c3d1f98efe36f01fd4e0edf2366e1a6 (patch) | |
tree | bf799435328221f7acbb1fcebf7ee9f5ab359f13 | |
parent | e5c6a78db46192800669f1b392351f6b52f3e20c (diff) | |
download | openembedded-core-647fc7913c3d1f98efe36f01fd4e0edf2366e1a6.tar.gz openembedded-core-647fc7913c3d1f98efe36f01fd4e0edf2366e1a6.tar.bz2 openembedded-core-647fc7913c3d1f98efe36f01fd4e0edf2366e1a6.zip |
packagefeed-stability.bbclass: fix multilib + rpm
* Fix multilib + rpm since its multilib package name is special.
* Update SSTATE_DUPWHITELIST to avoid shared location conflicted error.
* Fix message when "not copying", now the messages are:
Copying packages for recipe <foo>
Not copying packages for recipe <foo>
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
-rw-r--r-- | meta/classes/packagefeed-stability.bbclass | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/meta/classes/packagefeed-stability.bbclass b/meta/classes/packagefeed-stability.bbclass index df4c2babb6..bcd3e4448b 100644 --- a/meta/classes/packagefeed-stability.bbclass +++ b/meta/classes/packagefeed-stability.bbclass @@ -56,8 +56,11 @@ python() { continue if deploydirvarref in sstate_outputdirs: + deplor_dir_pkgtype = d.expand(deploydirvarref + '-prediff') # Set intermediate output directory - d.setVarFlag(pkgwritefunc, 'sstate-outputdirs', sstate_outputdirs.replace(deploydirvarref, deploydirvarref + '-prediff')) + d.setVarFlag(pkgwritefunc, 'sstate-outputdirs', sstate_outputdirs.replace(deploydirvarref, deplor_dir_pkgtype)) + # Update SSTATE_DUPWHITELIST to avoid shared location conflicted error + d.appendVar('SSTATE_DUPWHITELIST', ' %s' % deplor_dir_pkgtype) d.setVar(pkgcomparefunc, d.getVar('do_package_compare', False)) d.setVarFlags(pkgcomparefunc, d.getVarFlags('do_package_compare', False)) @@ -135,6 +138,7 @@ def package_compare_impl(pkgtype, d): files = [] docopy = False manifest, _ = oe.sstatesig.sstate_get_manifest_filename(pkgwritetask, d) + mlprefix = d.getVar('MLPREFIX', True) # Copy recipe's all packages if one of the packages are different to make # they have the same PR. with open(manifest, 'r') as f: @@ -150,6 +154,8 @@ def package_compare_impl(pkgtype, d): pkgbasename = os.path.basename(destpath) pkgname = None for rpkg, pkg in rpkglist: + if mlprefix and pkgtype == 'rpm' and rpkg.startswith(mlprefix): + rpkg = rpkg[len(mlprefix):] if pkgbasename.startswith(rpkg): pkgr = pkgrvalues[pkg] destpathspec = destpath.replace(pkgr, '*') @@ -205,6 +211,12 @@ def package_compare_impl(pkgtype, d): for pkgname, pkgbasename, srcpath, destpath in files: destdir = os.path.dirname(destpath) bb.utils.mkdirhier(destdir) + # Remove allarch rpm pkg if it is already existed (for + # multilib), they're identical in theory, but sstate.bbclass + # copies it again, so keep align with that. + if os.path.exists(destpath) and pkgtype == 'rpm' \ + and d.getVar('PACKAGE_ARCH', True) == 'all': + os.unlink(destpath) if (os.stat(srcpath).st_dev == os.stat(destdir).st_dev): # Use a hard link to save space os.link(srcpath, destpath) @@ -212,7 +224,7 @@ def package_compare_impl(pkgtype, d): shutil.copyfile(srcpath, destpath) f.write('%s\n' % destpath) else: - bb.plain('Not copying packages for %s' % pn) + bb.plain('Not copying packages for recipe %s' % pn) do_cleanall_append() { import errno |