commit: 4fd296d65c76ceb98f69ff392c2ae0f31bd18d54
Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 1 19:38:52 2021 +0000
Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Tue Jun 1 19:38:52 2021 +0000
URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=4fd296d6
libq/tree: fix empty cat_ctx and path when using binpkgs
- ensure cat_ctx is set for each pkg coming from Packages file
- set path in each tree match
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
libq/tree.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/libq/tree.c b/libq/tree.c
index c00f251..358b1f2 100644
--- a/libq/tree.c
+++ b/libq/tree.c
@@ -1380,7 +1380,6 @@ tree_foreach_packages(tree_ctx *ctx, tree_pkg_cb
callback, void *priv)
* generate a dummy cat */
cat = tree_open_cat(ctx, ".");
}
- pkg.cat_ctx = cat;
cat->pkg_ctxs = (tree_pkg_ctx **)atom;
/* for name */
}
pkgnamelen = snprintf(pkgname, sizeof(pkgname),
@@ -1390,6 +1389,7 @@ tree_foreach_packages(tree_ctx *ctx, tree_pkg_cb
callback, void *priv)
pkg.slot = meta.Q_SLOT == NULL ? (char *)"0" :
meta.Q_SLOT;
pkg.repo = ctx->repo;
pkg.atom = atom;
+ pkg.cat_ctx = cat;
pkg.fd = 0; /* intentional, meta has already
been read */
/* do call callback with pkg_atom (populate cat
and pkg) */
@@ -1650,6 +1650,8 @@ tree_match_atom_packages_cb(tree_pkg_ctx *ctx, void *priv)
n = xzalloc(sizeof(tree_match_ctx));
n->free_atom = true;
n->atom = atom_clone(a);
+ snprintf(n->path, sizeof(n->path), "%s/%s/%s.tbz2",
+ (char *)ctx->cat_ctx->ctx->path, ctx->cat_ctx->name,
ctx->name);
if (rctx->flags & TREE_MATCH_METADATA) {
n->meta = xmalloc(sizeof(*n->meta));
/* for Packages, all pointers to meta here are to the in memory
@@ -1686,6 +1688,8 @@ tree_match_atom_binpkg_cb(tree_pkg_ctx *ctx, void *priv)
n = xzalloc(sizeof(tree_match_ctx));
n->free_atom = true;
n->atom = atom_clone(a);
+ snprintf(n->path, sizeof(n->path), "%s/%s/%s.tbz2",
+ (char *)ctx->cat_ctx->ctx->path, ctx->cat_ctx->name,
ctx->name);
if (rctx->flags & TREE_MATCH_METADATA)
n->meta = tree_pkg_read(ctx);