summaryrefslogtreecommitdiff
path: root/poky/meta/classes-recipe/create-spdx-image-3.0.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'poky/meta/classes-recipe/create-spdx-image-3.0.bbclass')
-rw-r--r--poky/meta/classes-recipe/create-spdx-image-3.0.bbclass79
1 files changed, 79 insertions, 0 deletions
diff --git a/poky/meta/classes-recipe/create-spdx-image-3.0.bbclass b/poky/meta/classes-recipe/create-spdx-image-3.0.bbclass
new file mode 100644
index 0000000000..18e6cf6dfa
--- /dev/null
+++ b/poky/meta/classes-recipe/create-spdx-image-3.0.bbclass
@@ -0,0 +1,79 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# SPDX image tasks
+
+SPDX_ROOTFS_PACKAGES = "${SPDXDIR}/rootfs-packages.json"
+SPDXIMAGEDEPLOYDIR = "${SPDXDIR}/image-deploy"
+SPDXROOTFSDEPLOY = "${SPDXDIR}/rootfs-deploy"
+
+python spdx_collect_rootfs_packages() {
+ import json
+ from pathlib import Path
+ from oe.rootfs import image_list_installed_packages
+
+ root_packages_file = Path(d.getVar("SPDX_ROOTFS_PACKAGES"))
+
+ packages = image_list_installed_packages(d)
+ if not packages:
+ packages = {}
+
+ root_packages_file.parent.mkdir(parents=True, exist_ok=True)
+ with root_packages_file.open("w") as f:
+ json.dump(packages, f)
+}
+ROOTFS_POSTUNINSTALL_COMMAND =+ "spdx_collect_rootfs_packages"
+
+python do_create_rootfs_spdx() {
+ import oe.spdx30_tasks
+ oe.spdx30_tasks.create_rootfs_spdx(d)
+}
+addtask do_create_rootfs_spdx after do_rootfs before do_image
+SSTATETASKS += "do_create_rootfs_spdx"
+do_create_rootfs_spdx[sstate-inputdirs] = "${SPDXROOTFSDEPLOY}"
+do_create_rootfs_spdx[sstate-outputdirs] = "${DEPLOY_DIR_SPDX}"
+do_create_rootfs_spdx[recrdeptask] += "do_create_spdx do_create_package_spdx"
+do_create_rootfs_spdx[cleandirs] += "${SPDXROOTFSDEPLOY}"
+
+python do_create_rootfs_spdx_setscene() {
+ sstate_setscene(d)
+}
+addtask do_create_rootfs_spdx_setscene
+
+python do_create_image_spdx() {
+ import oe.spdx30_tasks
+ oe.spdx30_tasks.create_image_spdx(d)
+}
+addtask do_create_image_spdx after do_image_complete do_create_rootfs_spdx before do_build
+SSTATETASKS += "do_create_image_spdx"
+SSTATE_SKIP_CREATION:task-create-image-spdx = "1"
+do_create_image_spdx[sstate-inputdirs] = "${SPDXIMAGEWORK}"
+do_create_image_spdx[sstate-outputdirs] = "${DEPLOY_DIR_SPDX}"
+do_create_image_spdx[cleandirs] = "${SPDXIMAGEWORK}"
+do_create_image_spdx[dirs] = "${SPDXIMAGEWORK}"
+
+python do_create_image_spdx_setscene() {
+ sstate_setscene(d)
+}
+addtask do_create_image_spdx_setscene
+
+
+python do_create_image_sbom_spdx() {
+ import oe.spdx30_tasks
+ oe.spdx30_tasks.create_image_sbom_spdx(d)
+}
+addtask do_create_image_sbom_spdx after do_create_rootfs_spdx do_create_image_spdx before do_build
+SSTATETASKS += "do_create_image_sbom_spdx"
+SSTATE_SKIP_CREATION:task-create-image-sbom = "1"
+do_create_image_sbom_spdx[sstate-inputdirs] = "${SPDXIMAGEDEPLOYDIR}"
+do_create_image_sbom_spdx[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}"
+do_create_image_sbom_spdx[stamp-extra-info] = "${MACHINE_ARCH}"
+do_create_image_sbom_spdx[cleandirs] = "${SPDXIMAGEDEPLOYDIR}"
+do_create_image_sbom_spdx[recrdeptask] += "do_create_spdx do_create_package_spdx"
+
+python do_create_image_sbom_spdx_setscene() {
+ sstate_setscene(d)
+}
+addtask do_create_image_sbom_spdx_setscene