[OE-core] [PATCH v2] insane: file-rdeps: Readability only
Douglas Royds
douglas.royds at taitradio.com
Mon Nov 4 04:52:45 UTC 2019
Mostly just longer (and hopefully more meaningful) variable names.
Signed-off-by: Douglas Royds <douglas.royds at taitradio.com>
---
meta/classes/insane.bbclass | 81 +++++++++++++++++++------------------
1 file changed, 42 insertions(+), 39 deletions(-)
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index 9605ac2bae..f80abebbac 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -707,57 +707,60 @@ def package_qa_check_rdepends(pkg, pkgdest, skip, taskdeps, packages, d):
package_qa_handle_error("build-deps", error_msg, d)
if "file-rdeps" not in skip:
- ignored_file_rdeps = set(['/bin/sh', '/usr/bin/env', 'rtld(GNU_HASH)'])
+ ignored_executable_rdeps = set(['/bin/sh', '/usr/bin/env', 'rtld(GNU_HASH)'])
if bb.data.inherits_class('nativesdk', d):
- ignored_file_rdeps |= set(['/bin/bash', '/usr/bin/perl', 'perl'])
- # For Saving the FILERDEPENDS
- filerdepends = {}
- rdep_data = oe.packagedata.read_subpkgdata(pkg, d)
- for key in rdep_data:
- if key.startswith("FILERDEPENDS_"):
- for subkey in bb.utils.explode_deps(rdep_data[key]):
- if subkey not in ignored_file_rdeps and \
- not subkey.startswith('perl('):
- # We already know it starts with FILERDEPENDS_
- filerdepends[subkey] = key[13:]
-
- if filerdepends:
- done = rdepends[:]
- # Add the rprovides of itself
- if pkg not in done:
- done.insert(0, pkg)
+ ignored_executable_rdeps |= set(['/bin/bash', '/usr/bin/perl', 'perl'])
+
+ # A dictionary of libs (or other providers) and one executable that depends on each
+ unsatisfied_rdepends = {}
+ current_pkg_rdep_data = oe.packagedata.read_subpkgdata(pkg, d)
+ for executable_that_rdepends in current_pkg_rdep_data:
+ if executable_that_rdepends.startswith("FILERDEPENDS_"):
+ for target_dependency in bb.utils.explode_deps(current_pkg_rdep_data[executable_that_rdepends]):
+ if target_dependency not in ignored_executable_rdeps \
+ and not target_dependency.startswith('perl('):
+ unsatisfied_rdepends[target_dependency] = executable_that_rdepends[len('FILERDEPENDS_'):]
+
+ if unsatisfied_rdepends:
+ rdep_packages_to_consider = rdepends[:]
+ # Each package effectively rprovides itself
+ if pkg not in rdep_packages_to_consider:
+ rdep_packages_to_consider.insert(0, pkg)
# The python is not a package, but python-core provides it, so
# skip checking /usr/bin/python if python is in the rdeps, in
# case there is a RDEPENDS_pkg = "python" in the recipe.
- for py in [ d.getVar('MLPREFIX') + "python", "python" ]:
- if py in done:
- filerdepends.pop("/usr/bin/python",None)
- done.remove(py)
- for rdep in done:
- # The file dependencies may contain package names, e.g.,
- # perl
- filerdepends.pop(rdep,None)
-
- # For Saving the FILERPROVIDES, RPROVIDES and FILES_INFO
- rdep_data = oe.packagedata.read_subpkgdata(rdep, d)
- for key in rdep_data:
+ for python_package in [ d.getVar('MLPREFIX') + "python", "python" ]:
+ if python_package in rdep_packages_to_consider:
+ unsatisfied_rdepends.pop("/usr/bin/python",None)
+ rdep_packages_to_consider.remove(python_package)
+
+ for dependent_package in rdep_packages_to_consider:
+ # Dependencies might contain package names, e.g. perl
+ unsatisfied_rdepends.pop(dependent_package,None)
+
+ dependent_pkg_rdep_data = oe.packagedata.read_subpkgdata(dependent_package, d)
+ for key in dependent_pkg_rdep_data:
if key.startswith("FILERPROVIDES_") or key.startswith("RPROVIDES_"):
- for subkey in bb.utils.explode_deps(rdep_data[key]):
- filerdepends.pop(subkey,None)
- # Add the files list to the rprovides
+ for satisfied_lib_or_provider in bb.utils.explode_deps(dependent_pkg_rdep_data[key]):
+ unsatisfied_rdepends.pop(satisfied_lib_or_provider,None)
+
+ # FILES_INFO lists all files this dependent package provides
if key == "FILES_INFO":
# Use eval() to make it as a dict
- for subkey in eval(rdep_data[key]):
- filerdepends.pop(subkey,None)
- if not filerdepends:
+ for potential_provider_file in eval(dependent_pkg_rdep_data[key]):
+ unsatisfied_rdepends.pop(potential_provider_file,None)
+
+ if not unsatisfied_rdepends:
# Break if all the file rdepends are met
break
- if filerdepends:
- for key in filerdepends:
+
+ if unsatisfied_rdepends:
+ for key in unsatisfied_rdepends:
error_msg = "%s contained in package %s requires %s, but no providers found in RDEPENDS_%s?" % \
- (filerdepends[key].replace("_%s" % pkg, "").replace("@underscore@", "_"), pkg, key, pkg)
+ (unsatisfied_rdepends[key].replace("_%s" % pkg, "").replace("@underscore@", "_"), pkg, key, pkg)
package_qa_handle_error("file-rdeps", error_msg, d)
+
package_qa_check_rdepends[vardepsexclude] = "OVERRIDES"
def package_qa_check_deps(pkg, pkgdest, d):
--
2.17.1
More information about the Openembedded-core
mailing list