From: Paul Barker <paul@pbarker.dev>
To: openembedded-core@lists.openembedded.org,
Richard Purdie <richard.purdie@linuxfoundation.org>
Cc: Alexander Kanavin <alex.kanavin@gmail.com>
Subject: Re: [PATCH] pseudo: Add hard sstate dependencies for pseudo-native
Date: Mon, 03 Nov 2025 19:46:05 +0000 [thread overview]
Message-ID: <91e68f9f8747154b3754d7a5156c5cf8f1b6b5db.camel@pbarker.dev> (raw)
In-Reply-To: <20251016-fix-pseudo-native-v1-1-7c42af094122@pbarker.dev>
[-- Attachment #1: Type: text/plain, Size: 3125 bytes --]
On Thu, 2025-10-16 at 20:11 +0100, Paul Barker wrote:
> Where a task (such as do_package) runs under fakeroot, the corresponding
> setscene task (do_package_setscene) will also run under fakeroot when
> restoring from sstate. Assuming pseudo is used as the fakeroot
> implementation, we need pseudo-native and all its runtime dependencies
> to be available in the sysroot before running any setscene tasks under
> fakeroot.
>
> We already add a hard dependency from all do_package_setscene tasks to
> virtual/fakeroot-native:do_populate_sysroot in base.bbclass, but this
> does not cover transitive dependencies. So, extend the dependencies of
> pseudo-native:do_populate_sysroot_setscene to ensure that the sqlite3
> library and attr binaries are also available in the sysroot before
> running fakeroot setscene tasks.
>
> [YOCTO #15963]
>
> Signed-off-by: Paul Barker <paul@pbarker.dev>
> ---
> meta/recipes-devtools/pseudo/pseudo.inc | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/meta/recipes-devtools/pseudo/pseudo.inc b/meta/recipes-devtools/pseudo/pseudo.inc
> index 22c934977d9b..82499cdd74da 100644
> --- a/meta/recipes-devtools/pseudo/pseudo.inc
> +++ b/meta/recipes-devtools/pseudo/pseudo.inc
> @@ -155,3 +155,10 @@ do_install:append:class-nativesdk () {
> }
>
> BBCLASSEXTEND = "native nativesdk"
> +
> +# Setscene tasks which run under fakeroot must not be executed before
> +# pseudo-native and *all* its runtime dependencies are available in the
> +# sysroot.
> +PSEUDO_SETSCENE_DEPS = ""
> +PSEUDO_SETSCENE_DEPS:class-native = "sqlite3-native:do_populate_sysroot attr-native:do_populate_sysroot"
> +do_populate_sysroot_setscene[depends] += "${PSEUDO_SETSCENE_DEPS}"
Richard,
I've spent some time looking at this. I can't find a good reason for the
hard setscene dependency on attr-native, this appears to be a build time
dependency only. I thought I saw invocation of the setfattr command, but
looking again that's just in the configure script.
I think setting the hard setscene dependency here in the pseudo recipe
is good. Placing it here as a dependency of pseudo-native gives us the
following dependency graph for the test case of gcc-runtime:do_package:
gcc-runtime:do_package_setscene -> pseudo-native:do_populate_sysroot_setscene -> sqlite3-native:do_populate_sysroot_setscene
The extra hop there doesn't really cause us any build performance
issues. It prevents us from running do_populate_sysroot_setscene in
parallel for pseudo-native and sqlite3-native, but neither of those are
large sstate archives and they're very quick to unpack.
I'd be concerned if the graph of hard dependencies got complicated, but
one level of indirection for a single dependency is ok.
It's good to keep the dependency in the pseudo recipe where it can be
easily understood, rather than moving it to a new variable named
something like FAKEROOT_SETSCENE_DEPENDS in base.bbclass.
So, I plan to send a v2 which drops the attr-native:do_populate_sysroot
dependency but is otherwise the same.
Thanks,
--
Paul Barker
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 252 bytes --]
prev parent reply other threads:[~2025-11-03 19:46 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-16 19:11 [PATCH] pseudo: Add hard sstate dependencies for pseudo-native Paul Barker
2025-10-18 11:35 ` [OE-core] " Gyorgy Sarvari
2025-10-28 14:02 ` Marko, Peter
2025-11-03 18:40 ` Paul Barker
2025-11-03 19:46 ` Paul Barker [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=91e68f9f8747154b3754d7a5156c5cf8f1b6b5db.camel@pbarker.dev \
--to=paul@pbarker.dev \
--cc=alex.kanavin@gmail.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=richard.purdie@linuxfoundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox