diff mbox series

[V2] insane.bbclass: avoid unnecessary rerun of do_patch

Message ID 20251217094747.3217558-1-Qi.Chen@windriver.com
State New
Headers show
Series [V2] insane.bbclass: avoid unnecessary rerun of do_patch | expand

Commit Message

Chen, Qi Dec. 17, 2025, 9:47 a.m. UTC
From: Chen Qi <Qi.Chen@windriver.com>

When toggling ptest for DISTRO_FEATURES, the do_patch function
gets rerun.

The dependency chain is:
do_patch -> do_qa_patch -> DISTRO_FEATURES{ptest}

Such rerun is not necessary. And it's kind of annoying because everything
gets rebuilt, including cross toolchain and recipes not using ptest.

The ERROR_QA and WARN_QA should be enough to trigger the re-run
if unimplemented-ptest is added to one of them.

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 meta/classes-global/insane.bbclass | 1 +
 1 file changed, 1 insertion(+)

Comments

Alexander Kanavin Dec. 17, 2025, 11:02 a.m. UTC | #1
On Wed, 17 Dec 2025 at 10:48, Chen Qi via lists.openembedded.org
<Qi.Chen=windriver.com@lists.openembedded.org> wrote:
> When toggling ptest for DISTRO_FEATURES, the do_patch function
> gets rerun.
>
> The dependency chain is:
> do_patch -> do_qa_patch -> DISTRO_FEATURES{ptest}
>
> Such rerun is not necessary. And it's kind of annoying because everything
> gets rebuilt, including cross toolchain and recipes not using ptest.
>
> The ERROR_QA and WARN_QA should be enough to trigger the re-run
> if unimplemented-ptest is added to one of them.
...
> +do_qa_patch[vardepsexclude] = "DISTRO_FEATURES"

The offending code is this:

    if not bb.utils.contains('DISTRO_FEATURES', 'ptest', True, False, d):
        pass
    elif
(gigantic list of elif checks follows)

I wonder if we should rather drop this first check for DISTRO_FEATURES
instead. These are recipe-level checks, and the issues reported are
valid regardless of whether ptest is in someone's DISTRO_FEATURES or
not.

Using vardepsexclude is problematic because do_qa_patch may have other
uses of DISTRO_FEATURES in the future, and the same reasoning may not
apply to them.

Alex
Chen, Qi Dec. 17, 2025, 1:01 p.m. UTC | #2
I agree. I'll send out V3.

Regards,
Qi

-----Original Message-----
From: Alexander Kanavin <alex.kanavin@gmail.com> 
Sent: Wednesday, December 17, 2025 7:02 PM
To: Chen, Qi <Qi.Chen@windriver.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [OE-core][PATCH V2] insane.bbclass: avoid unnecessary rerun of do_patch

On Wed, 17 Dec 2025 at 10:48, Chen Qi via lists.openembedded.org <Qi.Chen=windriver.com@lists.openembedded.org> wrote:
> When toggling ptest for DISTRO_FEATURES, the do_patch function gets 
> rerun.
>
> The dependency chain is:
> do_patch -> do_qa_patch -> DISTRO_FEATURES{ptest}
>
> Such rerun is not necessary. And it's kind of annoying because 
> everything gets rebuilt, including cross toolchain and recipes not using ptest.
>
> The ERROR_QA and WARN_QA should be enough to trigger the re-run if 
> unimplemented-ptest is added to one of them.
...
> +do_qa_patch[vardepsexclude] = "DISTRO_FEATURES"

The offending code is this:

    if not bb.utils.contains('DISTRO_FEATURES', 'ptest', True, False, d):
        pass
    elif
(gigantic list of elif checks follows)

I wonder if we should rather drop this first check for DISTRO_FEATURES instead. These are recipe-level checks, and the issues reported are valid regardless of whether ptest is in someone's DISTRO_FEATURES or not.

Using vardepsexclude is problematic because do_qa_patch may have other uses of DISTRO_FEATURES in the future, and the same reasoning may not apply to them.

Alex
diff mbox series

Patch

diff --git a/meta/classes-global/insane.bbclass b/meta/classes-global/insane.bbclass
index fed8163c3e..3185209b7f 100644
--- a/meta/classes-global/insane.bbclass
+++ b/meta/classes-global/insane.bbclass
@@ -1345,6 +1345,7 @@  python do_qa_patch() {
 
     oe.qa.exit_if_errors(d)
 }
+do_qa_patch[vardepsexclude] = "DISTRO_FEATURES"
 
 python do_qa_configure() {
     import subprocess