Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Paul Barker <paul@pbarker.dev>
To: JPEWhacker@gmail.com, openembedded-core@lists.openembedded.org
Subject: Re: [OE-core][PATCH v2 00/25] Rework LICENSE to be SPDX License Expressions
Date: Wed, 15 Jul 2026 18:11:07 +0100	[thread overview]
Message-ID: <b6095f7ae705b87895634e1d8143e2ca399e0618.camel@pbarker.dev> (raw)
In-Reply-To: <20260715164739.364323-1-JPEWhacker@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 4239 bytes --]

On Wed, 2026-07-15 at 10:44 -0600, Joshua Watt via
lists.openembedded.org wrote:
> Reworks the way that the LICENSE variable is used so that it uses valid
> SPDX License Expressions instead of the custom expressions that were
> used previously (which are based on Python syntax). This includes
> support for the SPDX "WITH" operator which allows a license exception to
> be attached to a license identifier.
> 
> The old licenses expressions are still allowed, and will still be
> correctly parsed, however a warning will be issued that indicates the
> new license string that should be used.
> 
> Most layers should be able to use the newly-revised
> scripts/contrib/convert-spdx-licenses.py script to do the majority of
> the conversion work, although some manual work may still be required if
> conditional or complex LICENSE expressions are encountered.
> 
> SPDX License Expressions require that all licenses listed are either a
> known identifier (e.g. "GPL-2.0-or-later") or start with the prefix
> "LicenseRef-" which indicates a custom license. When converting from old
> expressions to new one this will need to be followed (the suggested new
> license in the warning and the conversion script will automatically add
> this prefix for any unrecognized license identifiers). This will most
> commonly be the case for NO_GENERIC_LICENSE files; for a good example of
> what needs to be done here see the changes to the linux-firmware recipe.
> When adding new LicenseRef- licenses to a recipe, the actual license
> name should be prefixed with the name of the recipe (e.g.
> "LicenseRef-myrecipe-mylicense") to prevent conflicts when merging
> multiple license documents together (e.g. in an image).
> 
> SPDX also introduces the "WITH" operator to add an exception to a
> license instead of using a bespoke identifier to combine the two, as was
> done with the legacy license expressions. Because of this, the logic for
> dealing with the INCOMPATIBLE_LICENSE family of variables has changed
> slightly. The main difference is that INCOMPATIBLE_LICENSE will now
> match the LHS of a "WITH" expression (where as previously this was
> "ignored" since it was a bespoke license ID). In order to allow a
> license that would normally be rejected, but can be allowed with an
> exception, specifically allowed exceptions can be added to the
> INCOMPATIBLE_LICENSE_EXCEPTIONS variable (keep in mind, EXCEPTIONS here
> means "exceptions to INCOMPATIBLE_LICENSES", not specifically SPDX
> License Exceptions). If an SPDX exception is present here, any license
> that has that exception will be allowed, even if it would normally match
> INCOMPATIBLE_LICENSE. For example, to disallow all GPLv3 except for
> those with the GCC exception, use:
> 
>     INCOMPATIBLE_LICENSE = "GPL-3.0* LGPL-3.0*"
>     INCOMPATIBLE_LICENSE_EXCEPTIONS = "GCC-exception-3.1" # This new line is required
> 
> 
> Additionally, "PD" ("Public Domain") is not allowed as a generic license
> identifier. Aside from "PD" not being a valid SPDX License Identifier,
> most "Public Domain" licenses do have some sort of text associated with
> them (see the HPND family of SPDX Licenses, or use the (SPDX License
> Match Website)[1] ). In addition, the meaning of "Public Domain" can vary
> by jurisdiction, so the actual text with a LicenseRef- or a SPDX License
> Identifier needs to be used instead.
> 
> Finally, "CLOSED" is also no longer allowed as a license expression
> (since it is not a valid SPDX License Identifier). Instead use a
> LicenseRef- to point to a file that contains the actual license text
> (usually something like "Copyright <name>, all rights reserved")

Hi Joshua,

I've had a skim through but not reviewed in detail, this looks good in
general.

