diff mbox series

codeparser/data: Add vardepsexclude support to module dependency code

Message ID 20221217084828.242224-1-richard.purdie@linuxfoundation.org
State Accepted, archived
Commit 1aa672b01037fda4ca82f2c7e394783287c09ecd
Headers show
Series codeparser/data: Add vardepsexclude support to module dependency code | expand

Commit Message

Richard Purdie Dec. 17, 2022, 8:48 a.m. UTC
We need to be able to exclude dependencies from the python module
dependency code. Add support for the vardepexclude flag for these. It
only works from the configuration namespace rather than per recipe
for efficiency.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
 lib/bb/codeparser.py | 6 ++++++
 lib/bb/cookerdata.py | 1 +
 2 files changed, 7 insertions(+)
diff mbox series

Patch

diff --git a/lib/bb/codeparser.py b/lib/bb/codeparser.py
index c0b1d7966f..ecae7b0808 100644
--- a/lib/bb/codeparser.py
+++ b/lib/bb/codeparser.py
@@ -84,6 +84,12 @@  def add_module_functions(fn, functions, namespace):
         modulecode_deps[name] = [parser.references.copy(), execs, parser.var_execs.copy(), parser.contains.copy()]
         #bb.warn("%s: %s\nRefs:%s Execs: %s %s %s" % (name, src, parser.references, parser.execs, parser.var_execs, parser.contains))
 
+def update_module_dependencies(d):
+    for mod in modulecode_deps:
+        excludes = set((d.getVarFlag(mod, "vardepsexclude") or "").split())
+        if excludes:
+            modulecode_deps[mod] = [modulecode_deps[mod][0] - excludes, modulecode_deps[mod][1] - excludes, modulecode_deps[mod][2] - excludes, modulecode_deps[mod][3]]
+
 # A custom getstate/setstate using tuples is actually worth 15% cachesize by
 # avoiding duplication of the attribute names!
 class SetCache(object):
diff --git a/lib/bb/cookerdata.py b/lib/bb/cookerdata.py
index 59ecbec69d..650ae05ec9 100644
--- a/lib/bb/cookerdata.py
+++ b/lib/bb/cookerdata.py
@@ -311,6 +311,7 @@  class CookerDataBuilder(object):
             logger.exception("Error parsing configuration files")
             raise bb.BBHandledException()
 
+        bb.codeparser.update_module_dependencies(self.data)
 
         # Handle obsolete variable names
         d = self.data