Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH 1/4] meta/lib/oe/sbom30.py: correct alias
@ 2024-12-17  3:47 Hongxu Jia
  2024-12-17  3:47 ` [PATCH 2/4] meta/lib/oe/spdx30_tasks.py: fix hash link conflict while multiconfig enabled Hongxu Jia
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Hongxu Jia @ 2024-12-17  3:47 UTC (permalink / raw)
  To: openembedded-core, jpewhacker

After commit [spdx 3.0: Rework how SPDX aliases are linked] applied,
it added extra "/" to namespace, which causing the replacement of
UNIHASH missing a "/"

  http://spdxdocs.org/openembedded-alias/by-doc-hash/0b308e4b9ad979f642d8787c61f76c31bdcad04837eeaaf8bc383f33f99bbeb8/flex-nativeUNIHASH/build/recipe

After applying this commit to remove "/" from namespace.

  http://spdxdocs.org/openembedded-alias/by-doc-hash/0b308e4b9ad979f642d8787c61f76c31bdcad04837eeaaf8bc383f33f99bbeb8/flex-native/UNIHASH/build/recipe

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 meta/lib/oe/sbom30.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/lib/oe/sbom30.py b/meta/lib/oe/sbom30.py
index 29cb9e45ad..08fea2aca3 100644
--- a/meta/lib/oe/sbom30.py
+++ b/meta/lib/oe/sbom30.py
@@ -267,7 +267,7 @@ class ObjectSet(oe.spdx30.SHACLObjectSet):
 
     def new_alias_id(self, obj, replace):
         unihash = self.d.getVar("BB_UNIHASH")
-        namespace = self.get_namespace() + "/"
+        namespace = self.get_namespace()
         if unihash not in obj._id:
             bb.warn(f"Unihash {unihash} not found in {obj._id}")
             return None
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/4] meta/lib/oe/spdx30_tasks.py: fix hash link conflict while multiconfig enabled
  2024-12-17  3:47 [PATCH 1/4] meta/lib/oe/sbom30.py: correct alias Hongxu Jia
@ 2024-12-17  3:47 ` Hongxu Jia
  2024-12-17  3:47 ` [PATCH V2 3/4] gcc-cross.inc: add var-SSTATE_ARCHS_TUNEPKG to vardeps of do_create_spdx Hongxu Jia
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Hongxu Jia @ 2024-12-17  3:47 UTC (permalink / raw)
  To: openembedded-core, jpewhacker

While enabling multiconfig, build recipe (such as linux-libc-headers) in
different arch directories but generating duplicated hash link, and these
directories are listed in ${SPDX_MULTILIB_SSTATE_ARCHS}

In the following case, build recipe linux-libc-headers in multiconfig to
generate duplicated hash link in core2-32 and core2-64
$ echo 'MACHINE = qemux86-64' >> conf/local.conf
$ mkdir conf/multiconfig
$ echo 'MACHINE = "qemux86"' >> conf/multiconfig/qemux86.conf
$ echo 'BBMULTICONFIG = qemux86' >> conf/local.conf
$ bitbake linux-libc-headers mc:qemux86:linux-libc-headers
$ ls -al tmp/deploy/spdx/3.0.1/*/by-spdxid-hash/*/*.spdx.json |grep recipe-linux-libc-headers.spdx.json
tmp/deploy/spdx/3.0.1/core2-32/by-spdxid-hash/c5/c57f1b9dbf27d2c83c77ca49f971b31d6d6c5830434104c88a12c6e2eb687094.spdx.json -> ../../recipes/recipe-linux-libc-headers.spdx.json
tmp/deploy/spdx/3.0.1/core2-64/by-spdxid-hash/c5/c57f1b9dbf27d2c83c77ca49f971b31d6d6c5830434104c88a12c6e2eb687094.spdx.json -> ../../recipes/recipe-linux-libc-headers.spdx.json

According to [1], and after [spdx 3.0: Rework how SPDX aliases are linked]
applied, SPDX 3.0 have a loop on ${SPDX_MULTILIB_SSTATE_ARCHS} to search for
the hash link to find jsonld file, return on first match

If hash link duplicated, the first match may not be right. Add ${SSTATE_PKGARCH}
to link prefix which could distinguish arch directories in spdxId prefix.

After applying this commit, the hash link of linux-libc-headers differs

ls -al tmp/deploy/spdx/3.0.1/*/by-spdxid-hash/*/*.spdx.json |grep recipe-linux-libc-headers.spdx.json
tmp/deploy/spdx/3.0.1/core2-32/by-spdxid-hash/4f/4f80c220686f345bce561f6d745165ee803e6390ba5e047f54cb28f4e23c167f.spdx.json -> ../../recipes/recipe-linux-libc-headers.spdx.json
tmp/deploy/spdx/3.0.1/core2-64/by-spdxid-hash/22/22db6f7b9cf02bbd3e64ffe2b9bceb17bf6f2f1366db1e72d8d82c337954b112.spdx.json -> ../../recipes/recipe-linux-libc-headers.spdx.json

[1] https://github.com/openembedded/openembedded-core/commit/f1499c36c1054fc90f7b7268cc95285f2eca72f7#diff-253805ec3eaba58c6c3967711921d5a2748974ba533c6d864d86a8e5ad4df4c4L923

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 meta/lib/oe/sbom30.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/lib/oe/sbom30.py b/meta/lib/oe/sbom30.py
index 08fea2aca3..65603e69b7 100644
--- a/meta/lib/oe/sbom30.py
+++ b/meta/lib/oe/sbom30.py
@@ -786,7 +786,7 @@ class ObjectSet(oe.spdx30.SHACLObjectSet):
             OEIdAliasExtension(
                 alias=objset.new_alias_id(
                     document,
-                    OE_DOC_ALIAS_PREFIX + d.getVar("PN") + "/" + name + "/",
+                    OE_DOC_ALIAS_PREFIX + d.getVar("SSTATE_PKGARCH") + "/" + d.getVar("PN") + "/" + name + "/",
                 ),
             )
         )
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH V2 3/4] gcc-cross.inc: add var-SSTATE_ARCHS_TUNEPKG to vardeps of do_create_spdx
  2024-12-17  3:47 [PATCH 1/4] meta/lib/oe/sbom30.py: correct alias Hongxu Jia
  2024-12-17  3:47 ` [PATCH 2/4] meta/lib/oe/spdx30_tasks.py: fix hash link conflict while multiconfig enabled Hongxu Jia
