Merge changes I1c5f06d2,Ib9d74e11,I628cb0ad
* changes:
Add type of unconverteds to bp2build-progress
Handle filegroups differently in bp2build-progress
bp2build-progress: collect type for blueprint mods
diff --git a/scripts/bp2build-progress/bp2build-progress.py b/scripts/bp2build-progress/bp2build-progress.py
index 49a299d..1cb9431 100755
--- a/scripts/bp2build-progress/bp2build-progress.py
+++ b/scripts/bp2build-progress/bp2build-progress.py
@@ -142,7 +142,7 @@
make_node = lambda module, color: \
('"{name}" [label="{name}\\n{kind}" color=black, style=filled, '
- 'fillcolor={color}]').format(name=module.name, kind=module.kind, color=color)
+ "fillcolor={color}]").format(name=module.name, kind=module.kind, color=color)
make_edge = lambda module, dep: \
'"%s" -> "%s"' % (module.name, dep)
@@ -187,6 +187,7 @@
all_unconverted_modules = collections.defaultdict(int)
dirs_with_unconverted_modules = set()
+ kind_of_unconverted_modules = set()
for module, deps in sorted(modules.items()):
unconverted_deps = set(dep for dep in deps if dep not in converted)
@@ -202,6 +203,7 @@
unconverted_deps=", ".join(sorted(unconverted_deps)))
blocked_modules[unconverted_count].append(report_entry)
dirs_with_unconverted_modules.add(module.dirname)
+ kind_of_unconverted_modules.add(module.kind)
for count, modules in sorted(blocked_modules.items()):
report_lines.append("\n%d unconverted deps remaining:" % count)
@@ -220,6 +222,10 @@
sorted(dirs_with_unconverted_modules))))
report_lines.append("\n")
+ report_lines.append("Kinds with unconverted modules:\n\n{}".format("\n".join(
+ sorted(kind_of_unconverted_modules))))
+
+ report_lines.append("\n")
report_lines.append("# Converted modules:\n\n%s" %
"\n".join(sorted(converted)))
@@ -227,9 +233,8 @@
report_lines.append(
"Generated by: https://cs.android.com/android/platform/superproject/+/master:build/bazel/scripts/bp2build-progress/bp2build-progress.py"
)
- report_lines.append(
- "Generated at: %s" %
- datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S %z"))
+ report_lines.append("Generated at: %s" %
+ datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S %z"))
print("\n".join(report_lines))
@@ -243,7 +248,7 @@
# Do a single pass to find all top-level modules to be ignored
for module in module_graph:
name = module["Name"]
- if module["Type"] in IGNORED_KINDS:
+ if ignore_kind(module["Type"]):
ignored.add(module["Name"])
continue
name_to_info[name] = _ModuleInfo(
@@ -274,6 +279,10 @@
return module_adjacency_list
+def ignore_kind(kind):
+ return kind in IGNORED_KINDS or "defaults" in kind
+
+
def bazel_target_to_dir(full_target):
dirname, _ = full_target.split(":")
return dirname[2:]
@@ -291,29 +300,39 @@
name_with_variant_to_name = dict()
for module in module_graph:
+ ignore = False
if module.tag != "rule":
continue
kind = module.attrib["class"]
name_with_variant = module.attrib["name"]
+ name = None
+ variant = ""
for attr in module:
attr_name = attr.attrib["name"]
if attr_name == "soong_module_name":
name = attr.attrib["value"]
- if kind in IGNORED_KINDS:
- ignored.add(name_with_variant)
- else:
- name_with_variant_to_name.setdefault(name_with_variant, name)
- name_to_info.setdefault(
- name,
- _ModuleInfo(
- name=name,
- kind=kind,
- dirname=bazel_target_to_dir(name_with_variant),
- ))
elif attr_name == "soong_module_variant":
variant = attr.attrib["value"]
- if variant.startswith("windows"):
- ignored.add(name_with_variant)
+ elif attr_name == "soong_module_type" and kind == "generic_soong_module":
+ kind = attr.attrib["value"]
+ # special handling for filegroup srcs, if a source has the same name as
+ # the module, we don't convert it
+ elif kind == "filegroup" and attr_name == "srcs":
+ for item in attr:
+ if item.attrib["value"] == name:
+ ignore = True
+
+ if ignore_kind(kind) or variant.startswith("windows") or ignore:
+ ignored.add(name_with_variant)
+ else:
+ name_with_variant_to_name.setdefault(name_with_variant, name)
+ name_to_info.setdefault(
+ name,
+ _ModuleInfo(
+ name=name,
+ kind=kind,
+ dirname=bazel_target_to_dir(name_with_variant),
+ ))
# An adjacency list for all modules in the transitive closure, excluding ignored modules.
module_adjacency_list = dict()
@@ -364,9 +383,9 @@
module_graph, converted = generate_module_info(top_level_module,
use_queryview)
except subprocess.CalledProcessError as err:
- print("Error running: '%s':", ' '.join(err.cmd))
- print("Output:\n%s" % err.output.decode('utf-8'))
- print("Error:\n%s" % err.stderr.decode('utf-8'))
+ print("Error running: '%s':", " ".join(err.cmd))
+ print("Output:\n%s" % err.output.decode("utf-8"))
+ print("Error:\n%s" % err.stderr.decode("utf-8"))
sys.exit(-1)
module_adjacency_list = None