From: Stefano Tondo <stondo@gmail.com>
To: Alexander Kanavin <alex.kanavin@gmail.com>
Cc: openembedded-core@lists.openembedded.org,
bitbake-devel@lists.openembedded.org,
Joshua Watt <JPEWhacker@gmail.com>,
Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>,
Peter Marko <peter.marko@siemens.com>,
Adrian Freihofer <adrian.freihofer@siemens.com>,
Patrick Wicki <patrick.wicki@siemens.com>,
stefano.tondo.ext@siemens.com
Subject: Re: [RFC] spdx30: name, version and purl for dependency downloads
Date: Thu, 5 Nov 2026 22:05:54 +0100 [thread overview]
Message-ID: <20261105210554.1648512-1-stondo@gmail.com> (raw)
In-Reply-To: <CANNYZj9=G4+jmRx7UJMYbsp2xwDxwSmm+Gv2HxcPJtOen_9LUA@mail.gmail.com>
On Thu, 5 Nov 2026 at 21:26, Alexander Kanavin <alex.kanavin@gmail.com> wrote:
> I'm afraid I am missing context, which is hardly surprising because I
> did no spdx work until now. What are the language dependencies? Does
> something require or recommend them? Is there a normative document
> that defines them? The email talks about how the implementation
> works, but says nothing about what the problem is.
Hi Alex,
You are right: I jumped straight into the how and never explained
the why. Let me start from the problem.
Take crucible from meta-oe. It is a Go program, and besides its own
code it compiles in 36 Go modules fetched with gomod://, one of them
golang.org/x/net v0.39.0. Now imagine the next advisory for
golang.org/x/net comes out, and whoever ships a device with crucible
on it is asked: "Is your product affected?"
The SPDX that Yocto writes for the image should answer that, but it
can't. The module is in there, but only as a downloaded file named
"golang.org.x.net@v0.39.0.zip" with the location
gomod://golang.org/x/net: no version field and no package URL, so
no scanner recognises it. cve-check does not see it either, because
it only knows the CPEs of recipes. The answer ends up being someone
reading file names by hand, for every advisory and every image.
That is what I meant by language dependencies: the packages of a
language's own package manager that a recipe compiles in without
having a recipe of their own. Rust crates (crate://), Go modules
(gomod://) and npm packages (npmsw://) are the cases Yocto can fetch
today. For the first two the problem is the one above: present, but
not identifiable. Git submodules and the dependencies listed in an
npm shrinkwrap file are worse off: they are not recorded at all.
Why this matters now, with the documents that ask for it:
- The EU Cyber Resilience Act (Regulation (EU) 2024/2847), Annex I,
Part II, point 1, requires manufacturers to identify and document
the components of their products, including by drawing up an SBOM
in a commonly used, machine-readable format covering at the very
least the top-level dependencies. It applies from December 2027 to
products sold in the EU, so many Yocto users will have to deliver
one.
- BSI TR-03183-2, the German technical guideline that spells out
what such an SBOM contains, asks for the dependencies of everything
that is delivered (section 5.1), each with a name, a version and an
identifier such as a purl or CPE (section 5.2).
- The "2026 Minimum Elements for a Software Bill of Materials",
published in July by CISA together with BSI, ANSSI and other
agencies, asks for transitive dependencies and an identifier per
component, and gives the example above as its reason: a recipient
should be able to conclude that a new vulnerability does not affect
them when the SBOM does not list the component.
Yocto already knows all of this at fetch time; the RFC is only about
writing it into the SPDX it already produces, without changing how
anything is fetched. I hope that makes the context clearer, and I am
happy to go into more detail on any of it.
Thanks,
Stefano
next prev parent reply other threads:[~2026-11-05 21:06 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-05 12:21 [RFC] spdx30: name, version and purl for dependency downloads Stefano Tondo
2026-11-05 20:26 ` Alexander Kanavin
2026-11-05 21:05 ` Stefano Tondo [this message]
2026-11-06 12:04 ` Alexander Kanavin
2026-11-06 12:17 ` [OE-core] " Richard Purdie
2026-11-10 21:59 ` Stefano Tondo
2026-11-10 22:53 ` Joshua Watt
2026-11-11 11:58 ` Stefano Tondo
2026-11-11 15:54 ` Joshua Watt
2026-11-11 15:48 ` Alexander Kanavin
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=20261105210554.1648512-1-stondo@gmail.com \
--to=stondo@gmail.com \
--cc=JPEWhacker@gmail.com \
--cc=adrian.freihofer@siemens.com \
--cc=alex.kanavin@gmail.com \
--cc=bitbake-devel@lists.openembedded.org \
--cc=openembedded-core@lists.openembedded.org \
--cc=patrick.wicki@siemens.com \
--cc=peter.marko@siemens.com \
--cc=stefan.herbrechtsmeier@weidmueller.com \
--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