Gentoo Archives: gentoo-commits

From: Fabian Groffen <grobian@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage-utils:master commit in: libq/
Date: Tue, 01 Jun 2021 19:43:07
Message-Id: 1622576332.4fd296d65c76ceb98f69ff392c2ae0f31bd18d54.grobian@gentoo
1 commit: 4fd296d65c76ceb98f69ff392c2ae0f31bd18d54
2 Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
3 AuthorDate: Tue Jun 1 19:38:52 2021 +0000
4 Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
5 CommitDate: Tue Jun 1 19:38:52 2021 +0000
6 URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=4fd296d6
7
8 libq/tree: fix empty cat_ctx and path when using binpkgs
9
10 - ensure cat_ctx is set for each pkg coming from Packages file
11 - set path in each tree match
12
13 Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
14
15 libq/tree.c | 6 +++++-
16 1 file changed, 5 insertions(+), 1 deletion(-)
17
18 diff --git a/libq/tree.c b/libq/tree.c
19 index c00f251..358b1f2 100644
20 --- a/libq/tree.c
21 +++ b/libq/tree.c
22 @@ -1380,7 +1380,6 @@ tree_foreach_packages(tree_ctx *ctx, tree_pkg_cb callback, void *priv)
23 * generate a dummy cat */
24 cat = tree_open_cat(ctx, ".");
25 }
26 - pkg.cat_ctx = cat;
27 cat->pkg_ctxs = (tree_pkg_ctx **)atom; /* for name */
28 }
29 pkgnamelen = snprintf(pkgname, sizeof(pkgname),
30 @@ -1390,6 +1389,7 @@ tree_foreach_packages(tree_ctx *ctx, tree_pkg_cb callback, void *priv)
31 pkg.slot = meta.Q_SLOT == NULL ? (char *)"0" : meta.Q_SLOT;
32 pkg.repo = ctx->repo;
33 pkg.atom = atom;
34 + pkg.cat_ctx = cat;
35 pkg.fd = 0; /* intentional, meta has already been read */
36
37 /* do call callback with pkg_atom (populate cat and pkg) */
38 @@ -1650,6 +1650,8 @@ tree_match_atom_packages_cb(tree_pkg_ctx *ctx, void *priv)
39 n = xzalloc(sizeof(tree_match_ctx));
40 n->free_atom = true;
41 n->atom = atom_clone(a);
42 + snprintf(n->path, sizeof(n->path), "%s/%s/%s.tbz2",
43 + (char *)ctx->cat_ctx->ctx->path, ctx->cat_ctx->name, ctx->name);
44 if (rctx->flags & TREE_MATCH_METADATA) {
45 n->meta = xmalloc(sizeof(*n->meta));
46 /* for Packages, all pointers to meta here are to the in memory
47 @@ -1686,6 +1688,8 @@ tree_match_atom_binpkg_cb(tree_pkg_ctx *ctx, void *priv)
48 n = xzalloc(sizeof(tree_match_ctx));
49 n->free_atom = true;
50 n->atom = atom_clone(a);
51 + snprintf(n->path, sizeof(n->path), "%s/%s/%s.tbz2",
52 + (char *)ctx->cat_ctx->ctx->path, ctx->cat_ctx->name, ctx->name);
53 if (rctx->flags & TREE_MATCH_METADATA)
54 n->meta = tree_pkg_read(ctx);