commit:     6b2fa41a644e4fbaddaf0428d6be5e64a2fad54e
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sun Feb  8 10:17:25 2026 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sun Feb  8 10:17:25 2026 +0000
URL:        https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=6b2fa41a

qdepends: resolve against VDB always and use installed USE-flags

This allows -tRv to show the original dependency specification, with
resolved atom versions from the installed package, also highlighting
which USE-flags were activated (due to resolved pkgs) and which packages
were chosen via || groups.

Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 qdepends.c | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/qdepends.c b/qdepends.c
index 068ea619..f2882103 100644
--- a/qdepends.c
+++ b/qdepends.c
@@ -188,18 +188,28 @@ qdepends_results_cb(tree_pkg_ctx *pkg_ctx, void *priv)
                        continue;
                }
 
-               /* try and resolve expressions to real package atoms */
-               if (state->resolve)
-                       dep_resolve_tree(dep_tree, state->rtree);
-
                deps = array_new();
 
                if (state->qmode & QMODE_TREE &&
                        !(state->qmode & QMODE_REVERSE) &&
                        verbose)
                {
-                       if (!state->resolve)
-                               dep_resolve_tree(dep_tree, state->vdb);
+                       if (state->resolve)
+                       {
+                               set_t *use = NULL;
+                               array *ma  = tree_match_atom(state->vdb,
+                                                                               
         datom,
+                                                                               
         (TREE_MATCH_DEFAULT |
+                                                                               
          TREE_MATCH_FIRST));
+                               if (array_cnt(ma) > 0)
+                               {
+                                       tree_pkg_ctx *p = array_get(ma, 0);
+                                       use = set_add_from_string(NULL, 
tree_pkg_meta(p, Q_USE));
+                               }
+                               dep_resolve_tree(dep_tree, state->vdb, use);
+                               array_free(ma);
+                               set_free(use);
+                       }
                } else {
                        if (state->qmode & QMODE_FILTERUSE)
                                dep_prune_use(dep_tree, ev_use);
@@ -235,6 +245,10 @@ qdepends_results_cb(tree_pkg_ctx *pkg_ctx, void *priv)
                                        printf("\"");
                                }
                        } else {
+                               /* try and resolve expressions to real package 
atoms */
+                               if (state->resolve)
+                                       dep_resolve_tree(dep_tree, state->vdb, 
ev_use);
+
                                printf("\n%s=\"\n", *dfile);
                                dep_print_tree(stdout, dep_tree, 1, deps,
                                                GREEN, verbose > 1);

Reply via email to