Release 5.3 (whinlatter)

Migration notes for 5.3 (whinlatter)

This section provides migration information for moving to the Yocto Project 5.3 Release (codename “whinlatter”) from the prior release.

WORKDIR changes

S = ${WORKDIR}/something no longer supported

If a recipe has S set to be ${WORKDIR}/something, this is no longer supported, and an error will be issued. The recipe should be changed to:

S = "${UNPACKDIR}/something"

S = ${WORKDIR}/git and S = ${UNPACKDIR}/git should be removed

The Git fetcher now unpacks into the BB_GIT_DEFAULT_DESTSUFFIX directory rather than the git/ directory under UNPACKDIR. BB_GIT_DEFAULT_DESTSUFFIX is set in OpenEmbedded-Core (OE-Core)’s bitbake.conf to BP.

This location matches the default value of S set by bitbake.conf, so S setting in recipes can and should be removed.

Note that when S is set to a subdirectory of the git checkout, then it should be instead adjusted according to the previous point:

S = "${UNPACKDIR}/${BP}/something"

Note that “git” as the source checkout location can be hardcoded in other places in recipes; when it’s in SRC_URI, replace with BB_GIT_DEFAULT_DESTSUFFIX, otherwise replace with BP.

How to make those adjustments without tedious manual editing

The following sed command can be used to remove S = “${WORKDIR}/git across a whole layer:

sed -i "/^S = \"\${WORKDIR}\/git\"/d" `find . -name *.bb -o -name *.inc -o -name *.bbclass`

Then, the following command can tweak the remaining S assignments to refer to UNPACKDIR instead of WORKDIR:

sed -i "s/^S = \"\${WORKDIR}\//S = \"\${UNPACKDIR}\//g" `find . -name *.bb -o -name *.inc -o -name *.bbclass`

The first change can introduce a lot of consecutive empty lines, so those can be removed with:

sed -i -z -E 's/([ \t\f\v\r]*\n){3,}/\n\n/g' `find . -name *.bb -o -name *.inc`

BitBake Git fetcher tag parameter

The tag= parameter of the Git fetcher (git://) was updated. The tag commit SHA will be compared against the value supplied by the SRCREV variable or the rev= parameter in the URI in SRC_URI. This is strongly recommended to add to the URIs when using the Git fetcher for repositories using tag releases.

Space around equal assignment

A new warning is now printed when there are no whitespaces around an = assignment in recipes:

<filename>:<line number> has a lack of whitespace around the assignment: '<assignment>'

For example, the following assignments would print a warning:

FOO="bar"
FOO= "bar"
FOO ="bar"

These should be replaced by:

FOO = "bar"

Wic plugins containing dashes should be renamed

After a Python upgrade, Wic plugins containing dashes (-) for their filenames are no longer supported. One must rename the plugin file and convert the dashes to underscores (_).

It is also recommended to update any WKS file to convert dashes to underscores. For example, the bootimg-partition.py plugin was renamed to bootimg_partition.py. This means that any WKS file using this plugin must change each --source bootimg-partition to --source bootimg_partition.

However, the current WIC code automatically converts dashes to underscore for any --source call, so existing WKS files will not break if they use upstream plugins from OpenEmbedded-Core (OE-Core).

fitImage no longer supporter for KERNEL_IMAGETYPE

The fitImage type for KERNEL_IMAGETYPE is no longer supported. The logic for creating a FIT image was moved out of the kernel class. Instead, one should create a new recipe to build this FIT image, as described in the Removed Classes section of the Migration notes for 5.3 (whinlatter).

Supported kernel versions

The OLDEST_KERNEL setting is XXX in this release, meaning that out the box, older kernels are not supported. See 4.3 migration notes for details.

Supported distributions

Compared to the previous releases, running BitBake is supported on new GNU/Linux distributions:

  • XXX

On the other hand, some earlier distributions are no longer supported:

  • XXX

See all supported distributions.

Rust language changes

systemd changes

Recipe changes

Removed variables

The following variables have been removed:

  • BUILDHISTORY_RESET: Setting this to non-empty used to remove the old content of the buildhistory as part of the current BitBake invocation and replace it with information about what was built during the build. This was partly broken and hard to maintain.

Removed recipes

The following recipes have been removed in this release:

  • libsoup: The last user in OpenEmbedded-Core (OE-Core) was gst-examples, which has been upgraded with its libsoup dependency dropped.

  • glibc-y2038-tests: removed as the recipe only provides tests which are now provided by glibc-testsuite.

  • python3-ndg-httpsclient: The last dependency in core on this recipe was removed in May 2024 with dfa482f1998 (“python3-requests: cleanup RDEPENDS”), and there is no other user of this variable.

Removed PACKAGECONFIG entries

  • dropbear: enable-x11-forwarding (renamed to x11)

  • libxml2: ipv6

  • squashfs-tools: reproducible

  • mesa: kmsro, osmesa, xa

Removed classes

The following classes have been removed in this release:

  • kernel-fitimage.bbclass: the class has been replaced by the kernel-fit-image class. The new implementation resolves the long-standing bug 12912.

    If you are using the kernel FIT image support, you will need to:

    1. Make sure to include kernel-fit-extra-artifacts in your KERNEL_CLASSES variable to ensure the required files are exposed to the DEPLOY_DIR_IMAGE directory:

      KERNEL_CLASSES += "kernel-fit-extra-artifacts"
      
    2. Use the specific FIT image recipe rather than the base kernel recipe. For example, instead of:

      bitbake linux-yocto
      

      the FIT image is now build by:

      bitbake linux-yocto-fitimage
      

      For custom kernel recipes, creating a corresponding custom FIT image recipe is usually a good approach.

    3. If a FIT image is used as a replacement for the kernel image in the root filesystem, add the following configuration to your machine configuration file:

      # Create and deploy the vmlinux artifact which gets included into the FIT image
      KERNEL_CLASSES += "kernel-fit-extra-artifacts"
      
      # Do not install the kernel image package
      RRECOMMENDS:${KERNEL_PACKAGE_NAME}-base = ""
      # Install the FIT image package
      MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "linux-yocto-fitimage"
      
      # Configure the image.bbclass to depend on the FIT image instead of only
      # the kernel to ensure the FIT image is built and deployed with the image
      KERNEL_DEPLOY_DEPEND = "linux-yocto-fitimage:do_deploy"
      

    See the kernel-fit-image section for more information.

  • icecc.bbclass: Reports show that this class has been broken since Yocto Mickledore which suggests there are limited numbers of users. It doesn’t have any automated testing and it would be hard to setup and maintain a testing environment for it. The original users/maintainers aren’t using it now.

Removed features

The following features have been removed in this release:

Miscellaneous changes

  • xserver-xorg: remove sub-package ${PN}-xwayland, as xwayland is now its own recipe.