mirror of
https://git.yoctoproject.org/poky
synced 2026-04-21 12:32:15 +02:00
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>
This commit is contained in:
committed by
Richard Purdie
parent
78fcf6831a
commit
889a7ce8de
@@ -502,22 +502,30 @@ class BBCooker:
|
||||
|
||||
def showVersions(self):
|
||||
|
||||
(latest_versions, preferred_versions) = self.findProviders()
|
||||
(latest_versions, preferred_versions, required) = self.findProviders()
|
||||
|
||||
logger.plain("%-35s %25s %25s", "Recipe Name", "Latest Version", "Preferred Version")
|
||||
logger.plain("%-35s %25s %25s\n", "===========", "==============", "=================")
|
||||
logger.plain("%-35s %25s %25s %25s", "Recipe Name", "Latest Version", "Preferred Version", "Required Version")
|
||||
logger.plain("%-35s %25s %25s %25s\n", "===========", "==============", "=================", "================")
|
||||
|
||||
for p in sorted(self.recipecaches[''].pkg_pn):
|
||||
pref = preferred_versions[p]
|
||||
preferred = preferred_versions[p]
|
||||
latest = latest_versions[p]
|
||||
requiredstr = ""
|
||||
preferredstr = ""
|
||||
if required[p]:
|
||||
if preferred[0] is not None:
|
||||
requiredstr = preferred[0][0] + ":" + preferred[0][1] + '-' + preferred[0][2]
|
||||
else:
|
||||
bb.fatal("REQUIRED_VERSION of package %s not available" % p)
|
||||
else:
|
||||
preferredstr = preferred[0][0] + ":" + preferred[0][1] + '-' + preferred[0][2]
|
||||
|
||||
prefstr = pref[0][0] + ":" + pref[0][1] + '-' + pref[0][2]
|
||||
lateststr = latest[0][0] + ":" + latest[0][1] + "-" + latest[0][2]
|
||||
|
||||
if pref == latest:
|
||||
prefstr = ""
|
||||
if preferred == latest:
|
||||
preferredstr = ""
|
||||
|
||||
logger.plain("%-35s %25s %25s", p, lateststr, prefstr)
|
||||
logger.plain("%-35s %25s %25s %25s", p, lateststr, preferredstr, requiredstr)
|
||||
|
||||
def showEnvironment(self, buildfile=None, pkgs_to_build=None):
|
||||
"""
|
||||
|
||||
@@ -38,15 +38,17 @@ def findProviders(cfgData, dataCache, pkg_pn = None):
|
||||
localdata = data.createCopy(cfgData)
|
||||
bb.data.expandKeys(localdata)
|
||||
|
||||
required = {}
|
||||
preferred_versions = {}
|
||||
latest_versions = {}
|
||||
|
||||
for pn in pkg_pn:
|
||||
(last_ver, last_file, pref_ver, pref_file) = findBestProvider(pn, localdata, dataCache, pkg_pn)
|
||||
(last_ver, last_file, pref_ver, pref_file, req) = findBestProvider(pn, localdata, dataCache, pkg_pn)
|
||||
preferred_versions[pn] = (pref_ver, pref_file)
|
||||
latest_versions[pn] = (last_ver, last_file)
|
||||
required[pn] = req
|
||||
|
||||
return (latest_versions, preferred_versions)
|
||||
return (latest_versions, preferred_versions, required)
|
||||
|
||||
def allProviders(dataCache):
|
||||
"""
|
||||
@@ -221,16 +223,16 @@ def findBestProvider(pn, cfgData, dataCache, pkg_pn = None, item = None):
|
||||
"""
|
||||
|
||||
sortpkg_pn = sortPriorities(pn, dataCache, pkg_pn)
|
||||
# Find the highest priority provider with a PREFERRED_VERSION set
|
||||
(preferred_ver, preferred_file) = findPreferredProvider(pn, cfgData, dataCache, sortpkg_pn, item)
|
||||
# Find the highest priority provider with a REQUIRED_VERSION or PREFERRED_VERSION set
|
||||
(preferred_ver, preferred_file, required) = findPreferredProvider(pn, cfgData, dataCache, sortpkg_pn, item)
|
||||
# Find the latest version of the highest priority provider
|
||||
(latest, latest_f) = findLatestProvider(pn, cfgData, dataCache, sortpkg_pn[0])
|
||||
|
||||
if preferred_file is None:
|
||||
if not required and preferred_file is None:
|
||||
preferred_file = latest_f
|
||||
preferred_ver = latest
|
||||
|
||||
return (latest, latest_f, preferred_ver, preferred_file)
|
||||
return (latest, latest_f, preferred_ver, preferred_file, required)
|
||||
|
||||
def _filterProviders(providers, item, cfgData, dataCache):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user