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]] -=-=-=-=-=-=-=-=-=-=-=-
