From: Joshua Watt <jpewhacker@gmail.com>
To: docs@lists.yoctoproject.org
Cc: Joshua Watt <JPEWhacker@gmail.com>
Subject: [docs][PATCH] migration-guide: Add guide for converting licenses
Date: Tue, 21 Jul 2026 15:47:07 -0600 [thread overview]
Message-ID: <20260721214707.2129954-1-JPEWhacker@gmail.com> (raw)
The LICENSE variable is now required to be SPDX license expressions, so
provide a migration guide to describe the changes required to integrate
this change
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
---
.../migration-guides/migration-6.1.rst | 58 +++++++++++++++++++
1 file changed, 58 insertions(+)
diff --git a/documentation/migration-guides/migration-6.1.rst b/documentation/migration-guides/migration-6.1.rst
index 8786cd699..48777e16c 100644
--- a/documentation/migration-guides/migration-6.1.rst
+++ b/documentation/migration-guides/migration-6.1.rst
@@ -75,6 +75,61 @@ And::
oe.utils.any_distro_features("x y", ...) -> bb.utils.contains_any("DISTRO_FEATURES", "x y", ...)
+``LICENSE`` is now a SPDX License Expression
+--------------------------------------------
+
+The ``LICENSE`` variable is now an `SPDX License Expression`_ instead of the
+custom license expressions that have been used historically.
+
+The changes required for the new expressions are as follows:
+1. The ``&`` operator is replaced with ``AND``
+
+2. The ``|`` operator is replaced with ``OR``
+
+3. Any license value which is not a valid `SPDX License Expression`_ is an
+ error.
+
+4. Custom (non `SPDX License Identifier`_) licenses are still allowed, as long
+ as they are prefixed with ``LicenseRef-``. The behavior of looking for the
+ license text in ``LICENSE_PATH`` (with or without the ``LicenseRef-``
+ prefix) or ``NO_GENERIC_LICENSE`` is unchanged, and may still be used.
+
+5. ``CLOSED`` as a license is deprecated and will issue a warning. This license
+ is effectively "no license" (usually meaning e.g. "All rights reserved"),
+ but a more precise definition is to provide some sort of actual license text
+ using a custom license. This provides a more consistent definition of the
+ license text, since the meaning of "no license" may vary by jurisdiction.
+ Keep in mind that you can still have a common license file in
+ ``LICENSE_PATH`` and refer to it with a ``LicenseRef-`` license. Note that
+ when you this, you will also need to provide a ``LIC_FILE_CHKSUM`` value to
+ point to your license file.
+
+6. The ``WITH`` operator should now be used to describe an exception to a
+ license, instead of a bespoke license identifier. For example, the old
+ bespoke license ``Apache-2.0-with-LLVM-exception`` would become
+ ``Apache-2.0 WITH LLVM-exception``.
+
+7. Because of the change to use ``WITH`` instead of bespoke licenses, there is
+ a change in how ``INCOMPATIBLE_LICENSE`` works. Anything listed in this
+ variable will match a single licenses (unchanged), but it will also match the
+ left-hand (license) side of a ``WITH`` expression. To allow a license with a
+ specific SPDX license exception, the SPDX license exception must be listed in
+ ``INCOMPATIBLE_LICENSE_EXCEPTIONS``.
+
+ Practically speaking, the place where this comes up the most is when
+ attempting to exclude GPLv3 code using ``INCOMPATIBLE_LICENSE``. Previously,
+ this would have allowed any ``GPLv3-with-exception`` license, since they
+ were bespoke licenses that did not match the ``GPL-3.0* LGPL-3.0*``
+ expansion. Now, however, the licenses will match because they are e.g.
+ ``GPL-3.0-or-later WITH exception``. As such, any exceptions to the GPLv3
+ that should be allowed must be listed in
+ ``INCOMPATIBLE_LICENSE_EXCEPTIONS``.
+
+Currently, the older syntax for license expressions is still parsed and
+automatically converted to an SPDX License Expression, but a warning is issued
+when this occurs. This support will eventually be removed and the only valid
+values for these variables will be SPDX License Expressions.
+
Removed recipes
---------------
@@ -93,3 +148,6 @@ Removed classes
Miscellaneous changes
---------------------
+
+.. _SPDX License Expression: https://spdx.github.io/spdx-spec/v3.0.1/annexes/spdx-license-expressions/
+.. _SPDX License Identifier: https://spdx.org/licenses/
--
2.54.0
next reply other threads:[~2026-07-21 21:47 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-21 21:47 Joshua Watt [this message]
2026-07-22 4:47 ` [docs][PATCH] migration-guide: Add guide for converting licenses Ulrich Ölmann
2026-07-22 7:27 ` Antonin Godard
2026-07-22 14:48 ` [docs][PATCH v2] " 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=20260721214707.2129954-1-JPEWhacker@gmail.com \
--to=jpewhacker@gmail.com \
--cc=docs@lists.yoctoproject.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 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.