I'm concerned about removing support for "CLOSED" as a license
expression though, that has been used extensively on downstream projects
I've worked on over the years. It's helpful to be able to bypass license
checking where it may not be needed.

After applying this series there is still handling for "CLOSED" in
several places such as populate_lic_qa_checksum() in insane.bbclass.

Best regards,

-- 
Paul Barker


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 252 bytes --]

  parent reply	other threads:[~2026-07-15 17:11 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-14 18:31 [OE-core][PATCH 00/22] Rework LICENSE to be SPDX License Expressions Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 01/22] scripts/pull-spdx-licenses.py: Add exceptions Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 02/22] Add SPDX License Exceptions Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 03/22] Add SPDX license library Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 04/22] Parse LICENSE as SPDX Expression Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 05/22] linux-firmware: Convert to SPDX license strings Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 06/22] meta-selftest: Add NO_GENERIC_LICENSE Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 07/22] convert-spdx-licenses: Convert to valid SPDX expressions Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 08/22] gcc-common.inc: Remove LICENSE Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 09/22] gcc: Update license Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 10/22] xz: Replace deprecated SPDX identifier Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 11/22] autoconf-archive: " Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 12/22] gnu-config: " Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 13/22] libglvnd: " Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 14/22] flac: " Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 15/22] libgit2: " Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 16/22] Fix up licenses Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 17/22] lib: oe: license: Rework package licenses matching Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 18/22] classes/go-mod-update-modules: Switch to SPDX license Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 19/22] license: Remove tidy_licenses() Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 20/22] meta-selftest: Change license on test recipes Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 21/22] Convert licenses to SPDX expressions Joshua Watt
2026-07-14 18:31 ` [OE-core][PATCH 22/22] meta-selftest: libxpm: Fix license Joshua Watt
2026-07-15 13:58 ` [OE-core][PATCH 00/22] Rework LICENSE to be SPDX License Expressions Mathieu Dubois-Briand
2026-07-15 16:44 ` [OE-core][PATCH v2 00/25] " Joshua Watt
2026-07-15 16:44   ` [OE-core][PATCH v2 01/25] scripts/pull-spdx-licenses.py: Add exceptions Joshua Watt
2026-07-15 16:44   ` [OE-core][PATCH v2 02/25] Add SPDX License Exceptions Joshua Watt
2026-07-15 16:44   ` [OE-core][PATCH v2 03/25] Add SPDX license library Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 04/25] Parse LICENSE as SPDX Expression Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 05/25] linux-firmware: Convert to SPDX license strings Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 06/25] meta-selftest: Add NO_GENERIC_LICENSE Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 07/25] convert-spdx-licenses: Convert to valid SPDX expressions Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 08/25] gcc-common.inc: Remove LICENSE Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 09/25] gcc: Update license Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 10/25] xz: Replace deprecated SPDX identifier Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 11/25] autoconf-archive: " Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 12/25] gnu-config: " Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 13/25] libglvnd: " Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 14/25] flac: " Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 15/25] libgit2: " Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 16/25] Fix up licenses Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 17/25] lib: oe: license: Rework package licenses matching Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 18/25] classes/go-mod-update-modules: Switch to SPDX license Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 19/25] license: Remove tidy_licenses() Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 20/25] meta-selftest: Change license on test recipes Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 21/25] Convert licenses to SPDX expressions Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 22/25] meta-selftest: libxpm: Fix license Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 23/25] lib: oe: sbom30: Handle None in Relationship Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 24/25] oeqa: selftest: bbtest: Fix license exception Joshua Watt
2026-07-15 16:45   ` [OE-core][PATCH v2 25/25] scripts/contrib: Add reuse-get-license.py Joshua Watt
2026-07-15 17:11   ` Paul Barker [this message]
2026-07-15 17:56     ` [OE-core][PATCH v2 00/25] Rework LICENSE to be SPDX License Expressions Joshua Watt
2026-07-15 18:51       ` Joshua Watt

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=b6095f7ae705b87895634e1d8143e2ca399e0618.camel@pbarker.dev \
    --to=paul@pbarker.dev \
    --cc=JPEWhacker@gmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    /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