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);