Release 3.3 (hardknott)
This section provides migration information for moving to the Yocto Project 3.3 Release (codename “hardknott”) from the prior release.
Minimum system requirements
You will now need at least Python 3.6 installed on your build host. Most recent
distributions provide this, but should you be building on a distribution that
does not have it, you can use the buildtools tarball (easily installable
using scripts/install-buildtools
) — see
Required Git, tar, Python, make and gcc Versions
for details.
Removed recipes
The following recipes have been removed:
go-dep
: obsolete with the advent of go modulesgst-validate
: replaced bygst-devtools
linux-yocto
: removed 5.8 version recipes (5.4 / 5.10 still provided)vulkan-demos
: replaced byvulkan-samples
Single version common license file naming
Some license files in meta/files/common-licenses
have been renamed to match
current SPDX naming conventions:
AGPL-3.0 -> AGPL-3.0-only
GPL-1.0 -> GPL-1.0-only
GPL-2.0 -> GPL-2.0-only
GPL-3.0 -> GPL-3.0-only
LGPL-2.0 -> LGPL-2.0-only
LGPL-2.1 -> LGPL-2.1-only
LGPL-3.0 -> LGPL-3.0-only
Additionally, corresponding “-or-later” suffixed files have been added e.g.
GPL-2.0-or-later
.
It is not required that you change LICENSE values as there are mappings
from the original names in place; however, in rare cases where you have a recipe
which sets LIC_FILES_CHKSUM to point to file(s) in
meta/files/common-licenses
(which in any case is not recommended) you will
need to update those.
New python3targetconfig
class
A new python3targetconfig class has
been created for situations where you would previously have inherited the
python3native class but need access to
target configuration data (such as correct installation directories). Recipes
where this situation applies should be changed to inherit
python3targetconfig instead of
python3native. This also adds a dependency
on target python3
, so it should only be used where appropriate in order to
avoid unnecessarily lengthening builds.
Some example recipes where this change has been made: gpgme
, libcap-ng
,
python3-pycairo
.
setup.py
path for Python modules
In a Python module, sometimes setup.py
can be buried deep in the
source tree. Previously this was handled in recipes by setting S to
point to the subdirectory within the source where setup.py
is located.
However with the recent pseudo
changes, some Python modules make changes to files beneath ${S}
, for
example:
S = "${WORKDIR}/git/python/pythonmodule"
then in setup.py
it works with source code in a relative fashion, such
as ../../src
. This causes pseudo to fail as it isn’t able to track
the paths properly. This release introduces a new DISTUTILS_SETUP_PATH
variable so that recipes can specify it explicitly, for example:
S = "${WORKDIR}/git"
DISTUTILS_SETUP_PATH = "${S}/python/pythonmodule"
Recipes that inherit from distutils3
(or setuptools3
which itself inherits distutils3
) that also set S to point to a
Python module within a subdirectory in the aforementioned manner should be
changed to set DISTUTILS_SETUP_PATH
instead.
BitBake changes
BitBake is now configured to use a default
umask
of022
for all tasks (specified via a new BB_DEFAULT_UMASK variable). If needed,umask
can still be set on a per-task basis via theumask
varflag on the task function, but that is unlikely to be necessary in most cases.If a version specified in PREFERRED_VERSION is not available this will now trigger a warning instead of just a note, making such issues more visible.
Packaging changes
The following packaging changes have been made; in all cases the main package still depends upon the split out packages so you should not need to do anything unless you want to take advantage of the improved granularity:
dbus
:-common
and-tools
split outiproute2
: splitip
binary to its own packagenet-tools
: splitmii-tool
into its own packageprocps
: splitps
andsysctl
into their own packagesrpm
: split build and extra functionality into separate packagessudo
: splitsudo
binary intosudo-sudo
and libs intosudo-lib
systemtap
: examples, Python scripts and runtime material split oututil-linux
:libuuid
has been split out to its ownutil-linux-libuuid
recipe (and corresponding packages) to avoid circular dependencies iflibgcrypt
support is enabled inutil-linux
. (util-linux
depends uponutil-linux-libuuid
.)
Miscellaneous changes
The default poky DISTRO_VERSION value now uses the core metadata’s git hash (i.e. METADATA_REVISION) rather than the date (i.e. DATE) to reduce one small source of non-reproducibility. You can of course specify your own DISTRO_VERSION value as desired (particularly if you create your own custom distro configuration).
adwaita-icon-theme
version 3.34.3 has been added back, and is selected as the default via PREFERRED_VERSION inmeta/conf/distro/include/default-versions.inc
due to newer versions not working well withlibrsvg
2.40.librsvg
is not practically upgradeable at the moment as it has been ported to Rust, and Rust is not (yet) in OE-Core, but this will change in a future release.ffmpeg
is now configured to disable GPL-licensed portions by default to make it harder to accidentally violate the GPL. To explicitly enable GPL licensed portions, addgpl
to PACKAGECONFIG forffmpeg
using a bbappend (or usePACKAGECONFIG_append_pn-ffmpeg = " gpl"
in your configuration.)connman
is now set to conflict withsystemd-networkd
as they overlap functionally and may interfere with each other at runtime.Canonical SPDX license names are now used in image license manifests in order to avoid aliases of the same license from showing up together (e.g.
GPLv2
andGPL-2.0
)