Upgrading to Yocto Langdale

The Yocto 4.1 release (fall 2022), also codenamed “Langdale” introduces a couple of changes.

The following errors and fixes have appeared while attempting to update a meta-layer to the current release.



Errors


Incorrect LAYERSERIES_COMPAT

Error message:

ERROR: Layer meta-amateurradio is not compatible with the core layer which only supports these series: langdale (layer is compatible with kirkstone)

Explanation: Each layer must declare the list of releases it is compatible with, to safeguard against mismatched configurations. See the upstream documentation about LAYERSERIES_COMPAT. Because we’re working with new Yocto versions, we’ll have to manually change the list of the compatible releases of the layer, inside the layer.conf file.

Fix:

vim poky/meta-amateurradio/conf/layer.conf
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -12,7 +12,7 @@ BBFILE_PRIORITY_meta-amateurradio = "6"
 LAYERDEPENDS_meta-amateurradio = "core"
 LAYERDEPENDS_meta-amateurradio += "openembedded-layer"
 
-LAYERSERIES_COMPAT_meta-amateurradio = "kirkstone"
+LAYERSERIES_COMPAT_meta-amateurradio = "kirkstone langdale"
 
 BBFILES_DYNAMIC += " \
   qt5-layer:${LAYERDIR}/dynamic-layers/qt5-layer/*/*/*.bb \

Error message:

ERROR: Nothing RPROVIDES 'linux-firmware-rpidistro-bcm43456' (but /.../build/../poky/meta/recipes-core/packagegroups/packagegroup-base.bb RDEPENDS on or otherwise requires it)
linux-firmware-rpidistro RPROVIDES linux-firmware-rpidistro-bcm43456 but was skipped: because it has a restricted license 'synaptics-killswitch'. Which is not listed in LICENSE_FLAGS_ACCEPTED

Explanation: The linux-firmware-rpidistro package provided by the meta-raspberrypi layer has components licensed under more restrictive terms. This license must be explicitly enabled. Read more at https://meta-raspberrypi.readthedocs.io/en/latest/ipcompliance.html.

Fix:

vim build/conf/local.conf
 EXTRA_IMAGE_FEATURES = "debug-tweaks ssh-server-dropbear package-management"
 DISTRO_FEATURES:append = " wifi polkit"

+LICENSE_FLAGS_ACCEPTED = "synaptics-killswitch"