]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
populate_sdk_ext: include image SPDX tasks in locked signatures
authorJayasurya Maganuru <Maganuru.Jayasurya@windriver.com>
Wed, 29 Oct 2025 10:10:55 +0000 (03:10 -0700)
committerMathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Tue, 4 Nov 2025 09:42:40 +0000 (10:42 +0100)
Fixes [YOCTO #15726]
Fixes [YOCTO #15853]

After the switch to SPDX 3.0, eSDK installation can fail with errors like:

  gcc-source-1*:do_fetch attempted to execute unexpectedly
  This is usually due to missing setscene tasks.

This is caused by image-related SPDX tasks, such as do_create_image_sbom_spdx,
being excluded from the locked signatures. Without these, the corresponding
sstate-cache artifacts are missing during eSDK installation.

Previously (under SPDX 2.2), these image SPDX/SBOM tasks were not
dependencies of do_populate_sdk_ext task, so their sstate artifacts
 were not required at install time.

Fix:
- Added `do_create_image_sbom_spdx` as a task dependency before `do_sdk_depends`
  to ensure SPDX/SBOM data generation is integrated in the eSDK build flow.
- Adjusted `prepare_locked_cache()` to retain SDK_TARGETS (and their multilib
  variants) in the locked signatures file, ensuring image SPDX/SBOM tasks are
  preserved and not excluded during locked-sigs filtering.

With this fix, eSDK installs work without unexpected task runs, even
for custom distros or "tar" images.

Signed-off-by: Jayasurya Maganuru <Maganuru.Jayasurya@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
meta/classes-recipe/create-spdx-sdk-3.0.bbclass
meta/classes-recipe/populate_sdk_ext.bbclass

index e5f220cdfa9fd654853b09a708d7657667fa46fe..4fb6b1283e75eec7ff2386a9ed8a27855a94df79 100644 (file)
@@ -18,6 +18,7 @@ do_populate_sdk_ext[postfuncs] += "sdk_ext_create_sbom"
 do_populate_sdk_ext[file-checksums] += "${SPDX3_DEP_FILES}"
 POPULATE_SDK_POST_HOST_COMMAND:append:task-populate-sdk-ext = " sdk_ext_host_create_spdx"
 POPULATE_SDK_POST_TARGET_COMMAND:append:task-populate-sdk-ext = " sdk_ext_target_create_spdx"
+addtask do_create_image_sbom_spdx before do_sdk_depends
 
 python sdk_host_create_spdx() {
     from pathlib import Path
index 2859320ddf3b825d46d6178da77cb86b20d98739..2838ca1a03b7e52aea42249215ae908be6d62949 100644 (file)
@@ -460,6 +460,15 @@ def prepare_locked_cache(d, baseoutpath, derivative, conf_initpath):
 
     # Filter the locked signatures file to just the sstate tasks we are interested in
     excluded_targets = get_sdk_install_targets(d, images_only=True)
+    sdk_targets = d.getVar('SDK_TARGETS')
+    ext_sdk_target_set = set(multilib_pkg_extend(d, sdk_targets).split())
+    excluded_set = set(excluded_targets.split())
+
+    # Ensure SDK_TARGETS and their image SPDX/SBOM tasks are included in the locked signatures,
+    # as they are required during eSDK installation.
+    filtered_excluded_set = excluded_set - ext_sdk_target_set
+    excluded_targets = ' '.join(filtered_excluded_set)
+
     sigfile = d.getVar('WORKDIR') + '/locked-sigs.inc'
     lockedsigs_pruned = baseoutpath + '/conf/locked-sigs.inc'
     #nativesdk-only sigfile to merge into locked-sigs.inc