All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.