@ 2024-12-17  3:47 ` Hongxu Jia
  2024-12-17  3:47 ` [PATCH V3 4/4] meta/lib/oe/sbom30.py: fix alias in simplelicensing_customIdToUri not extracted Hongxu Jia
  2024-12-17  7:37 ` [OE-core] [PATCH 1/4] meta/lib/oe/sbom30.py: correct alias Mathieu Dubois-Briand
  3 siblings, 0 replies; 8+ messages in thread
From: Hongxu Jia @ 2024-12-17  3:47 UTC (permalink / raw)
  To: openembedded-core, jpewhacker

The recipe gcc-cross inherited cross.bbclass which had class-native
recipe behavior, but depends on class-target recipe linux-libc-headers.
It caused the tweaking of ${TUNE_PKGARCH} for 32bit arm did not trigger
rebuild of do_create_spdx in gcc-cross-arm

Due to commit [meta/lib/oe/spdx30_tasks.py: fix hash link conflict while
multiconfig enabled] applied, it added ${SSTATE_PKGARCH} to link prefix.
While tweaking ${TUNE_PKGARCH} for 32bit arm, use do_create_spdx from
sstate cache will caused ${SSTATE_PKGARCH} did not match

In the following case, the link hash has no change while machine was changed
$ echo 'MACHINE = "qemuarmv5"' >> conf/local.conf
$ bitbake gcc-cross-arm
$ grep linux-libc-headers tmp/deploy/spdx/3.0.1/x86_64/recipes/recipe-gcc-cross-arm.spdx.json
        "http://spdxdocs.org/openembedded-alias/by-doc-hash/09523e44e7b6fe1aed03347e30191c00d93500ce6e1f453e8dfdfae98d325f3e/linux-libc-headers/UNIHASH/build/recipe",
$ echo 'MACHINE = "qemuarm"' >> conf/local.conf
$ bitbake gcc-cross-arm
$ grep linux-libc-headers tmp/deploy/spdx/3.0.1/x86_64/recipes/recipe-gcc-cross-arm.spdx.json
        "http://spdxdocs.org/openembedded-alias/by-doc-hash/09523e44e7b6fe1aed03347e30191c00d93500ce6e1f453e8dfdfae98d325f3e/linux-libc-headers/UNIHASH/build/recipe",

Explicitly add var-SSTATE_ARCHS_TUNEPKG to vardeps of do_create_spdx to
trigger rebuild in this situation.

After applying this commit, the link hash has changed along with machine changed

$ echo 'MACHINE = "qemuarmv5"' >> conf/local.conf
$ bitbake gcc-cross-arm
$ grep linux-libc-headers tmp/deploy/spdx/3.0.1/x86_64/recipes/recipe-gcc-cross-arm.spdx.json
        "http://spdxdocs.org/openembedded-alias/by-doc-hash/09523e44e7b6fe1aed03347e30191c00d93500ce6e1f453e8dfdfae98d325f3e/linux-libc-headers/UNIHASH/build/recipe",
$ echo 'MACHINE = "qemuarm"' >> conf/local.conf
$ bitbake gcc-cross-arm
$ grep linux-libc-headers tmp/deploy/spdx/3.0.1/x86_64/recipes/recipe-gcc-cross-arm.spdx.json
        "http://spdxdocs.org/openembedded-alias/by-doc-hash/087e29d3627a06f5377effa627b99907607f5af0fe8f6d116b4490650c404a55/linux-libc-headers/UNIHASH/build/recipe",

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 meta/recipes-devtools/gcc/gcc-cross.inc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/meta/recipes-devtools/gcc/gcc-cross.inc b/meta/recipes-devtools/gcc/gcc-cross.inc
index f85ccd5c23..f82228f55a 100644
--- a/meta/recipes-devtools/gcc/gcc-cross.inc
+++ b/meta/recipes-devtools/gcc/gcc-cross.inc
@@ -4,6 +4,7 @@ INHIBIT_DEFAULT_DEPS = "1"
 EXTRADEPENDS = ""
 DEPENDS = "virtual/${TARGET_PREFIX}binutils ${EXTRADEPENDS} ${NATIVEDEPS}"
 PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
+do_create_spdx[vardeps] += "SSTATE_ARCHS_TUNEPKG"
 python () {
     if d.getVar("TARGET_OS").startswith("linux"):
         d.setVar("EXTRADEPENDS", "linux-libc-headers")
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH V3 4/4] meta/lib/oe/sbom30.py: fix alias in simplelicensing_customIdToUri not extracted
  2024-12-17  3:47 [PATCH 1/4] meta/lib/oe/sbom30.py: correct alias Hongxu Jia
  2024-12-17  3:47 ` [PATCH 2/4] meta/lib/oe/spdx30_tasks.py: fix hash link conflict while multiconfig enabled Hongxu Jia
  2024-12-17  3:47 ` [PATCH V2 3/4] gcc-cross.inc: add var-SSTATE_ARCHS_TUNEPKG to vardeps of do_create_spdx Hongxu Jia
@ 2024-12-17  3:47 ` Hongxu Jia
  2024-12-17  7:37 ` [OE-core] [PATCH 1/4] meta/lib/oe/sbom30.py: correct alias Mathieu Dubois-Briand
  3 siblings, 0 replies; 8+ messages in thread
From: Hongxu Jia @ 2024-12-17  3:47 UTC (permalink / raw)
  To: openembedded-core, jpewhacker

After commit [spdx 3.0: Rework how SPDX aliases are linked] applied, it set
license_text_map with SPDX alias other than actual ID

The property of simplelicensing_customIdToUri is ListProp(ObjectProp(DictionaryEntry))),
and class DictionaryEntry has key and value, the property of value is StringProp other
than ObjectProp in which could not support to decode/extract SPDX alias with actual ID
in image jsonld file
-----------
      "simplelicensing_customIdToUri": [
        {
          "type": "DictionaryEntry",
          "key": "LicenseRef-PD",
          "value": "http://spdxdocs.org/openembedded-alias/by-doc-hash/d53e90e23b12c4ad640809a74a810e86f31c76cdbdf36487712d22a33d53362a/sqlite3-native/UNIHASH/license-text/PD"
        }
      ],
-----------

Add special code in the linking to manually go through all of the
simplelicensing_customIdToUri DictionaryEntry items and resolve
any aliases to actual objects
-----------
      "simplelicensing_customIdToUri": [
        {
          "type": "DictionaryEntry",
          "key": "LicenseRef-PD",
          "value": "http://spdx.org/spdxdocs/sqlite3-native-e5cc0672-d8dd-57e8-a2df-fe4615831fda/162c62b5b011cd3f82f413b3dae4d6d1542201552c964d5ce69fe170e0720b85/license-text/PD"
        }
      ]
-----------

Suggested-by: Joshua Watt <jpewhacker@gmail.com>
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 meta/lib/oe/sbom30.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/meta/lib/oe/sbom30.py b/meta/lib/oe/sbom30.py
index 65603e69b7..3264cb2f7e 100644
--- a/meta/lib/oe/sbom30.py
+++ b/meta/lib/oe/sbom30.py
@@ -855,6 +855,18 @@ class ObjectSet(oe.spdx30.SHACLObjectSet):
         self.doc.import_ = sorted(imports.values(), key=lambda e: e.externalSpdxId)
         bb.debug(1, "Linking...")
         self.link()
+
+        # Manually go through all of the simplelicensing_customIdToUri DictionaryEntry
+        # items and resolve any aliases to actual objects.
+        for lic in self.foreach_type(oe.spdx30.simplelicensing_LicenseExpression):
+            for d in lic.simplelicensing_customIdToUri:
+                if d.value.startswith(OE_ALIAS_PREFIX):
+                    obj = self.find_by_id(d.value)
+                    if obj is not None:
+                        d.value = obj._id
+                    else:
+                        self.missing_ids.add(d.value)
+
         self.missing_ids -= set(imports.keys())
         return self.missing_ids
 
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [OE-core] [PATCH 1/4] meta/lib/oe/sbom30.py: correct alias
  2024-12-17  3:47 [PATCH 1/4] meta/lib/oe/sbom30.py: correct alias Hongxu Jia
                   ` (2 preceding siblings ...)
  2024-12-17  3:47 ` [PATCH V3 4/4] meta/lib/oe/sbom30.py: fix alias in simplelicensing_customIdToUri not extracted Hongxu Jia
@ 2024-12-17  7:37 ` Mathieu Dubois-Briand
  2024-12-17 12:49   ` hongxu
  3 siblings, 1 reply; 8+ messages in thread
From: Mathieu Dubois-Briand @ 2024-12-17  7:37 UTC (permalink / raw)
  To: hongxu.jia, openembedded-core, jpewhacker

On Tue Dec 17, 2024 at 4:47 AM CET, hongxu via lists.openembedded.org wrote:
> After commit [spdx 3.0: Rework how SPDX aliases are linked] applied,
> it added extra "/" to namespace, which causing the replacement of
> UNIHASH missing a "/"
>
>   http://spdxdocs.org/openembedded-alias/by-doc-hash/0b308e4b9ad979f642d8787c61f76c31bdcad04837eeaaf8bc383f33f99bbeb8/flex-nativeUNIHASH/build/recipe
>
> After applying this commit to remove "/" from namespace.
>
>   http://spdxdocs.org/openembedded-alias/by-doc-hash/0b308e4b9ad979f642d8787c61f76c31bdcad04837eeaaf8bc383f33f99bbeb8/flex-native/UNIHASH/build/recipe
>
> Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
> ---

Hi Hongxu,

Sorry, but I still get the SPDX IDs were unable to be resolved warning.
E.g.:

WARNING: core-image-sato-sdk-1.0-r0 do_create_image_sbom_spdx: The following SPDX IDs were unable to be resolved:
  http://spdxdocs.org/openembedded-alias/by-doc-hash/82b2ddffbd624bcb26b4c93f8e7bf31e456ea81a1e5720354726d1fc7e433dd0/openssl/UNIHASH/package/openssl-bin
  http://spdxdocs.org/openembedded-alias/by-doc-hash/882a5d190518b194aea7380573eeee8a79f524131463308e414d0cb51f9a8099/openssl/UNIHASH/package/openssl
  http://spdxdocs.org/openembedded-alias/by-doc-hash/974e7ddc5b8f9307c770783e7d96e9e9fc65cd5b3f9cdd5a8578e4ed121dd8d1/initscripts/UNIHASH/build/recipe
  http://spdxdocs.org/openembedded-alias/by-doc-hash/f63cc948b407d32cfacbfc288d66c3fb64a6a611debfd7989d2cda55d7a957ca/openssh/UNIHASH/package/openssh

https://valkyrie.yoctoproject.org/#/builders/6/builds/668/steps/12/logs/stdio
https://valkyrie.yoctoproject.org/#/builders/8/builds/666/steps/15/logs/stdio
https://valkyrie.yoctoproject.org/#/builders/9/builds/646/steps/12/logs/stdio

-- 
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/4] meta/lib/oe/sbom30.py: correct alias
  2024-12-17  7:37 ` [OE-core] [PATCH 1/4] meta/lib/oe/sbom30.py: correct alias Mathieu Dubois-Briand
