summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorMichael Rogov Papernov <[email protected]>2026-07-06 21:48:37 +0100
committerRbb666 <[email protected]>2026-07-09 15:19:42 +0800
commitc29b6db74c986c74ddd56e054c68ee3206ae90f3 (patch)
tree8ae07763136169b1dcc11e158ace9b48788c8d55 /tools
parent205c713b3c81694d9f503f33451cfdaea2524856 (diff)
ci: report skipped membrowse targets as identical
Diffstat (limited to 'tools')
-rw-r--r--tools/ci/membrowse_filter_targets.py23
1 files changed, 19 insertions, 4 deletions
diff --git a/tools/ci/membrowse_filter_targets.py b/tools/ci/membrowse_filter_targets.py
index 626adade8e..67afa71f78 100644
--- a/tools/ci/membrowse_filter_targets.py
+++ b/tools/ci/membrowse_filter_targets.py
@@ -79,13 +79,20 @@ def select_targets(targets, changed_files):
return selected
-def write_github_output(matrix, output_path):
+def skipped_targets(targets, selected_targets):
+ selected_names = {target["target_name"] for target in selected_targets}
+ return [target for target in targets if target["target_name"] not in selected_names]
+
+
+def write_github_output(selected, skipped, output_path):
if not output_path:
return
with open(output_path, "a", encoding="utf-8") as output:
- output.write("matrix={}\n".format(json.dumps(matrix, separators=(",", ":"))))
- output.write("target_count={}\n".format(len(matrix)))
+ output.write("matrix={}\n".format(json.dumps(selected, separators=(",", ":"))))
+ output.write("target_count={}\n".format(len(selected)))
+ output.write("skipped_matrix={}\n".format(json.dumps(skipped, separators=(",", ":"))))
+ output.write("skipped_count={}\n".format(len(skipped)))
def main():
@@ -99,6 +106,10 @@ def main():
changed_files = read_changed_files(args.changed_files)
selected_targets = select_targets(targets, changed_files)
+ # Targets not affected by this change are built by nobody, but their
+ # binaries are unchanged, so they are reported as identical (metadata-only)
+ # to keep every target's per-commit chain unbroken. See membrowse-report.yml.
+ unselected_targets = skipped_targets(targets, selected_targets)
print("Changed files:")
for changed_file in changed_files:
@@ -108,8 +119,12 @@ def main():
for target in selected_targets:
print(" {}".format(target["target_name"]))
+ print("Skipped MemBrowse targets (reported as identical):")
+ for target in unselected_targets:
+ print(" {}".format(target["target_name"]))
+
print("Selected {}/{} MemBrowse targets".format(len(selected_targets), len(targets)))
- write_github_output(selected_targets, os.getenv("GITHUB_OUTPUT"))
+ write_github_output(selected_targets, unselected_targets, os.getenv("GITHUB_OUTPUT"))
if __name__ == "__main__":