From: Stefano Tondo <stondo@gmail.com>
To: openembedded-core@lists.openembedded.org
Cc: stefano.tondo.ext@siemens.com, adrian.freihofer@siemens.com,
Peter.Marko@siemens.com, jpewhacker@gmail.com,
Ross.Burton@arm.com
Subject: [PATCH v2 2/2] oeqa/selftest: Add test for lifecycle scope classification
Date: Sat, 21 Feb 2026 05:53:37 +0100 [thread overview]
Message-ID: <20260221045337.327402-3-stondo@gmail.com> (raw)
In-Reply-To: <20260221045337.327402-1-stondo@gmail.com>
From: Stefano Tondo <stefano.tondo.ext@siemens.com>
Add a selftest that verifies lifecycle scope classification correctly
assigns runtime scope to dependency relationships. The test builds
'acl' and checks that its SPDX package data contains
LifecycleScopedRelationship objects with runtime scope, verifying
that implicit shared library dependencies (e.g., glibc) are captured.
Signed-off-by: Stefano Tondo <stefano.tondo.ext@siemens.com>
---
meta/lib/oeqa/selftest/cases/spdx.py | 39 ++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/meta/lib/oeqa/selftest/cases/spdx.py b/meta/lib/oeqa/selftest/cases/spdx.py
index 9a0ef526d2..a01d8d567f 100644
--- a/meta/lib/oeqa/selftest/cases/spdx.py
+++ b/meta/lib/oeqa/selftest/cases/spdx.py
@@ -489,3 +489,42 @@ class SPDX30Check(SPDX3CheckBase, OESelftestTestCase):
r'\d',
f"Version '{version}' for package '{name}' should contain digits"
)
+
+ def test_lifecycle_scope_dependencies(self):
+ """Test that lifecycle scope classification assigns runtime scope."""
+ objset = self.check_recipe_spdx(
+ "acl",
+ "{DEPLOY_DIR_SPDX}/{SSTATE_PKGARCH}/packages/package-acl.spdx.json",
+ )
+
+ # Find runtime-scoped dependency relationships
+ runtime_rels = []
+ for rel in objset.foreach_type(oe.spdx30.LifecycleScopedRelationship):
+ if (rel.relationshipType == oe.spdx30.RelationshipType.dependsOn and
+ rel.scope == oe.spdx30.LifecycleScopeType.runtime):
+ runtime_rels.append(rel)
+
+ self.assertGreater(
+ len(runtime_rels), 0,
+ "Expected runtime-scoped dependency relationships for acl"
+ )
+
+ # Verify dependencies reference other packages via link IDs
+ all_dep_ids = []
+ for rel in runtime_rels:
+ for to_elem in rel.to:
+ dep_id = to_elem._id if hasattr(to_elem, '_id') else str(to_elem)
+ all_dep_ids.append(dep_id)
+
+ self.assertGreater(
+ len(all_dep_ids), 0,
+ "Runtime dependency relationships should reference target packages"
+ )
+
+ # Verify implicit glibc dependency is captured (auto-detected
+ # shared library dependency)
+ has_glibc = any('glibc' in dep_id for dep_id in all_dep_ids)
+ self.assertTrue(
+ has_glibc,
+ f"Expected glibc in runtime dependencies. Found IDs: {all_dep_ids}"
+ )
--
2.53.0
prev parent reply other threads:[~2026-02-21 4:53 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-21 4:53 [PATCH v2 0/2] spdx30: Lifecycle scope variable declarations and test Stefano Tondo
2026-02-21 4:53 ` [PATCH v2 1/2] spdx-common: Declare SPDX_FORCE_*_SCOPE override variables Stefano Tondo
2026-02-21 4:53 ` Stefano Tondo [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260221045337.327402-3-stondo@gmail.com \
--to=stondo@gmail.com \
--cc=Peter.Marko@siemens.com \
--cc=Ross.Burton@arm.com \
--cc=adrian.freihofer@siemens.com \
--cc=jpewhacker@gmail.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=stefano.tondo.ext@siemens.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox