LGTM, thanks Reviewed-by: Joshua Watt <[email protected]>
On Tue, Feb 24, 2026 at 2:17 AM Benjamin Robin <[email protected]> wrote: > > With the current solution, using a separate task > (do_create_kernel_config_spdx) there is a dependency issue. Sometimes > the final rootfs SBOM does not contain the CONFIG_ values. > > do_create_kernel_config_spdx is executed after do_create_spdx which > deploys the SPDX file. do_create_kernel_config_spdx calls > oe.sbom30.find_root_obj_in_jsonld to read from the deploy directory, > which is OK, but the do_create_kernel_config_spdx ends up writing to > this deployed file (updating it). > > do_create_rootfs_spdx has an explicit dependency to all do_create_spdx > tasks, but there is nothing that prevents executing > do_create_kernel_config_spdx after do_create_rootfs_spdx. > > To fix it, instead, now read from the workdir, and write to the > workdir, and do the processing from the do_create_spdx task: > we append to the do_create_spdx task. > Furthermore, update oeqa selftest to execute do_create_spdx instead > of removed function. > > Also only execute this task if create-spdx-3.0 was inherited, > previously this code could be executed if create-spdx-2.2 is > inherited. > > Fixes: 228a968e7c47 ("kernel.bbclass: Add task to export kernel configuration > to SPDX") > Signed-off-by: Benjamin Robin (Schneider Electric) > <[email protected]> > --- > Changes in v3: > - Move the code inside a function declared inside do_create_spdx(), > this way we can declare variables safely and use return. > - Link to v2: > https://lore.kernel.org/r/[email protected] > > Changes in v2: > - Update spdx oeqa selftest > - Link to v1: > https://lore.kernel.org/r/[email protected] > --- > meta/classes-recipe/kernel.bbclass | 27 +++++++++++++++------------ > meta/lib/oeqa/selftest/cases/spdx.py | 2 +- > 2 files changed, 16 insertions(+), 13 deletions(-) > > diff --git a/meta/classes-recipe/kernel.bbclass > b/meta/classes-recipe/kernel.bbclass > index f989b31c477c..222a5d74f7bf 100644 > --- a/meta/classes-recipe/kernel.bbclass > +++ b/meta/classes-recipe/kernel.bbclass > @@ -864,14 +864,13 @@ addtask deploy after do_populate_sysroot do_packagedata > > EXPORT_FUNCTIONS do_deploy > > -python __anonymous() { > - inherits = (d.getVar("INHERIT") or "") > - if "create-spdx" in inherits: > - bb.build.addtask('do_create_kernel_config_spdx', 'do_populate_lic > do_deploy', 'do_create_spdx', d) > -} > +do_create_spdx:append() { > + def create_kernel_config_spdx(d): > + if not bb.data.inherits_class("create-spdx-3.0", d): > + return > + if d.getVar("SPDX_INCLUDE_KERNEL_CONFIG", True) != "1": > + return > > -python do_create_kernel_config_spdx() { > - if d.getVar("SPDX_INCLUDE_KERNEL_CONFIG", True) == "1": > import oe.spdx30 > import oe.spdx30_tasks > from pathlib import Path > @@ -903,9 +902,11 @@ python do_create_kernel_config_spdx() { > except Exception as e: > bb.error(f"Failed to parse kernel config file: {e}") > > - build, build_objset = oe.sbom30.find_root_obj_in_jsonld( > - d, "recipes", f"recipe-{pn}", oe.spdx30.build_Build > - ) > + path = oe.sbom30.jsonld_arch_path(d, pkg_arch, "recipes", > f"recipe-{pn}", deploydir=deploydir) > + build_objset = oe.sbom30.load_jsonld(d, path, required=True) > + build = build_objset.find_root(oe.spdx30.build_Build) > + if not build: > + bb.fatal("No root %s found in %s" % > (oe.spdx30.build_Build.__name__, path)) > > kernel_build = build_objset.add_root( > oe.spdx30.build_Build( > @@ -924,9 +925,11 @@ python do_create_kernel_config_spdx() { > [kernel_build] > ) > > - oe.sbom30.write_jsonld_doc(d, build_objset, deploydir / pkg_arch / > "recipes" / f"recipe-{pn}.spdx.json") > + oe.sbom30.write_jsonld_doc(d, build_objset, path) > + > + create_kernel_config_spdx(d) > } > -do_create_kernel_config_spdx[depends] = "virtual/kernel:do_configure" > +do_create_spdx[depends] += "virtual/kernel:do_configure" > > # Add using Device Tree support > inherit kernel-devicetree > diff --git a/meta/lib/oeqa/selftest/cases/spdx.py > b/meta/lib/oeqa/selftest/cases/spdx.py > index 41ef52fce1ca..5830d7c0872a 100644 > --- a/meta/lib/oeqa/selftest/cases/spdx.py > +++ b/meta/lib/oeqa/selftest/cases/spdx.py > @@ -369,7 +369,7 @@ class SPDX30Check(SPDX3CheckBase, OESelftestTestCase): > objset = self.check_recipe_spdx( > kernel_recipe, > spdx_path, > - task="do_create_kernel_config_spdx", > + task="do_create_spdx", > extraconf="""\ > INHERIT += "create-spdx" > SPDX_INCLUDE_KERNEL_CONFIG = "1" > > --- > base-commit: 3a8f0075d52cb653118774baa03aa8d5231f943c > change-id: 20260213-fix-kernel-config-spdx-99223936e69f > > Best regards, > -- > Benjamin Robin (Schneider Electric) <[email protected]> >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#232220): https://lists.openembedded.org/g/openembedded-core/message/232220 Mute This Topic: https://lists.openembedded.org/mt/117973098/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