@ 2024-12-17 12:49   ` hongxu
  2024-12-20 16:09     ` [OE-core] " Mathieu Dubois-Briand
  0 siblings, 1 reply; 8+ messages in thread
From: hongxu @ 2024-12-17 12:49 UTC (permalink / raw)
  To: openembedded-core

[-- Attachment #1: Type: text/plain, Size: 4927 bytes --]

Hi Mathieu,

After apply all the 4 patches,
[PATCH 1/4] meta/lib/oe/sbom30.py: correct alias ( https://lists.openembedded.org/g/openembedded-core/message/208802?p=%2C%2C%2C20%2C0%2C0%2C0%3A%3ACreated%2C%2C%2C20%2C2%2C20%2C110158019%2Cd%253D3&d=3 )
[PATCH 2/4] meta/lib/oe/spdx30_tasks.py: fix hash link conflict while multiconfig enabled ( https://lists.openembedded.org/g/openembedded-core/message/208798?p=%2C%2C%2C20%2C0%2C0%2C0%3A%3ACreated%2C%2C%2C20%2C2%2C20%2C110158020%2Cd%253D3&d=3 )
[PATCH V2 3/4] gcc-cross.inc: add var-SSTATE_ARCHS_TUNEPKG to vardeps of do_create_spdx ( https://lists.openembedded.org/g/openembedded-core/message/208799?p=%2C%2C%2C20%2C0%2C0%2C0%3A%3ACreated%2C%2C%2C20%2C2%2C20%2C110158021%2Cd%253D3&d=3 )
[PATCH V3 4/4] meta/lib/oe/sbom30.py: fix alias in simplelicensing_customIdToUri not extracted ( https://lists.openembedded.org/g/openembedded-core/message/208800?p=%2C%2C%2C20%2C0%2C0%2C0%3A%3ACreated%2C%2C%2C20%2C2%2C20%2C110158022%2Cd%253D3&d=3 )

$ bitbake core-image-sato core-image-sato-sdk core-image-minimal core-image-sato:do_populate_sdk core-image-minimal:do_populate_sdk_ext core-image-sato:do_populate_sdk_ext

I could not re-produce the WARNING, f rom the  autobuilder log [1], I doubt the issue was caused by sstate cache between multiple builds with different poky sources

$ grep openssl stdio -n | grep spdx
2775:NOTE: Running setscene task 1619 of 7903 (virtual:nativesdk:/srv/pokybuild/yocto-worker/qemuarm64-armhost/build/meta/recipes-connectivity/openssl/openssl_3.4.0.bb:do_create_packa
ge_spdx_setscene)
2805:NOTE: recipe nativesdk-openssl-3.4.0-r0: task do_create_package_spdx_setscene: Started
2823:NOTE: recipe nativesdk-openssl-3.4.0-r0: task do_create_package_spdx_setscene: Succeeded
6774:NOTE: Running setscene task 3110 of 7903 (/srv/pokybuild/yocto-worker/qemuarm64-armhost/build/meta/recipes-connectivity/openssl/openssl_3.4.0.bb:do_create_package_spdx_setscene)
6799:NOTE: recipe openssl-3.4.0-r0: task do_create_package_spdx_setscene: Started
6823:NOTE: recipe openssl-3.4.0-r0: task do_create_package_spdx_setscene: Succeeded
7879:NOTE: Running setscene task 3505 of 7903 (virtual:native:/srv/pokybuild/yocto-worker/qemuarm64-armhost/build/meta/recipes-connectivity/openssl/openssl_3.4.0.bb:do_create_package spdx_setscene)
7909:NOTE: recipe openssl-native-3.4.0-r0: task do_create_package_spdx_setscene: Started
7929:NOTE: recipe openssl-native-3.4.0-r0: task do_create_package_spdx_setscene: Succeeded
13460:NOTE: Running setscene task 5732 of 7903 (virtual:nativesdk:/srv/pokybuild/yocto-worker/qemuarm64-armhost/build/meta/recipes-connectivity/openssl/openssl_3.4.0.bb:do_create_spd _setscene)
13494:NOTE: recipe nativesdk-openssl-3.4.0-r0: task do_create_spdx_setscene: Started
13512:NOTE: recipe nativesdk-openssl-3.4.0-r0: task do_create_spdx_setscene: Succeeded
15764:NOTE: Running setscene task 7051 of 7903 (/srv/pokybuild/yocto-worker/qemuarm64-armhost/build/meta/recipes-connectivity/openssl/openssl_3.4.0.bb:do_create_spdx_setscene)
15788:NOTE: recipe openssl-3.4.0-r0: task do_create_spdx_setscene: Started
15814:NOTE: recipe openssl-3.4.0-r0: task do_create_spdx_setscene: Succeeded
16806:NOTE: Running setscene task 7666 of 7903 (virtual:native:/srv/pokybuild/yocto-worker/qemuarm64-armhost/build/meta/recipes-connectivity/openssl/openssl_3.4.0.bb:do_create_spdx_se
tscene)
16823:NOTE: recipe openssl-native-3.4.0-r0: task do_create_spdx_setscene: Started
16832:NOTE: recipe openssl-native-3.4.0-r0: task do_create_spdx_setscene: Succeeded
19470:  http://spdxdocs.org/openembedded-alias/by-doc-hash/82b2ddffbd624bcb26b4c93f8e7bf31e456ea81a1e5720354726d1fc7e433dd0/openssl/UNIHASH/package/openssl-bin
19471:  http://spdxdocs.org/openembedded-alias/by-doc-hash/882a5d190518b194aea7380573eeee8a79f524131463308e414d0cb51f9a8099/openssl/UNIHASH/package/openssl
19482:  http://spdxdocs.org/openembedded-alias/by-doc-hash/abb77695d73c96547fa2c4d5d658cd5c44a6ca7b4f0c07889cbf868d6c832bb1/openssl-native/UNIHASH/build/recipe
19866:  http://spdxdocs.org/openembedded-alias/by-doc-hash/abb77695d73c96547fa2c4d5d658cd5c44a6ca7b4f0c07889cbf868d6c832bb1/openssl-native/UNIHASH/build/recipe
19965:  http://spdxdocs.org/openembedded-alias/by-doc-hash/82b2ddffbd624bcb26b4c93f8e7bf31e456ea81a1e5720354726d1fc7e433dd0/openssl/UNIHASH/package/openssl-bin
19967:  http://spdxdocs.org/openembedded-alias/by-doc-hash/882a5d190518b194aea7380573eeee8a79f524131463308e414d0cb51f9a8099/openssl/UNIHASH/package/openssl
19982:  http://spdxdocs.org/openembedded-alias/by-doc-hash/abb77695d73c96547fa2c4d5d658cd5c44a6ca7b4f0c07889cbf868d6c832bb1/openssl-native/UNIHASH/build/recipe
20069:  http://spdxdocs.org/openembedded-alias/by-doc-hash/abb77695d73c96547fa2c4d5d658cd5c44a6ca7b4f0c07889cbf868d6c832bb1/openssl-native/UNIHASH/build/recipe

[1] https://valkyrie.yoctoproject.org/api/v2/logs/928428/raw

//Hongxu

[-- Attachment #2: Type: text/html, Size: 5833 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [OE-core] [PATCH 1/4] meta/lib/oe/sbom30.py: correct alias
  2024-12-17 12:49   ` hongxu
@ 2024-12-20 16:09     ` Mathieu Dubois-Briand
  2024-12-25  2:41       ` Hongxu Jia
  0 siblings, 1 reply; 8+ messages in thread
From: Mathieu Dubois-Briand @ 2024-12-20 16:09 UTC (permalink / raw)
  To: hongxu.jia, openembedded-core


[-- Attachment #1.1: Type: text/plain, Size: 1531 bytes --]

Hi Hongxu,

I'm back on this issue. So yesterday I tried again to pick these
patches, and got warnings again:

https://valkyrie.yoctoproject.org/#/builders/29/builds/682

If I relaunch the builds, sometimes they will success, sometimes I still
get the warnings. Something seems to be intermittent here.

I tried to reproduce locally, and again, I get the warnings in some
intermittent way.

My setup was:
- Clean build directory, empty sstate cache.
- The local.conf attached. This is mainly the configuration used for
  https://valkyrie.yoctoproject.org/#/builders/8/builds/698, with some
  minor changes (like disabling the shared sstate configuration).
- Using meta, meta-poky and meta-yocto-bsp at this revision:
  https://git.yoctoproject.org/poky-ci-archive/tag/?h=a-full-685
- Used: bitbake core-image-sato core-image-sato-sdk core-image-minimal core-image-minimal-dev core-image-full-cmdline core-image-sato:do_populate_sdk

Now here is how it went:
- On my very first build, I got some SPDX warnings.
- On my next build they were all gone.
- I tried to tweak a bit my config, cleaned my cache again and still got
  no warnings.
- Then after some various modifications, I switched back again to my
  very first configuration, and got again some SPDX warnings.

So I'm sorry, I cannot give you some exact instructions to reproduce
this issue, but still we have some intermittent warnings :(

-- 
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


[-- Attachment #2: local.conf --]
[-- Type: text/plain, Size: 14170 bytes --]

#
# This file is your local configuration file and is where all local user settings
# are placed. The comments in this file give some guide to the options a new user
# to the system might want to change but pretty much any configuration option can
# be set in this file. More adventurous users can look at
# local.conf.sample.extended which contains other examples of configuration which
# can be placed in this file but new users likely won't need any of them
# initially. There's also site.conf.sample which contains examples of site specific
# information such as proxy server addresses.
#
# Lines starting with the '#' character are commented out and in some cases the
# default values are provided as comments to show people example syntax. Enabling
# the option is a question of removing the # character and making any change to the
# variable as required.

#
# Machine Selection
#
# You need to select a specific machine to target the build with. There are a selection
# of emulated machines available which can boot and run in the QEMU emulator:
#
#MACHINE ?= "qemuarm"
#MACHINE ?= "qemuarm64"
#MACHINE ?= "qemumips"
#MACHINE ?= "qemumips64"
#MACHINE ?= "qemuppc"
#MACHINE ?= "qemux86"
#MACHINE ?= "qemux86-64"
#
# There are also the following hardware board target machines included for 
# demonstration purposes:
#
#MACHINE ?= "beaglebone-yocto"
#MACHINE ?= "genericarm64"
#MACHINE ?= "genericx86"
#MACHINE ?= "genericx86-64"
#
# This sets the default machine to be qemux86-64 if no other machine is selected:
MACHINE ??= "qemux86-64"

# These are some of the more commonly used values. Looking at the files in the
# meta/conf/machine directory, or the conf/machine directory of any additional layers
# you add in will show all the available machines.

#
# Where to place downloads
#
# During a first build the system will download many different source code tarballs
# from various upstream projects. This can take a while, particularly if your network
# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you
# can preserve this directory to speed up this part of subsequent builds. This directory
# is safe to share between multiple builds on the same machine too.
#
# The default is a downloads directory under TOPDIR which is the build directory.
#
#DL_DIR ?= "${TOPDIR}/../build/downloads"

#
# Where to place shared-state files
#
# BitBake has the capability to accelerate builds based on previously built output.
# This is done using "shared state" files which can be thought of as cache objects
# and this option determines where those files are placed.
#
# You can wipe out TMPDIR leaving this directory intact and the build would regenerate
# from these files if no changes were made to the configuration. If changes were made
# to the configuration, only shared state files where the state was still valid would
# be used (done using checksums).
#
# The default is a sstate-cache directory under TOPDIR.
#
#SSTATE_DIR ?= "${TOPDIR}/sstate-cache"

#
# Where to place the build output
#
# This option specifies where the bulk of the building work should be done and
# where BitBake should place its temporary files and output. Keep in mind that
# this includes the extraction and compilation of many applications and the toolchain
# which can use Gigabytes of hard disk space.
#
# The default is a tmp directory under TOPDIR.
#
#TMPDIR = "${TOPDIR}/tmp"

#
# Default policy config
#
# The distribution setting controls which policy settings are used as defaults.
# The default value is fine for general Yocto project use, at least initially.
# Ultimately when creating custom policy, people will likely end up subclassing 
# these defaults.
#
DISTRO ?= "poky"
# As an example of a subclass there is a "bleeding" edge policy configuration
# where many versions are set to the absolute latest code from the upstream 
# source control systems. This is just mentioned here as an example, its not
# useful to most new users.
# DISTRO ?= "poky-bleeding"

#
# Package Management configuration
#
# This variable lists which packaging formats to enable. Multiple package backends
# can be enabled at once and the first item listed in the variable will be used
# to generate the root filesystems.
# Options are:
#  - 'package_deb' for debian style deb files
#  - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager)
#  - 'package_rpm' for rpm style packages
# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
# OE-Core defaults to ipkg, whilst Poky defaults to rpm:
# PACKAGE_CLASSES ?= "package_rpm"

#
# SDK target architecture
#
# This variable specifies the architecture to build SDK items for and means
# you can build the SDK packages for architectures other than the machine you are
# running the build on (i.e. building i686 packages on an x86_64 host).
# Supported values are i686, x86_64, aarch64
#SDKMACHINE ?= "i686"

#
# Extra image configuration defaults
#
# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated
# images. Some of these options are added to certain image types automatically. Some
# of the features available are:
#  "dbg-pkgs"             - add -dbg packages for all installed packages
#                           (adds symbol information for debugging/profiling)
#  "src-pkgs"             - add -src packages for all installed packages
#                           (adds source code for debugging)
#  "dev-pkgs"             - add -dev packages for all installed packages
#                           (useful if you want to develop against libs in the image)
#  "ptest-pkgs"           - add -ptest packages for all ptest-enabled packages
#                           (useful if you want to run the package test suites)
#  "tools-sdk"            - add development tools (gcc, make, pkgconfig etc.)
#  "tools-debug"          - add debugging tools (gdb, strace)
#  "eclipse-debug"        - add Eclipse remote debugging support
#  "tools-profile"        - add profiling tools (oprofile, lttng, valgrind)
#  "tools-testapps"       - add useful testing tools (ts_print, aplay, arecord etc.)
#  "allow-empty-password" - allow users to have an empty password
#  "empty-root-password"  - the root user has no password set
#  "allow-root-login      - the root user can login
# There are other features that can be used here too, see
# meta/classes-recipe/image.bbclass and
# meta/classes-recipe/core-image.bbclass for more details.
# We default to allowing root login without a password for convenience.
EXTRA_IMAGE_FEATURES ?= "allow-empty-password empty-root-password allow-root-login"

#
# Additional image features
#
# The following is a list of additional classes to use when building images which
# enable extra features. Some available options which can be included in this variable
# are:
#   - 'buildstats' collect build statistics
USER_CLASSES ?= "buildstats"

#
# Runtime testing of images
#
# The build system can test booting virtual machine images under qemu (an emulator)
# after any root filesystems are created and run tests against those images. It can also
# run tests against any SDK that are built. To enable this uncomment these lines.
# See meta/classes-recipe/test{image,sdk}.bbclass for further details.
#IMAGE_CLASSES += "testimage testsdk"
#TESTIMAGE_AUTO:qemuall = "1"

#
# Interactive shell configuration
#
# Under certain circumstances the system may need input from you and to do this it
# can launch an interactive shell. It needs to do this since the build is
# multithreaded and needs to be able to handle the case where more than one parallel
# process may require the user's attention. The default is iterate over the available
# terminal types to find one that works.
#
# Examples of the occasions this may happen are when resolving patches which cannot
# be applied, to use the devshell or the kernel menuconfig
#
# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none
# Note: currently, Konsole support only works for KDE 3.x due to the way
# newer Konsole versions behave
#OE_TERMINAL = "auto"
# By default disable interactive patch resolution (tasks will just fail instead):
PATCHRESOLVE = "noop"

#
# Disk Space Monitoring during the build
#
# Monitor the disk space during the build. If there is less that 1GB of space or less
# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully
# shutdown the build. If there is less than 100MB or 1K inodes, perform a hard halt
# of the build. The reason for this is that running completely out of space can corrupt
# files and damages the build in ways which may not be easily recoverable.
# It's necessary to monitor /tmp, if there is no space left the build will fail
# with very exotic errors.
BB_DISKMON_DIRS ??= "\
    STOPTASKS,${TMPDIR},1G,100K \
    STOPTASKS,${DL_DIR},1G,100K \
    STOPTASKS,${SSTATE_DIR},1G,100K \
    STOPTASKS,/tmp,100M,100K \
    HALT,${TMPDIR},100M,1K \
    HALT,${DL_DIR},100M,1K \
    HALT,${SSTATE_DIR},100M,1K \
    HALT,/tmp,10M,1K"

#
# Shared-state files from other locations
#
# As mentioned above, shared state files are prebuilt cache data objects which can be
# used to accelerate build time. This variable can be used to configure the system
# to search other mirror locations for these objects before it builds the data itself.
#
# This can be a filesystem directory, or a remote url such as https or ftp. These
# would contain the sstate-cache results from previous builds (possibly from other
# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the
# cache locations to check for the shared objects.
# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH
# at the end as shown in the examples below. This will be substituted with the
# correct path within the directory structure.
#SSTATE_MIRRORS ?= "\
#file://.* https://someserver.tld/share/sstate/PATH;downloadfilename=PATH \
#file://.* file:///some/local/dir/sstate/PATH"

#
# Yocto Project SState Mirror
#
# The Yocto Project has prebuilt artefacts available for its releases, you can enable
# use of these by uncommenting some of the following lines. This will mean the build uses
# the network to check for artefacts at the start of builds, which does slow it down
# initially but it will then speed up the builds by not having to build things if they are
# present in the cache. It assumes you can download something faster than you can build it
# which will depend on your network.
# Note: For this to work you also need hash-equivalence passthrough to the matching server
# There is a choice between our sstate server directly and a faster content delivery network
# (CDN) kindly provided by JSDelivr, uncomment one of the SSTATE_MIRRORS lines, not both.
# Using the CDN rather than the yoctoproject.org address is suggested/preferred.
#
#BB_HASHSERVE_UPSTREAM = 'wss://hashserv.yoctoproject.org/ws'
#SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH"
#
###SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"


#
# Qemu configuration
#
# By default native qemu will build with a builtin VNC server where graphical output can be
# seen. The line below enables the SDL UI frontend too.
PACKAGECONFIG:append:pn-qemu-system-native = " sdl"
# By default libsdl2-native will be built, if you want to use your host's libSDL instead of 
# the minimal libsdl built by libsdl2-native then uncomment the ASSUME_PROVIDED line below.
#ASSUME_PROVIDED += "libsdl2-native"

# You can also enable the Gtk UI frontend, which takes somewhat longer to build, but adds
# a handy set of menus for controlling the emulator.
#PACKAGECONFIG:append:pn-qemu-system-native = " gtk+"

#
# Hash Equivalence
#
# Enable support for automatically running a local hash equivalence server and
# instruct bitbake to use a hash equivalence aware signature generator. Hash
# equivalence improves reuse of sstate by detecting when a given sstate
# artifact can be reused as equivalent, even if the current task hash doesn't
# match the one that generated the artifact.
#
# A shared hash equivalent server can be set with "<HOSTNAME>:<PORT>" format
#
#BB_HASHSERVE = "auto"
#BB_SIGNATURE_HANDLER = "OEEquivHash"

#
# Memory Resident Bitbake
#
# Bitbake's server component can stay in memory after the UI for the current command
# has completed. This means subsequent commands can run faster since there is no need
# for bitbake to reload cache files and so on. Number is in seconds, after which the
# server will shut down.
#
#BB_SERVER_TIMEOUT = "60"

# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
# track the version of this file when it was generated. This can safely be ignored if
# this doesn't mean anything to you.
CONF_VERSION = "2"
MACHINE = "qemuarm64"
DISTRO = "poky"
SDKMACHINE = "aarch64"
PACKAGE_CLASSES = "package_rpm package_deb package_ipk"
INHERIT += 'image-buildinfo'
IMAGE_BUILDINFO_VARS:append = ' IMAGE_BASENAME IMAGE_NAME'
QEMU_USE_KVM = 'True'
INHERIT += 'report-error'
PREMIRRORS = ''
BB_GENERATE_MIRROR_TARBALLS = '1'
BB_NUMBER_THREADS = '16'
BB_NUMBER_PARSE_THREADS = '16'
PARALLEL_MAKE = '-j 16 -l 75'
BB_PRESSURE_MAX_CPU = '20000'
BB_PRESSURE_MAX_IO = '20000'
XZ_MEMLIMIT = '5%'
XZ_THREADS = '8'
ZSTD_THREADS = '8'
BB_TASK_NICE_LEVEL = '5'
BB_TASK_NICE_LEVEL:task-testimage = '0'
BB_TASK_IONICE_LEVEL = '2.7'
BB_TASK_IONICE_LEVEL:task-testimage = '2.1'
IMAGE_CLASSES += 'testimage'
TEST_QEMUBOOT_TIMEOUT = '1500'
SANITY_TESTED_DISTROS = ''
SDK_EXT_TYPE = 'minimal'
SDK_INCLUDE_TOOLCHAIN = '1'
ESDK_LOCALCONF_REMOVE:append = 'BB_HASHSERVE'
BB_DISKMON_DIRS = 'STOPTASKS,${TMPDIR},1G,100K STOPTASKS,${DL_DIR},1G STOPTASKS,${SSTATE_DIR},1G STOPTASKS,/tmp,100M,30K HALT,${TMPDIR},100M,1K HALT,${DL_DIR},100M HALT,${SSTATE_DIR},100M HALT,/tmp,10M,1K'
BB_HEARTBEAT_EVENT = '60'
BB_LOG_HOST_STAT_ON_INTERVAL = '1'
BB_LOG_HOST_STAT_CMDS_INTERVAL = 'oe-time-dd-test.sh -c 100 -t 3'
BB_LOG_HOST_STAT_ON_FAILURE = '1'
BB_LOG_HOST_STAT_CMDS_FAILURE = 'oe-time-dd-test.sh -l'
BB_SERVER_TIMEOUT = '60'
BB_LOADFACTOR_MAX = '1.5'

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [OE-core] [PATCH 1/4] meta/lib/oe/sbom30.py: correct alias
  2024-12-20 16:09     ` [OE-core] " Mathieu Dubois-Briand
@ 2024-12-25  2:41       ` Hongxu Jia
  0 siblings, 0 replies; 8+ messages in thread
From: Hongxu Jia @ 2024-12-25  2:41 UTC (permalink / raw)
  To: Mathieu Dubois-Briand, hongxu.jia, openembedded-core

On 12/21/24 00:09, Mathieu Dubois-Briand wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>
> Hi Hongxu,
>
> I'm back on this issue. So yesterday I tried again to pick these
> patches, and got warnings again:
>
> https://valkyrie.yoctoproject.org/#/builders/29/builds/682
>
> If I relaunch the builds, sometimes they will success, sometimes I still
> get the warnings. Something seems to be intermittent here.
>
> I tried to reproduce locally, and again, I get the warnings in some
> intermittent way.
>
> My setup was:
> - Clean build directory, empty sstate cache.
> - The local.conf attached. This is mainly the configuration used for
>    https://valkyrie.yoctoproject.org/#/builders/8/builds/698, with some
>    minor changes (like disabling the shared sstate configuration).
> - Using meta, meta-poky and meta-yocto-bsp at this revision:
>    https://git.yoctoproject.org/poky-ci-archive/tag/?h=a-full-685
> - Used: bitbake core-image-sato core-image-sato-sdk core-image-minimal core-image-minimal-dev core-image-full-cmdline core-image-sato:do_populate_sdk
>
> Now here is how it went:
> - On my very first build, I got some SPDX warnings.
> - On my next build they were all gone.
> - I tried to tweak a bit my config, cleaned my cache again and still got
>    no warnings.
> - Then after some various modifications, I switched back again to my
>    very first configuration, and got again some SPDX warnings.
>
> So I'm sorry, I cannot give you some exact instructions to reproduce
> this issue, but still we have some intermittent warnings :(
Hi Mathieu,

Thanks for the information you provided, it helps me to reproduce two issues

1. While hosts with different archs (such as x86-64, aarch64) sharing
same sstate cache, build image from existed sstate cache reported
SPDX ID missing warnings. Here is steps:

On x86-64 host, build image core-image-minimal for qemuarm64
$ echo 'MACHINE = "qemuarm64"' >> conf/local.conf
$ bitbake core-image-sato

On aarch64 host, sharing above sstate cache and build image
core-image-minimal for qemuarm64
$ echo 'MACHINE = "qemuarm64"' >> conf/local.conf
$ bitbake core-image-sato

2. Sharing same sstate cache for different machines

$ echo 'MACHINE = "qemux86-64"' >> conf/local.conf
$ bitbake core-image-minimal

$ echo 'MACHINE = "qemuarm64"' >> conf/local.conf
$ bitbake core-image-minimal

The issue was caused by the following two patches,

[OE-core] [PATCH 2/4] meta/lib/oe/spdx30_tasks.py: fix hash link 
conflict while multiconfig enabled
[OE-core] [PATCH V2 3/4] gcc-cross.inc: add var-SSTATE_ARCHS_TUNEPKG to 
vardeps of do_create_spdx

I will resend review and drop them

//Hongxu



> --
> Mathieu Dubois-Briand, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>
>



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-12-25  2:41 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-17  3:47 [PATCH 1/4] meta/lib/oe/sbom30.py: correct alias Hongxu Jia
2024-12-17  3:47 ` [PATCH 2/4] meta/lib/oe/spdx30_tasks.py: fix hash link conflict while multiconfig enabled Hongxu Jia
2024-12-17  3:47 ` [PATCH V2 3/4] gcc-cross.inc: add var-SSTATE_ARCHS_TUNEPKG to vardeps of do_create_spdx Hongxu Jia
2024-12-17  3:47 ` [PATCH V3 4/4] meta/lib/oe/sbom30.py: fix alias in simplelicensing_customIdToUri not extracted Hongxu Jia
2024-12-17  7:37 ` [OE-core] [PATCH 1/4] meta/lib/oe/sbom30.py: correct alias Mathieu Dubois-Briand
2024-12-17 12:49   ` hongxu
2024-12-20 16:09     ` [OE-core] " Mathieu Dubois-Briand
2024-12-25  2:41       ` Hongxu Jia

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox