do_create_spdx[dirs] = "${SPDXWORK}"
do_create_spdx[cleandirs] = "${SPDXDEPLOY} ${SPDXWORK}"
-do_create_spdx[depends] += "${PATCHDEPENDENCY}"
+do_create_spdx[depends] += " \
+ ${PATCHDEPENDENCY} \
+ ${@create_spdx_source_deps(d)} \
+"
python do_create_runtime_spdx() {
from datetime import datetime, timezone
do_collect_spdx_deps \
do_deploy_source_date_epoch \
do_populate_sysroot do_package do_packagedata \
- ${create_spdx_source_deps(d)} \
before do_populate_sdk do_populate_sdk_ext do_build do_rm_work
-def create_spdx_source_deps(d):
- deps = []
- if d.getVar("SPDX_INCLUDE_SOURCES") == "1":
- deps.extend([
- # do_unpack is a hack for now; we only need it to get the
- # dependencies do_unpack already has so we can extract the source
- # ourselves
- "do_unpack",
- # For kernel source code
- "do_shared_workdir",
- ])
- return " ".join(deps)
-
SSTATETASKS += "do_create_spdx"
do_create_spdx[sstate-inputdirs] = "${SPDXDEPLOY}"
do_create_spdx[sstate-outputdirs] = "${DEPLOY_DIR_SPDX}"
do_create_spdx[dirs] = "${SPDXWORK}"
do_create_spdx[cleandirs] = "${SPDXDEPLOY} ${SPDXWORK}"
-do_create_spdx[depends] += "${PATCHDEPENDENCY}"
+do_create_spdx[depends] += " \
+ ${PATCHDEPENDENCY} \
+ ${@create_spdx_source_deps(d)} \
+"
python do_create_package_spdx() {
import oe.spdx30_tasks
SPDX_MULTILIB_SSTATE_ARCHS ??= "${SSTATE_ARCHS}"
+def create_spdx_source_deps(d):
+ import oe.spdx_common
+
+ deps = []
+ if d.getVar("SPDX_INCLUDE_SOURCES") == "1":
+ pn = d.getVar('PN')
+ # do_unpack is a hack for now; we only need it to get the
+ # dependencies do_unpack already has so we can extract the source
+ # ourselves
+ if oe.spdx_common.has_task(d, "do_unpack"):
+ deps.append("%s:do_unpack" % pn)
+
+ if oe.spdx_common.is_work_shared_spdx(d) and \
+ oe.spdx_common.process_sources(d):
+ # For kernel source code
+ if oe.spdx_common.has_task(d, "do_shared_workdir"):
+ deps.append("%s:do_shared_workdir" % pn)
+
+ return " ".join(deps)
+
+
python do_collect_spdx_deps() {
# This task calculates the build time dependencies of the recipe, and is
# required because while a task can deptask on itself, those dependencies
d.setVar("WORKDIR", workdir)
+def has_task(d, task):
+ return bool(d.getVarFlag(task, "task", False)) and not bool(d.getVarFlag(task, "noexec", False))
+
+
def fetch_data_to_uri(fd, name):
"""
Translates a bitbake FetchData to a string URI