The following changes since commit 5f248526ae5f15a2e6f3a6da88a96aba976bb28e:
providers.py: Add support for preferred runtime item (2015-07-23 17:28:31 -0400) are available in the git repository at: https://jate...@github.com/jatedev/poky preferred-provider-runtime-3 for you to fetch changes up to 6ade6807288ad318355bb77e43df87dfc15a9e90: image.bbclass: Add support for runtime PREFERRED_PROVIDER (2015-07-23 17:29:04 -0400) ---------------------------------------------------------------- Jate Sujjavanich (1): image.bbclass: Add support for runtime PREFERRED_PROVIDER meta/classes/image.bbclass | 49 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 01f8b3f..2276897 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -132,6 +132,25 @@ inherit ${IMAGE_TYPE_live} IMAGE_TYPE_vmdk = '${@bb.utils.contains("IMAGE_FSTYPES", "vmdk", "image-vmdk", "", d)}' inherit ${IMAGE_TYPE_vmdk} +def packageinfo(d): + import oe.packagedata + pkginfolist = [] + + pkgdata_dir = d.getVar("PKGDATA_DIR", True) + '/runtime/' + if os.path.exists(pkgdata_dir): + for root, dirs, files in os.walk(pkgdata_dir): + for pkgname in files: + if pkgname.endswith('.packaged'): + pkgname = pkgname[:-9] + pkgdatafile = root + pkgname + try: + sdata = oe.packagedata.read_pkgdatafile(pkgdatafile) + sdata['PKG'] = pkgname + pkginfolist.append(sdata) + except Exception as e: + bb.warn("Failed to read pkgdata file %s: %s: %s" % (pkgdatafile, e.__class__, str(e))) + return pkginfolist + python () { deps = " " + imagetypes_getdepends(d) d.appendVarFlag('do_rootfs', 'depends', deps) @@ -283,6 +302,36 @@ python rootfs_process_ignore() { } do_rootfs[prefuncs] += "rootfs_process_ignore" +python rootfs_process_prefer() { + packageinfolist = packageinfo(d) + + inst_pkgs = d.getVar("PACKAGE_INSTALL", True).split() + pref_pkgs = list() + for pkg in inst_pkgs: + prefer_var = d.getVar("PREFERRED_PROVIDER_%s" % pkg, True) + if prefer_var: + bb.note("%s rprovided by recipe %s" % (pkg, prefer_var)) + # Find preferred package which provides item + for p in packageinfolist: + # First Look for PN and RPROVIDES_${PN} + if p['PN'] == prefer_var: + var = 'RPROVIDES_%s' % p['PKG'] + try: + val = p[var] + except KeyError: + continue + rprovides_split = val.split(' ') + if pkg in rprovides_split: + bb.note('%s in %s. Will substitute in PACKAGE_INSTALL' % (pkg, var)) + inst_pkgs.remove(pkg) + pref_pkgs.append(p['PKG']) + inst_pkgs.extend(pref_pkgs) + for p in inst_pkgs: + bb.note("%s " % p) + d.setVar("PACKAGE_INSTALL", ' '.join(inst_pkgs)) +} +do_rootfs[prefuncs] += "rootfs_process_prefer" + # We have to delay the runtime_mapping_rename until just before rootfs runs # otherwise, the multilib renaming could step in and squash any fixups that # may have occurred.
-- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core