]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
create-spdx-3.0/populate_sdk_base: Add SDK_CLASSES inherit mechanism to fix tarball...
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 25 Jul 2024 10:40:00 +0000 (11:40 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 26 Jul 2024 11:26:24 +0000 (12:26 +0100)
Currently, "tarball" sdk based recipes don't generate SPDX manifests as they
don't include the rootfs generation classes. Split the SPDX 3.0 image class into
two so the SDK components can be included where needed.

To do this, introduce an SDK_CLASSES variable similar to IMAGE_CLASSES which
the SDK code can use.

Migrate testsdk usage to this.

Also move the image/sdk spdx classes to classes-recipe rather than the general classes
directory since they'd never be included on a global level.

For buildtools-tarball, it has its own testsdk functions so disable the class there as
a deferred inherit would overwrite it.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes-recipe/create-spdx-image-3.0.bbclass [moved from meta/classes/create-spdx-image-3.0.bbclass with 53% similarity]
meta/classes-recipe/create-spdx-sdk-3.0.bbclass [new file with mode: 0644]
meta/classes-recipe/populate_sdk_base.bbclass
meta/classes-recipe/testimage.bbclass
meta/classes/create-spdx-3.0.bbclass
meta/recipes-core/meta/buildtools-tarball.bb

similarity index 53%
rename from meta/classes/create-spdx-image-3.0.bbclass
rename to meta/classes-recipe/create-spdx-image-3.0.bbclass
index 1cad8537d14168792602fdfa072413b8396c7edb..fcae134d66e284e143be73ec262680b81043c5a2 100644 (file)
@@ -77,69 +77,3 @@ python do_create_image_sbom_spdx_setscene() {
     sstate_setscene(d)
 }
 addtask do_create_image_sbom_spdx_setscene
-
-do_populate_sdk[recrdeptask] += "do_create_spdx do_create_package_spdx"
-do_populate_sdk[cleandirs] += "${SPDXSDKWORK}"
-do_populate_sdk[postfuncs] += "sdk_create_sbom"
-POPULATE_SDK_POST_HOST_COMMAND:append:task-populate-sdk = " sdk_host_create_spdx"
-POPULATE_SDK_POST_TARGET_COMMAND:append:task-populate-sdk = " sdk_target_create_spdx"
-
-do_populate_sdk_ext[recrdeptask] += "do_create_spdx do_create_package_spdx"
-do_populate_sdk_ext[cleandirs] += "${SPDXSDKEXTWORK}"
-do_populate_sdk_ext[postfuncs] += "sdk_ext_create_sbom"
-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"
-
-python sdk_host_create_spdx() {
-    from pathlib import Path
-    import oe.spdx30_tasks
-    spdx_work_dir = Path(d.getVar('SPDXSDKWORK'))
-
-    oe.spdx30_tasks.sdk_create_spdx(d, "host", spdx_work_dir, d.getVar("TOOLCHAIN_OUTPUTNAME"))
-}
-
-python sdk_target_create_spdx() {
-    from pathlib import Path
-    import oe.spdx30_tasks
-    spdx_work_dir = Path(d.getVar('SPDXSDKWORK'))
-
-    oe.spdx30_tasks.sdk_create_spdx(d, "target", spdx_work_dir, d.getVar("TOOLCHAIN_OUTPUTNAME"))
-}
-
-python sdk_ext_host_create_spdx() {
-    from pathlib import Path
-    import oe.spdx30_tasks
-    spdx_work_dir = Path(d.getVar('SPDXSDKEXTWORK'))
-
-    # TODO: This doesn't seem to work
-    oe.spdx30_tasks.sdk_create_spdx(d, "host", spdx_work_dir, d.getVar("TOOLCHAINEXT_OUTPUTNAME"))
-}
-
-python sdk_ext_target_create_spdx() {
-    from pathlib import Path
-    import oe.spdx30_tasks
-    spdx_work_dir = Path(d.getVar('SPDXSDKEXTWORK'))
-
-    # TODO: This doesn't seem to work
-    oe.spdx30_tasks.sdk_create_spdx(d, "target", spdx_work_dir, d.getVar("TOOLCHAINEXT_OUTPUTNAME"))
-}
-
-
-python sdk_create_sbom() {
-    from pathlib import Path
-    import oe.spdx30_tasks
-    sdk_deploydir = Path(d.getVar("SDKDEPLOYDIR"))
-    spdx_work_dir = Path(d.getVar('SPDXSDKWORK'))
-
-    oe.spdx30_tasks.create_sdk_sbom(d, sdk_deploydir, spdx_work_dir, d.getVar("TOOLCHAIN_OUTPUTNAME"))
-}
-
-python sdk_ext_create_sbom() {
-    from pathlib import Path
-    import oe.spdx30_tasks
-    sdk_deploydir = Path(d.getVar("SDKEXTDEPLOYDIR"))
-    spdx_work_dir = Path(d.getVar('SPDXSDKEXTWORK'))
-
-    oe.spdx30_tasks.create_sdk_sbom(d, sdk_deploydir, spdx_work_dir, d.getVar("TOOLCHAINEXT_OUTPUTNAME"))
-}
-
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 (file)
index 0000000..ea01a21
--- /dev/null
@@ -0,0 +1,72 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# SPDX SDK tasks
+
+do_populate_sdk[recrdeptask] += "do_create_spdx do_create_package_spdx"
+do_populate_sdk[cleandirs] += "${SPDXSDKWORK}"
+do_populate_sdk[postfuncs] += "sdk_create_sbom"
+POPULATE_SDK_POST_HOST_COMMAND:append:task-populate-sdk = " sdk_host_create_spdx"
+POPULATE_SDK_POST_TARGET_COMMAND:append:task-populate-sdk = " sdk_target_create_spdx"
+
+do_populate_sdk_ext[recrdeptask] += "do_create_spdx do_create_package_spdx"
+do_populate_sdk_ext[cleandirs] += "${SPDXSDKEXTWORK}"
+do_populate_sdk_ext[postfuncs] += "sdk_ext_create_sbom"
+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"
+
+python sdk_host_create_spdx() {
+    from pathlib import Path
+    import oe.spdx30_tasks
+    spdx_work_dir = Path(d.getVar('SPDXSDKWORK'))
+
+    oe.spdx30_tasks.sdk_create_spdx(d, "host", spdx_work_dir, d.getVar("TOOLCHAIN_OUTPUTNAME"))
+}
+
+python sdk_target_create_spdx() {
+    from pathlib import Path
+    import oe.spdx30_tasks
+    spdx_work_dir = Path(d.getVar('SPDXSDKWORK'))
+
+    oe.spdx30_tasks.sdk_create_spdx(d, "target", spdx_work_dir, d.getVar("TOOLCHAIN_OUTPUTNAME"))
+}
+
+python sdk_ext_host_create_spdx() {
+    from pathlib import Path
+    import oe.spdx30_tasks
+    spdx_work_dir = Path(d.getVar('SPDXSDKEXTWORK'))
+
+    # TODO: This doesn't seem to work
+    oe.spdx30_tasks.sdk_create_spdx(d, "host", spdx_work_dir, d.getVar("TOOLCHAINEXT_OUTPUTNAME"))
+}
+
+python sdk_ext_target_create_spdx() {
+    from pathlib import Path
+    import oe.spdx30_tasks
+    spdx_work_dir = Path(d.getVar('SPDXSDKEXTWORK'))
+
+    # TODO: This doesn't seem to work
+    oe.spdx30_tasks.sdk_create_spdx(d, "target", spdx_work_dir, d.getVar("TOOLCHAINEXT_OUTPUTNAME"))
+}
+
+
+python sdk_create_sbom() {
+    from pathlib import Path
+    import oe.spdx30_tasks
+    sdk_deploydir = Path(d.getVar("SDKDEPLOYDIR"))
+    spdx_work_dir = Path(d.getVar('SPDXSDKWORK'))
+
+    oe.spdx30_tasks.create_sdk_sbom(d, sdk_deploydir, spdx_work_dir, d.getVar("TOOLCHAIN_OUTPUTNAME"))
+}
+
+python sdk_ext_create_sbom() {
+    from pathlib import Path
+    import oe.spdx30_tasks
+    sdk_deploydir = Path(d.getVar("SDKEXTDEPLOYDIR"))
+    spdx_work_dir = Path(d.getVar('SPDXSDKEXTWORK'))
+
+    oe.spdx30_tasks.create_sdk_sbom(d, sdk_deploydir, spdx_work_dir, d.getVar("TOOLCHAINEXT_OUTPUTNAME"))
+}
+
index 61a8b5e3004d144107f7bcd97dfc3cd6a1678dfa..50bb81cd04955c5c4666152c2bd82e130f7c8a3b 100644 (file)
@@ -4,6 +4,9 @@
 # SPDX-License-Identifier: MIT
 #
 
+SDK_CLASSES += "${@bb.utils.contains("IMAGE_CLASSES", "testimage", "testsdk", "", d)}"
+inherit_defer ${SDK_CLASSES}
+
 PACKAGES = ""
 
 # This exists as an optimization for SPDX processing to only run in image and
index 531330f3848ae2e2deef36d3a4a241909be7888d..6d1e1a107a73ee5f414ea1837a784c20e44eda60 100644 (file)
@@ -483,5 +483,3 @@ python () {
     if oe.types.boolean(d.getVar("TESTIMAGE_AUTO") or "False"):
         bb.build.addtask("testimage", "do_build", "do_image_complete", d)
 }
-
-inherit testsdk
index 2eb44ba808941b0b85bd1395536e388c54b80c90..c1241e585631fa16f6cd3d7189386fe4d01ba02d 100644 (file)
@@ -115,6 +115,7 @@ SPDX_PACKAGE_SUPPLIER[doc] = "The base variable name to describe the Agent who \
 
 
 IMAGE_CLASSES:append = " create-spdx-image-3.0"
+SDK_CLASSES += "create-spdx-sdk-3.0"
 
 oe.spdx30_tasks.set_timestamp_now[vardepsexclude] = "SPDX_INCLUDE_TIMESTAMPS"
 oe.spdx30_tasks.get_package_sources_from_debug[vardepsexclude] += "STAGING_KERNEL_DIR"
index 92fbda335db2cdff30848fb78280eadae656768a..e2ce5b3ecf8f8e5cbeb37c2f09caf005ac25be7b 100644 (file)
@@ -112,6 +112,9 @@ INHIBIT_DEFAULT_DEPS = "1"
 # Directory in testsdk that contains testcases
 TESTSDK_CASES = "buildtools-cases"
 
+# We have our own code, avoid deferred inherit
+SDK_CLASSES:remove = "testsdk"
+
 python do_testsdk() {
     import oeqa.sdk.testsdk
     testsdk = oeqa.sdk.testsdk.TestSDK()