From 873f8ce45b4090cf8eb0c172b90e07bc41d4bc63 Mon Sep 17 00:00:00 2001 From: Joe Kappus Date: Sat, 18 Apr 2026 04:01:04 -0400 Subject: [PATCH] bugs: fix open bug search with deps - move scan_existing_bugs before merges so nodes are still per-pkg - skip merging nodes whose bugno was set by scan Resolves: https://github.com/pkgcore/pkgdev/issues/222 Signed-off-by: Joe Kappus --- src/pkgdev/scripts/pkgdev_bugs.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/pkgdev/scripts/pkgdev_bugs.py b/src/pkgdev/scripts/pkgdev_bugs.py index 271c793..53bc347 100644 --- a/src/pkgdev/scripts/pkgdev_bugs.py +++ b/src/pkgdev/scripts/pkgdev_bugs.py @@ -655,6 +655,8 @@ def merge_new_keywords_children(self): for node, origs in reverse_edges.items(): if len(origs) != 1: continue + if node.bugno is not None: + continue existing_keywords = frozenset().union( *( pkgver.keywords @@ -665,6 +667,8 @@ def merge_new_keywords_children(self): if existing_keywords & frozenset().union(*(pkg[1] for pkg in node.pkgs)): continue # not fully new keywords orig = next(iter(origs)) + if orig.bugno is not None: + continue self.out.write(f"Merging {node} into {orig}") self.merge_nodes((orig, node)) found_someone = True @@ -674,7 +678,9 @@ def merge_stabilization_groups(self): for group, pkgs in self.options.repo.stabilization_groups.items(): restrict = packages.OrRestriction(*pkgs) mergable = tuple( - node for node in self.nodes if any(restrict.match(pkg) for pkg, _ in node.pkgs) + node + for node in self.nodes + if node.bugno is None and any(restrict.match(pkg) for pkg, _ in node.pkgs) ) if mergable: self.out.write(f"Merging @{group} group nodes: {mergable}") @@ -758,9 +764,6 @@ def main(options, out: Formatter, err: Formatter): options.targets = list(_load_from_stdin(out)) d.load_targets(options.targets) d.build_full_graph() - d.merge_stabilization_groups() - d.merge_cycles() - d.merge_new_keywords_children() if not d.nodes: out.write(out.fg("red"), "Nothing to do, exiting", out.reset) @@ -769,6 +772,10 @@ def main(options, out: Formatter, err: Formatter): if userquery("Check for open bugs matching current graph?", out, err, default_answer=False): d.scan_existing_bugs(options.api_key) + d.merge_stabilization_groups() + d.merge_cycles() + d.merge_new_keywords_children() + if options.edit_graph: toml = d.output_graph_toml()