diff options
| author | Charlie Davies <charles.davies@whitetree.xyz> | 2021-02-18 20:52:19 +0000 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-03-15 14:36:52 +0000 |
| commit | 889a7ce8dea4ecf505a7a27c088f908fd0b83fc3 (patch) | |
| tree | 7509551517bf3fbd8af345f2a1f355ded3876059 /bitbake/lib | |
| parent | 78fcf6831a3f12e5dd1aa0679fd972b040ea3d0d (diff) | |
| download | poky-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/lib')
| -rw-r--r-- | bitbake/lib/bb/cooker.py | 24 | ||||
| -rw-r--r-- | bitbake/lib/bb/providers.py | 14 |
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 | ||
| 51 | def allProviders(dataCache): | 53 | def 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 | ||
| 235 | def _filterProviders(providers, item, cfgData, dataCache): | 237 | def _filterProviders(providers, item, cfgData, dataCache): |
| 236 | """ | 238 | """ |
