summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorCharlie Davies <charles.davies@whitetree.xyz>2021-02-18 20:52:19 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-03-15 14:36:52 +0000
commit889a7ce8dea4ecf505a7a27c088f908fd0b83fc3 (patch)
tree7509551517bf3fbd8af345f2a1f355ded3876059 /bitbake
parent78fcf6831a3f12e5dd1aa0679fd972b040ea3d0d (diff)
downloadpoky-889a7ce8dea4ecf505a7a27c088f908fd0b83fc3.tar.gz
bitbake: bitbake: lib: add Required Version to Bitbake --show-versions command
This commit adds a new column to the Bitbake --show-versions command called Required Version. This column will display any packages which have a REQUIRED_VERSION successfully set. Fixes [YOCTO #10096] (Bitbake rev: 90c7d1815e41243323d32b9dbb865757a922578a) Signed-off-by: Charlie Davies <charles.davies@whitetree.xyz> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/cooker.py24
-rw-r--r--bitbake/lib/bb/providers.py14
2 files changed, 24 insertions, 14 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index f4ab797edf..d3bc16e625 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -502,22 +502,30 @@ class BBCooker:
502 502
503 def showVersions(self): 503 def showVersions(self):
504 504
505 (latest_versions, preferred_versions) = self.findProviders() 505 (latest_versions, preferred_versions, required) = self.findProviders()
506 506
507 logger.plain("%-35s %25s %25s", "Recipe Name", "Latest Version", "Preferred Version") 507 logger.plain("%-35s %25s %25s %25s", "Recipe Name", "Latest Version", "Preferred Version", "Required Version")
508 logger.plain("%-35s %25s %25s\n", "===========", "==============", "=================") 508 logger.plain("%-35s %25s %25s %25s\n", "===========", "==============", "=================", "================")
509 509
510 for p in sorted(self.recipecaches[''].pkg_pn): 510 for p in sorted(self.recipecaches[''].pkg_pn):
511 pref = preferred_versions[p] 511 preferred = preferred_versions[p]
512 latest = latest_versions[p] 512 latest = latest_versions[p]
513 requiredstr = ""
514 preferredstr = ""
515 if required[p]:
516 if preferred[0] is not None:
517 requiredstr = preferred[0][0] + ":" + preferred[0][1] + '-' + preferred[0][2]
518 else:
519 bb.fatal("REQUIRED_VERSION of package %s not available" % p)
520 else:
521 preferredstr = preferred[0][0] + ":" + preferred[0][1] + '-' + preferred[0][2]
513 522
514 prefstr = pref[0][0] + ":" + pref[0][1] + '-' + pref[0][2]
515 lateststr = latest[0][0] + ":" + latest[0][1] + "-" + latest[0][2] 523 lateststr = latest[0][0] + ":" + latest[0][1] + "-" + latest[0][2]
516 524
517 if pref == latest: 525 if preferred == latest:
518 prefstr = "" 526 preferredstr = ""
519 527
520 logger.plain("%-35s %25s %25s", p, lateststr, prefstr) 528 logger.plain("%-35s %25s %25s %25s", p, lateststr, preferredstr, requiredstr)
521 529
522 def showEnvironment(self, buildfile=None, pkgs_to_build=None): 530 def showEnvironment(self, buildfile=None, pkgs_to_build=None):
523 """ 531 """
diff --git a/bitbake/lib/bb/providers.py b/bitbake/lib/bb/providers.py
index 95152323ef..3ec11a40e1 100644
--- a/bitbake/lib/bb/providers.py
+++ b/bitbake/lib/bb/providers.py
@@ -38,15 +38,17 @@ def findProviders(cfgData, dataCache, pkg_pn = None):
38 localdata = data.createCopy(cfgData) 38 localdata = data.createCopy(cfgData)
39 bb.data.expandKeys(localdata) 39 bb.data.expandKeys(localdata)
40 40
41 required = {}
41 preferred_versions = {} 42 preferred_versions = {}
42 latest_versions = {} 43 latest_versions = {}
43 44
44 for pn in pkg_pn: 45 for pn in pkg_pn:
45 (last_ver, last_file, pref_ver, pref_file) = findBestProvider(pn, localdata, dataCache, pkg_pn) 46 (last_ver, last_file, pref_ver, pref_file, req) = findBestProvider(pn, localdata, dataCache, pkg_pn)
46 preferred_versions[pn] = (pref_ver, pref_file) 47 preferred_versions[pn] = (pref_ver, pref_file)
47 latest_versions[pn] = (last_ver, last_file) 48 latest_versions[pn] = (last_ver, last_file)
49 required[pn] = req
48 50
49 return (latest_versions, preferred_versions) 51 return (latest_versions, preferred_versions, required)
50 52
51def allProviders(dataCache): 53def allProviders(dataCache):
52 """ 54 """
@@ -221,16 +223,16 @@ def findBestProvider(pn, cfgData, dataCache, pkg_pn = None, item = None):
221 """ 223 """
222 224
223 sortpkg_pn = sortPriorities(pn, dataCache, pkg_pn) 225 sortpkg_pn = sortPriorities(pn, dataCache, pkg_pn)
224 # Find the highest priority provider with a PREFERRED_VERSION set 226 # Find the highest priority provider with a REQUIRED_VERSION or PREFERRED_VERSION set
225 (preferred_ver, preferred_file) = findPreferredProvider(pn, cfgData, dataCache, sortpkg_pn, item) 227 (preferred_ver, preferred_file, required) = findPreferredProvider(pn, cfgData, dataCache, sortpkg_pn, item)
226 # Find the latest version of the highest priority provider 228 # Find the latest version of the highest priority provider
227 (latest, latest_f) = findLatestProvider(pn, cfgData, dataCache, sortpkg_pn[0]) 229 (latest, latest_f) = findLatestProvider(pn, cfgData, dataCache, sortpkg_pn[0])
228 230
229 if preferred_file is None: 231 if not required and preferred_file is None:
230 preferred_file = latest_f 232 preferred_file = latest_f
231 preferred_ver = latest 233 preferred_ver = latest
232 234
233 return (latest, latest_f, preferred_ver, preferred_file) 235 return (latest, latest_f, preferred_ver, preferred_file, required)
234 236
235def _filterProviders(providers, item, cfgData, dataCache): 237def _filterProviders(providers, item, cfgData, dataCache):
236 """ 238 """