From: Yogesh Tyagi <[email protected]>

When switching between linux-intel and linux-intel-rt kernels using
PREFERRED_PROVIDER_virtual/kernel, SPDX tasks were not automatically
invalidating their cache. This caused warnings about packagegroup-core-boot
referencing the wrong kernel PN in SPDX documents.

The issue occurs because do_create_package_spdx and do_create_spdx tasks
don't include PREFERRED_PROVIDER_virtual/kernel in their vardeps, so
changes to the kernel provider don't trigger rebuilds of SPDX documents
for packages that depend on virtual/kernel.

Solution:
1. Created kernel-intel-spdx.bbclass with smart detection that adds
   PREFERRED_PROVIDER_virtual/kernel to SPDX task vardeps when a recipe
   depends on virtual/kernel or inherits kernel class.

2. Created packagegroup-intel-spdx.bbclass that adds the same vardeps
   for packagegroup recipes (which commonly depend on virtual/kernel).

3. Applied the fix to linux-intel.inc (all intel kernels) and
   packagegroup-core-boot via bbappend.

This ensures SPDX documents are automatically regenerated when switching
kernel providers, eliminating the need for manual cleansstate operations.

Signed-off-by: Yogesh Tyagi <[email protected]>
---
 classes/kernel-intel-spdx.bbclass              | 18 ++++++++++++++++++
 classes/packagegroup-intel-spdx.bbclass        |  8 ++++++++
 .../packagegroup-core-boot.bbappend            |  2 ++
 recipes-kernel/linux/linux-intel.inc           |  2 ++
 4 files changed, 30 insertions(+)
 create mode 100644 classes/kernel-intel-spdx.bbclass
 create mode 100644 classes/packagegroup-intel-spdx.bbclass
 create mode 100644 recipes-core/packagegroups/packagegroup-core-boot.bbappend

diff --git a/classes/kernel-intel-spdx.bbclass 
b/classes/kernel-intel-spdx.bbclass
new file mode 100644
index 00000000..c8b49bb6
--- /dev/null
+++ b/classes/kernel-intel-spdx.bbclass
@@ -0,0 +1,18 @@
+# Fix SPDX cache invalidation when switching between linux-intel and 
linux-intel-rt
+#
+# When PREFERRED_PROVIDER_virtual/kernel changes (e.g., linux-intel -> 
linux-intel-rt),
+# SPDX package data needs to be regenerated for any recipe that has runtime 
dependencies
+# on virtual/kernel because the SPDX references get hardcoded to the specific 
kernel package name.
+#
+# This affects packagegroups like packagegroup-core-boot that RDEPENDS on 
virtual/kernel.
+
+# Add PREFERRED_PROVIDER_virtual/kernel to vardeps of SPDX tasks globally
+# This ensures any recipe with kernel dependencies will rebuild SPDX when 
kernel provider changes
+python () {
+    # Check if this recipe or its runtime dependencies include virtual/kernel
+    rdepends = d.getVar('RDEPENDS') or ''
+    if 'virtual/kernel' in rdepends or bb.data.inherits_class('kernel', d):
+        d.appendVarFlag('do_create_package_spdx', 'vardeps', ' 
PREFERRED_PROVIDER_virtual/kernel')
+        d.appendVarFlag('do_create_spdx', 'vardeps', ' 
PREFERRED_PROVIDER_virtual/kernel')
+}
+
diff --git a/classes/packagegroup-intel-spdx.bbclass 
b/classes/packagegroup-intel-spdx.bbclass
new file mode 100644
index 00000000..89410987
--- /dev/null
+++ b/classes/packagegroup-intel-spdx.bbclass
@@ -0,0 +1,8 @@
+# Ensure packagegroups rebuild SPDX when kernel provider changes
+#
+# Packagegroups with virtual/kernel dependencies need to regenerate SPDX data
+# when PREFERRED_PROVIDER_virtual/kernel changes because SPDX IDs are hardcoded
+# to the actual kernel package name (linux-intel vs linux-intel-rt)
+
+do_create_package_spdx[vardeps] += "PREFERRED_PROVIDER_virtual/kernel"
+do_create_spdx[vardeps] += "PREFERRED_PROVIDER_virtual/kernel"
diff --git a/recipes-core/packagegroups/packagegroup-core-boot.bbappend 
b/recipes-core/packagegroups/packagegroup-core-boot.bbappend
new file mode 100644
index 00000000..a93df7c3
--- /dev/null
+++ b/recipes-core/packagegroups/packagegroup-core-boot.bbappend
@@ -0,0 +1,2 @@
+# Inherit SPDX fix for kernel provider switching
+inherit packagegroup-intel-spdx
diff --git a/recipes-kernel/linux/linux-intel.inc 
b/recipes-kernel/linux/linux-intel.inc
index c698ae28..11749fe3 100644
--- a/recipes-kernel/linux/linux-intel.inc
+++ b/recipes-kernel/linux/linux-intel.inc
@@ -1,6 +1,8 @@
 require recipes-kernel/linux/linux-yocto.inc
 require recipes-kernel/linux/meta-intel-compat-kernel.inc
 
+inherit kernel-intel-spdx
+
 FILESEXTRAPATHS:prepend := "${THISDIR}/linux-intel:"
 
 KERNEL_CONFIG_URI ?= 
"git://git.yoctoproject.org/yocto-kernel-cache;protocol=https;type=kmeta;name=meta;branch=${KMETA_BRANCH};destsuffix=${KMETA}"
-- 
2.43.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#8705): 
https://lists.yoctoproject.org/g/meta-intel/message/8705
Mute This Topic: https://lists.yoctoproject.org/mt/117592185/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/meta-intel/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to