summaryrefslogtreecommitdiffstats
path: root/meta/classes-recipe
diff options
context:
space:
mode:
authorKamel Bouhara (Schneider Electric) <kamel.bouhara@bootlin.com>2025-11-07 14:14:35 +0100
committerSteve Sakoman <steve@sakoman.com>2025-11-14 06:45:29 -0800
commit11cd8498da86c61366e8701a8a49d60120c85248 (patch)
treecdec6b8c60c78687612dea2f0b61e81d22dbfdc7 /meta/classes-recipe
parentd101e1410d05ba8faede730214db99c31476f733 (diff)
downloadpoky-11cd8498da86c61366e8701a8a49d60120c85248.tar.gz
backport: SPDX 3.0 fixes and tasks from upstream version Walnascar
Backports the SPDX 3.0 support and fixes from upstream walnascar commit 49f47169953b807d430461ca33f3a2b076119712 into upstream scarthgap. (From OE-Core rev: 9c9b9545049a2f6e5c99edcb079275d29a4d1ac6) Signed-off-by: Kamel Bouhara (Schneider Electric) <kamel.bouhara@bootlin.com> Signed-off-by: Steve Sakoman <steve@sakoman.com>
Diffstat (limited to 'meta/classes-recipe')
-rw-r--r--meta/classes-recipe/create-spdx-image-3.0.bbclass85
-rw-r--r--meta/classes-recipe/create-spdx-sdk-3.0.bbclass74
-rw-r--r--meta/classes-recipe/nospdx.bbclass13
3 files changed, 172 insertions, 0 deletions
diff --git a/meta/classes-recipe/create-spdx-image-3.0.bbclass b/meta/classes-recipe/create-spdx-image-3.0.bbclass
new file mode 100644
index 0000000000..e0f1766bb7
--- /dev/null
+++ b/meta/classes-recipe/create-spdx-image-3.0.bbclass
@@ -0,0 +1,85 @@
1#
2# Copyright OpenEmbedded Contributors
3#
4# SPDX-License-Identifier: GPL-2.0-only
5#
6# SPDX image tasks
7
8SPDX_ROOTFS_PACKAGES = "${SPDXDIR}/rootfs-packages.json"
9SPDXIMAGEDEPLOYDIR = "${SPDXDIR}/image-deploy"
10SPDXROOTFSDEPLOY = "${SPDXDIR}/rootfs-deploy"
11
12python spdx_collect_rootfs_packages() {
13 import json
14 from pathlib import Path
15 from oe.rootfs import image_list_installed_packages
16
17 root_packages_file = Path(d.getVar("SPDX_ROOTFS_PACKAGES"))
18
19 packages = image_list_installed_packages(d)
20 if not packages:
21 packages = {}
22
23 root_packages_file.parent.mkdir(parents=True, exist_ok=True)
24 with root_packages_file.open("w") as f:
25 json.dump(packages, f)
26}
27ROOTFS_POSTUNINSTALL_COMMAND =+ "spdx_collect_rootfs_packages"
28
29python do_create_rootfs_spdx() {
30 import oe.spdx30_tasks
31 oe.spdx30_tasks.create_rootfs_spdx(d)
32}
33addtask do_create_rootfs_spdx after do_rootfs before do_image
34SSTATETASKS += "do_create_rootfs_spdx"
35do_create_rootfs_spdx[sstate-inputdirs] = "${SPDXROOTFSDEPLOY}"
36do_create_rootfs_spdx[sstate-outputdirs] = "${DEPLOY_DIR_SPDX}"
37do_create_rootfs_spdx[recrdeptask] += "do_create_spdx do_create_package_spdx"
38do_create_rootfs_spdx[cleandirs] += "${SPDXROOTFSDEPLOY}"
39do_create_rootfs_spdx[file-checksums] += "${SPDX3_LIB_DEP_FILES}"
40
41python do_create_rootfs_spdx_setscene() {
42 sstate_setscene(d)
43}
44addtask do_create_rootfs_spdx_setscene
45
46python do_create_image_spdx() {
47 import oe.spdx30_tasks
48 oe.spdx30_tasks.create_image_spdx(d)
49}
50addtask do_create_image_spdx after do_image_complete do_create_rootfs_spdx before do_build
51SSTATETASKS += "do_create_image_spdx"
52SSTATE_SKIP_CREATION:task-create-image-spdx = "1"
53do_create_image_spdx[sstate-inputdirs] = "${SPDXIMAGEWORK}"
54do_create_image_spdx[sstate-outputdirs] = "${DEPLOY_DIR_SPDX}"
55do_create_image_spdx[cleandirs] = "${SPDXIMAGEWORK}"
56do_create_image_spdx[dirs] = "${SPDXIMAGEWORK}"
57do_create_image_spdx[file-checksums] += "${SPDX3_LIB_DEP_FILES}"
58do_create_image_spdx[vardeps] += "\
59 SPDX_IMAGE_PURPOSE \
60 "
61
62python do_create_image_spdx_setscene() {
63 sstate_setscene(d)
64}
65addtask do_create_image_spdx_setscene
66
67
68python do_create_image_sbom_spdx() {
69 import oe.spdx30_tasks
70 oe.spdx30_tasks.create_image_sbom_spdx(d)
71}
72addtask do_create_image_sbom_spdx after do_create_rootfs_spdx do_create_image_spdx before do_build
73SSTATETASKS += "do_create_image_sbom_spdx"
74SSTATE_SKIP_CREATION:task-create-image-sbom = "1"
75do_create_image_sbom_spdx[sstate-inputdirs] = "${SPDXIMAGEDEPLOYDIR}"
76do_create_image_sbom_spdx[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}"
77do_create_image_sbom_spdx[stamp-extra-info] = "${MACHINE_ARCH}"
78do_create_image_sbom_spdx[cleandirs] = "${SPDXIMAGEDEPLOYDIR}"
79do_create_image_sbom_spdx[recrdeptask] += "do_create_spdx do_create_package_spdx"
80do_create_image_sbom_spdx[file-checksums] += "${SPDX3_LIB_DEP_FILES}"
81
82python do_create_image_sbom_spdx_setscene() {
83 sstate_setscene(d)
84}
85addtask do_create_image_sbom_spdx_setscene
diff --git a/meta/classes-recipe/create-spdx-sdk-3.0.bbclass b/meta/classes-recipe/create-spdx-sdk-3.0.bbclass
new file mode 100644
index 0000000000..855fb3d09f
--- /dev/null
+++ b/meta/classes-recipe/create-spdx-sdk-3.0.bbclass
@@ -0,0 +1,74 @@
1#
2# Copyright OpenEmbedded Contributors
3#
4# SPDX-License-Identifier: GPL-2.0-only
5#
6# SPDX SDK tasks
7
8do_populate_sdk[recrdeptask] += "do_create_spdx do_create_package_spdx"
9do_populate_sdk[cleandirs] += "${SPDXSDKWORK}"
10do_populate_sdk[postfuncs] += "sdk_create_sbom"
11do_populate_sdk[file-checksums] += "${SPDX3_LIB_DEP_FILES}"
12POPULATE_SDK_POST_HOST_COMMAND:append:task-populate-sdk = " sdk_host_create_spdx"
13POPULATE_SDK_POST_TARGET_COMMAND:append:task-populate-sdk = " sdk_target_create_spdx"
14
15do_populate_sdk_ext[recrdeptask] += "do_create_spdx do_create_package_spdx"
16do_populate_sdk_ext[cleandirs] += "${SPDXSDKEXTWORK}"
17do_populate_sdk_ext[postfuncs] += "sdk_ext_create_sbom"
18do_populate_sdk_ext[file-checksums] += "${SPDX3_LIB_DEP_FILES}"
19POPULATE_SDK_POST_HOST_COMMAND:append:task-populate-sdk-ext = " sdk_ext_host_create_spdx"
20POPULATE_SDK_POST_TARGET_COMMAND:append:task-populate-sdk-ext = " sdk_ext_target_create_spdx"
21
22python sdk_host_create_spdx() {
23 from pathlib import Path
24 import oe.spdx30_tasks
25 spdx_work_dir = Path(d.getVar('SPDXSDKWORK'))
26
27 oe.spdx30_tasks.sdk_create_spdx(d, "host", spdx_work_dir, d.getVar("TOOLCHAIN_OUTPUTNAME"))
28}
29
30python sdk_target_create_spdx() {
31 from pathlib import Path
32 import oe.spdx30_tasks
33 spdx_work_dir = Path(d.getVar('SPDXSDKWORK'))
34
35 oe.spdx30_tasks.sdk_create_spdx(d, "target", spdx_work_dir, d.getVar("TOOLCHAIN_OUTPUTNAME"))
36}
37
38python sdk_ext_host_create_spdx() {
39 from pathlib import Path
40 import oe.spdx30_tasks
41 spdx_work_dir = Path(d.getVar('SPDXSDKEXTWORK'))
42
43 # TODO: This doesn't seem to work
44 oe.spdx30_tasks.sdk_create_spdx(d, "host", spdx_work_dir, d.getVar("TOOLCHAINEXT_OUTPUTNAME"))
45}
46
47python sdk_ext_target_create_spdx() {
48 from pathlib import Path
49 import oe.spdx30_tasks
50 spdx_work_dir = Path(d.getVar('SPDXSDKEXTWORK'))
51
52 # TODO: This doesn't seem to work
53 oe.spdx30_tasks.sdk_create_spdx(d, "target", spdx_work_dir, d.getVar("TOOLCHAINEXT_OUTPUTNAME"))
54}
55
56
57python sdk_create_sbom() {
58 from pathlib import Path
59 import oe.spdx30_tasks
60 sdk_deploydir = Path(d.getVar("SDKDEPLOYDIR"))
61 spdx_work_dir = Path(d.getVar('SPDXSDKWORK'))
62
63 oe.spdx30_tasks.create_sdk_sbom(d, sdk_deploydir, spdx_work_dir, d.getVar("TOOLCHAIN_OUTPUTNAME"))
64}
65
66python sdk_ext_create_sbom() {
67 from pathlib import Path
68 import oe.spdx30_tasks
69 sdk_deploydir = Path(d.getVar("SDKEXTDEPLOYDIR"))
70 spdx_work_dir = Path(d.getVar('SPDXSDKEXTWORK'))
71
72 oe.spdx30_tasks.create_sdk_sbom(d, sdk_deploydir, spdx_work_dir, d.getVar("TOOLCHAINEXT_OUTPUTNAME"))
73}
74
diff --git a/meta/classes-recipe/nospdx.bbclass b/meta/classes-recipe/nospdx.bbclass
new file mode 100644
index 0000000000..b20e28218b
--- /dev/null
+++ b/meta/classes-recipe/nospdx.bbclass
@@ -0,0 +1,13 @@
1#
2# Copyright OpenEmbedded Contributors
3#
4# SPDX-License-Identifier: MIT
5#
6
7deltask do_collect_spdx_deps
8deltask do_create_spdx
9deltask do_create_spdx_runtime
10deltask do_create_package_spdx
11deltask do_create_rootfs_spdx
12deltask do_create_image_spdx
13deltask do_create_image_sbom