lib: Fix dependencies on SPDX code

The SPDX library code was being ignored from taskhash calculations due
to accidentally being omitted from BBIMPORTS. This meant that changes in
the code or dependent variables would not cause the task to rebuild
correctly.

In order to add spdx_common, convert the `Dep` object from a named tuple
to a frozen dataclass. These function more or less equivalently, but the
bitbake code parser cannot handle named tuples.

Finally, the vardepsexclude that used to be present on the recipe tasks
needs to be moved to the python code in order for the variables to be
correctly ignored. Several unused exclusions were removed

(From OE-Core rev: eb597bf61cbcb0a4d43149404c93eec0894fb4c7)

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Joshua Watt
2025-03-11 08:03:02 -06:00
committed by Richard Purdie
parent 0606ae583e
commit 143103a1c4
3 changed files with 8 additions and 5 deletions

View File

@@ -134,7 +134,6 @@ python do_create_spdx() {
import oe.spdx30_tasks
oe.spdx30_tasks.create_spdx(d)
}
do_create_spdx[vardepsexclude] += "BB_NUMBER_THREADS SPDX_BUILD_HOST"
do_create_spdx[vardeps] += "\
SPDX_INCLUDE_BITBAKE_PARENT_BUILD \
SPDX_PACKAGE_ADDITIONAL_PURPOSE \
@@ -170,7 +169,7 @@ python do_create_package_spdx() {
import oe.spdx30_tasks
oe.spdx30_tasks.create_package_spdx(d)
}
do_create_package_spdx[vardepsexclude] += "OVERRIDES SPDX_MULTILIB_SSTATE_ARCHS"
oe.spdx30_tasks.create_package_spdx[vardepsexclude] = "OVERRIDES"
addtask do_create_package_spdx after do_create_spdx before do_build do_rm_work
SSTATETASKS += "do_create_package_spdx"

View File

@@ -11,4 +11,4 @@ __path__ = extend_path(__path__, __name__)
# processed correctly (e.g. qa)
BBIMPORTS = ["qa", "data", "path", "utils", "types", "package", "packagedata", \
"packagegroup", "sstatesig", "lsb", "cachedpath", "license", \
"reproducible", "rust", "buildcfg", "go"]
"reproducible", "rust", "buildcfg", "go", "spdx30_tasks", "spdx_common"]

View File

@@ -12,7 +12,7 @@ import re
import shutil
from pathlib import Path
from dataclasses import dataclass
LIC_REGEX = re.compile(
rb"^\W*SPDX-License-Identifier:\s*([ \w\d.()+-]+?)(?:\s+\W*)?$",
@@ -77,7 +77,11 @@ def process_sources(d):
return True
Dep = collections.namedtuple("Dep", ["pn", "hashfn", "in_taskhash"])
@dataclass(frozen=True)
class Dep(object):
pn: str
hashfn: str
in_taskhash: bool
def collect_direct_deps(d, dep_task):