aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bb/providers.py
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2007-08-14 09:57:35 +0000
committerRichard Purdie <rpurdie@linux.intel.com>2007-08-14 09:57:35 +0000
commit623bc81f1a721d416edd56816b98faed8822fe2f (patch)
tree3d16a29eda3bd35f48854d2eb1958a437e259715 /lib/bb/providers.py
parente555d0f54bb45891e9a03afca509a8545dc56ed3 (diff)
downloadbitbake-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.py58
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):
"""