Re: [docs][PATCH] migration-guide: Add guide for converting licenses

Ulrich Ölmann <[email protected]> Wed, 22 Jul 2026 06:47:29 +0200
Newsgroups org.yoctoproject.lists.docs
Message-ID <[email protected]>
Hi Joshua,

just a few typos I came across.

On Tue, Jul 21 2026 at 15:47 -0600, "Joshua Watt via lists.yoctoproject.org=
" <[email protected]> wrote:
> 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 <[email protected]>
> ---
>  .../migration-guides/migration-6.1.rst        | 58 +++++++++++++++++++
>  1 file changed, 58 insertions(+)
>
> diff --git a/documentation/migration-guides/migration-6.1.rst b/documenta=
tion/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::
>=20=20
>     oe.utils.any_distro_features("x y", ...) -> bb.utils.contains_any("DI=
STRO_FEATURES", "x y", ...)
>=20=20
> +``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:

I'm unsure, should there be an empty line here before the enumerated
list in RST?

> +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, a=
s long
> +   as they are prefixed with ``LicenseRef-``. The behavior of looking fo=
r 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 reserve=
d"),
> +   but a more precise definition is to provide some sort of actual licen=
se text
> +   using a custom license. This provides a more consistent definition of=
 the
> +   license text, since the meaning of "no license" may vary by jurisdict=
ion.
> +   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`` va=
lue to

s/when you this/when you do this/

> +   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, th=
ere is
> +   a change in how ``INCOMPATIBLE_LICENSE`` works. Anything listed in th=
is
> +   variable will match a single licenses (unchanged), but it will also m=
atch the

s/will match a single licenses/will match a single license/

Best regards,
Ulrich


> +   left-hand (license) side of a ``WITH`` expression. To allow a license=
 with a
> +   specific SPDX license exception, the SPDX license exception must be l=
isted in
> +   ``INCOMPATIBLE_LICENSE_EXCEPTIONS``.
> +
> +   Practically speaking, the place where this comes up the most is when
> +   attempting to exclude GPLv3 code using ``INCOMPATIBLE_LICENSE``. Prev=
iously,
> +   this would have allowed any ``GPLv3-with-exception`` license, since t=
hey
> +   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 G=
PLv3
> +   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 v=
alid
> +values for these variables will be SPDX License Expressions.
> +
>  Removed recipes
>  ---------------
>=20=20
> @@ -93,3 +148,6 @@ Removed classes
>=20=20
>  Miscellaneous changes
>  ---------------------
> +
> +.. _SPDX License Expression: https://spdx.github.io/spdx-spec/v3.0.1/ann=
exes/spdx-license-expressions/
> +.. _SPDX License Identifier: https://spdx.org/licenses/
--=20
Pengutronix e.K.                           | Ulrich =C3=96lmann            =
   |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |