Release 5.1 (styhead)
Migration notes for 5.1 (styhead)
This section provides migration information for moving to the Yocto Project 5.1 Release (codename “styhead”) from the prior release.
WORKDIR changes
S = ${WORKDIR} no longer supported
If a recipe has S set to be WORKDIR, this is no longer supported, and an error will be issued. The recipe should be changed to:
S = "${WORKDIR}/sources"
UNPACKDIR = "${S}"
Any WORKDIR references where files from SRC_URI are referenced should be changed to S. These are commonly in do_compile, do_compile, do_install and LIC_FILES_CHKSUM.
WORKDIR references in recipes
WORKDIR references in other recipes need auditing. If they reference
files from SRC_URI, they likely need changing to UNPACKDIR.
These are commonly in do_compile and do_install
for things like service or configuration files. One unusual case is
${WORKDIR}/${BP}
which should probably be set to ${S}
.
References to ../
in LIC_FILES_CHKSUM or elsewhere may need changing
to UNPACKDIR. References to WORKDIR in sed
commands are
usually left as they are.
General notes
Files from do_unpack now unpack to WORKDIR/sources-unpack/
rather than WORKDIR/
.
If S is set to a subdirectory under WORKDIR and that
subdirectory exists in sources-unpack
after do_unpack runs,
it is moved to WORKDIR. This means that S = "${WORKDIR}/${BP}"
,
S = "${WORKDIR}/git"
and also deeper paths continue to work as expected
without changes. We cannot use symlinks to do this as it breaks autotools
based recipes. Keeping all sources under sources-unpack
wasn’t considered
as it meant more invasive recipes changes. The key objective was separating the
do_unpack task output from WORKDIR.
Previously, S was always created but after the recent changes it is no
longer the case. This means the check in do_unpack_qa
triggers where
S is not created by a recipe while it didn’t happen before. This can
require to add an S definition to a recipe that only uses
file://
SRC_URI entries. To be consistent, the following pattern is
recommended:
S = "${WORKDIR}/sources"
UNPACKDIR = "${S}"
Building C files from UNPACKDIR without setting S to point at it does not work as the debug prefix mapping doesn’t handle that.
devtool
and recipetool
have been updated to handle this and their
support for S = WORKDIR
and oe-local-files
has been removed.
Supported kernel versions
The OLDEST_KERNEL setting is still “5.15” 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:
Ubuntu 24.10
Fedora 40
OpenSUSE Leap 15.5
OpenSUSE Leap 15.6
On the other hand, some earlier distributions are no longer supported:
Ubuntu 23.04
Go language changes
After dropping the custom do_unpack from the go class, go recipes should now add
destsuffix=${GO_SRCURI_DESTSUFFIX}
to their SRC_URI to extract them in the appropriate path. An example would be:SRC_URI = "git://go.googlesource.com/example;branch=master;protocol=https;destsuffix=${GO_SRCURI_DESTSUFFIX}"
Go modules are no longer compiled with
--linkmode=external
.
systemd changes
New PACKAGECONFIG value
bpf-framework
used to pre-compile eBPFs that are required for the systemd.resource-control featuresRestrictFileSystems
andRestrictNetworkInterfaces
.
Recipe changes
gobject-introspection
: thegiscanner
utility is now shipped as a separate package ingobject-introspection-tools
.perf
no longer useslibnewt
for compiling its TUI.openssl
: do not build the test suite unless ptests are enabled.
Removed variables
The following variables have been removed:
TCLIBCAPPEND
is now removed as sharing TMPDIR for multiple libc providers has been supported for years.VOLATILE_LOG_DIR
: FILESYSTEM_PERMS_TABLES is now used instead. By default, FILESYSTEM_PERMS_TABLES now contains the valuefiles/fs-perms-volatile-log.txt
, which means that volatile log is enabled. Users can disable the volatile log by removing the valuefiles/fs-perms-volatile-log.txt
from FILESYSTEM_PERMS_TABLES.VOLATILE_TMP_DIR
: FILESYSTEM_PERMS_TABLES is now used instead. By default, FILESYSTEM_PERMS_TABLES now contains the valuefiles/fs-perms-volatile-tmp.txt
, which means that volatile tmp is enabled. Users can disable the volatile tmp by removing the valuefiles/fs-perms-volatile-tmp.txt
from FILESYSTEM_PERMS_TABLES.
Removed recipes
The following recipes have been removed in this release:
liba52
: superseded byffmpeg
libomxil
: recipe removed as its only consumer, the gstreamer omx plugin,was removed and has not been developed for several years
libnewt
: moved to meta-oempeg2dec
: inactive for 10 years and superseded byffmpeg
pytest-runner
: moved to meta-pythonpython3-importlib-metadata
: moved to meta-pythonpython3-pathlib2
: moved to meta-pythonpython3-py
: moved to meta-pythonpython3-rfc3986-validator
: moved to meta-pythonpython3-toml
: moved to meta-pythonpython3-tomli
: moved to meta-pythonusbinit
: recipe was poorly named as it is a gadget Ethernet driver. Gadget Ethernet is of questionable use now and usbinit isn’t referenced/used anywhere within OE-Core.
Removed classes
The following classes have been removed in this release:
siteconfig
: removed as it was only used byncurses
andzlib
and adding minimal added-value for a considerable amount of added runtime.
Miscellaneous changes
oe-selftest now only rewrites environment variable paths that absolutely point to builddir (i.e
X=$BUILDDIR/conf/
is still rewritten to point to the oe-selftestconf/
directory but notY=$BUILDDIR/../bitbake/
which still point to thebitbake/
directory)For example (taken from autobuilder environment): BB_LOGCONFIG is set as:
BB_LOGCONFIG="${BUILDDIR}/../bitbake/contrib/autobuilderlog.json"
. Note the relative path starting from the build directory to outside of it. This path is not changed by oe-selftest anymore.Environment variables containing relative paths from tested build directory to outside of the original build directory may need to be updated as they won’t be changed by oe-selftest.
Several sanity checks from the insane class, such as
buildpaths
, have been promoted to errors instead of warnings.The
license-incompatible
ERROR_QA sanity check was renamed tolicense-exception
.