diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2007-08-14 09:57:35 +0000 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2007-08-14 09:57:35 +0000 |
commit | 623bc81f1a721d416edd56816b98faed8822fe2f (patch) | |
tree | 3d16a29eda3bd35f48854d2eb1958a437e259715 /lib/bb/providers.py | |
parent | e555d0f54bb45891e9a03afca509a8545dc56ed3 (diff) | |
download | bitbake-623bc81f1a721d416edd56816b98faed8822fe2f.tar.gz |
providers.py: Move providers code into the providers module
Diffstat (limited to 'lib/bb/providers.py')
-rw-r--r-- | lib/bb/providers.py | 58 |
1 files changed, 56 insertions, 2 deletions
diff --git a/lib/bb/providers.py b/lib/bb/providers.py index 81de85e76..6fac7c9c4 100644 --- a/lib/bb/providers.py +++ b/lib/bb/providers.py @@ -120,7 +120,7 @@ def findBestProvider(pn, cfgData, dataCache, pkg_pn = None, item = None): return (latest,latest_f,preferred_ver, preferred_file) -def filterProviders(providers, item, cfgData, dataCache): +def _filterProviders(providers, item, cfgData, dataCache): """ Take a list of providers and filter/reorder according to the environment variables and previous build results @@ -187,7 +187,61 @@ def filterProviders(providers, item, cfgData, dataCache): eligible = [fn] + eligible break - return eligible + return eligible, preferred_versions + + +def filterProviders(providers, item, cfgData, dataCache): + """ + Take a list of providers and filter/reorder according to the + environment variables and previous build results + Takes a "normal" target item + """ + + eligible, pref_vers = _filterProviders(providers, item, cfgData, dataCache) + + prefervar = bb.data.getVar('PREFERRED_PROVIDER_%s' % item, cfgData, 1) + if prefervar: + dataCache.preferred[item] = prefervar + + foundUnique = False + if item in dataCache.preferred: + for p in eligible: + pn = dataCache.pkg_fn[p] + if dataCache.preferred[item] == pn: + bb.msg.note(2, bb.msg.domain.Provider, "selecting %s to satisfy %s due to PREFERRED_PROVIDERS" % (pn, item)) + eligible.remove(p) + eligible = [p] + eligible + foundUnique = True + break + + return eligible, foundUnique + +def filterProvidersRunTime(providers, item, cfgData, dataCache): + """ + Take a list of providers and filter/reorder according to the + environment variables and previous build results + Takes a "runtime" target item + """ + + eligible, pref_vers = _filterProviders(providers, item, cfgData, dataCache) + + # Should use dataCache.preferred here? + preferred = [] + for p in eligible: + pn = dataCache.pkg_fn[p] + provides = dataCache.pn_provides[pn] + for provide in provides: + prefervar = bb.data.getVar('PREFERRED_PROVIDER_%s' % provide, cfgData, 1) + if prefervar == pn: + bb.msg.note(2, bb.msg.domain.Provider, "selecting %s to satisfy runtime %s due to PREFERRED_PROVIDERS" % (pn, item)) + eligible.remove(p) + eligible = [p] + eligible + preferred.append(p) + break + + numberPreferred = len(preferred) + + return eligible, numberPreferred def getRuntimeProviders(dataCache, rdepend): """ |