Release 3.1 (dunfell)
This section provides migration information for moving to the Yocto Project 3.1 Release (codename “dunfell”) from the prior release.
Minimum system requirements
The following versions / requirements of build host components have been updated:
gcc 5.0
python 3.5
tar 1.28
rpcgen
is now required on the host (part of thelibc-dev-bin
package on Ubuntu, Debian and related distributions, and theglibc
package on RPM-based distributions).
Additionally, the makeinfo
and pod2man
tools are no longer
required on the host.
mpc8315e-rdb machine removed
The MPC8315E-RDB machine is old/obsolete and unobtainable, thus given
the maintenance burden the mpc8315e-rdb
machine configuration that
supported it has been removed in this release. The removal does leave a
gap in official PowerPC reference hardware support; this may change in
future if a suitable machine with accompanying support resources is
found.
Python 2 removed
Due to the expiration of upstream support in January 2020, support for Python 2 has now been removed; it is recommended that you use Python 3 instead. If absolutely needed there is a meta-python2 community layer containing Python 2, related classes and various Python 2-based modules, however it should not be considered as supported.
Reproducible builds now enabled by default
In order to avoid unnecessary differences in output files (aiding binary
reproducibility), the Poky distribution configuration
(DISTRO = "poky"
) now inherits the reproducible_build
class by
default.
Impact of ptest feature is now more significant
The Poky distribution configuration (DISTRO = "poky"
) enables ptests
by default to enable runtime testing of various components. In this
release, a dependency needed to be added that has resulted in a
significant increase in the number of components that will be built just
when building a simple image such as core-image-minimal. If you do not
need runtime tests enabled for core components, then it is recommended
that you remove “ptest” from
DISTRO_FEATURES to save a significant
amount of build time e.g. by adding the following in your configuration:
DISTRO_FEATURES_remove = "ptest"
Removed recipes
The following recipes have been removed:
chkconfig
: obsoleteconsole-tools
: obsoleteenchant
: replaced byenchant2
foomatic-filters
: obsoletelibidn
: no longer needed, moved to meta-oelibmodulemd
: replaced bylibmodulemd-v1
linux-yocto
: drop 4.19, 5.2 version recipes (5.4 now provided)nspr
: no longer needed, moved to meta-oenss
: no longer needed, moved to meta-oepython
: Python 2 removed (Python 3 preferred)python-setuptools
: Python 2 version removed (python3-setuptools preferred)sysprof
: no longer needed, moved to meta-oetexi2html
: obsoleteu-boot-fw-utils
: functionally replaced bylibubootenv
features_check class replaces distro_features_check
The distro_features_check
class has had its functionality expanded,
now supporting ANY_OF_MACHINE_FEATURES
,
REQUIRED_MACHINE_FEATURES
, CONFLICT_MACHINE_FEATURES
,
ANY_OF_COMBINED_FEATURES
, REQUIRED_COMBINED_FEATURES
,
CONFLICT_COMBINED_FEATURES
. As a result the class has now been
renamed to features_check
; the distro_features_check
class still
exists but generates a warning and redirects to the new class. In
preparation for a future removal of the old class it is recommended that
you update recipes currently inheriting distro_features_check
to
inherit features_check instead.
Removed classes
The following classes have been removed:
distutils-base
: moved to meta-python2distutils
: moved to meta-python2libc-common
: merged into the glibc recipe as nothing else used it.python-dir
: moved to meta-python2pythonnative
: moved to meta-python2setuptools
: moved to meta-python2tinderclient
: dropped as it was obsolete.
SRC_URI checksum behaviour
Previously, recipes by tradition included both SHA256 and MD5 checksums for remotely fetched files in SRC_URI, even though only one is actually mandated. However, the MD5 checksum does not add much given its inherent weakness; thus when a checksum fails only the SHA256 sum will now be printed. The md5sum will still be verified if it is specified.
npm fetcher changes
The npm fetcher has been completely reworked in this release. The npm
fetcher now only fetches the package source itself and no longer the
dependencies; there is now also an npmsw fetcher which explicitly
fetches the shrinkwrap file and the dependencies. This removes the
slightly awkward NPM_LOCKDOWN
and NPM_SHRINKWRAP
variables which
pointed to local files; the lockdown file is no longer needed at all.
Additionally, the package name in npm://
entries in
SRC_URI is now specified using a package
parameter instead of the earlier name
which overlapped with the
generic name
parameter. All recipes using the npm fetcher will need
to be changed as a result.
An example of the new scheme:
SRC_URI = "npm://registry.npmjs.org;package=array-flatten;version=1.1.1 \
npmsw://${THISDIR}/npm-shrinkwrap.json"
Another example where the sources are fetched from git rather than an npm repository:
SRC_URI = "git://github.com/foo/bar.git;protocol=https \
npmsw://${THISDIR}/npm-shrinkwrap.json"
devtool and recipetool have also been updated to match with the npm
fetcher changes. Other than producing working and more complete recipes
for npm sources, there is also a minor change to the command line for
devtool: the --fetch-dev
option has been renamed to --npm-dev
as
it is npm-specific.
Packaging changes
intltool
has been removed frompackagegroup-core-sdk
as it is rarely needed to build modern software - gettext can do most of the things it used to be needed for.intltool
has also been removed frompackagegroup-core-self-hosted
as it is not needed to for standard builds.git:
git-am
,git-difftool
,git-submodule
, andgit-request-pull
are no longer perl-based, so are now installed with the maingit
package instead of withingit-perltools
.The
ldconfig
binary built as part of glibc has now been moved to its ownldconfig
package (note noglibc-
prefix). This package is in the RRECOMMENDS of the mainglibc
package ifldconfig
is present in DISTRO_FEATURES.libevent
now splits each shared library into its own package (as Debian does). Since these are shared libraries and will be pulled in through the normal shared library dependency handling, there should be no impact to existing configurations other than less unnecessary libraries being installed in some cases.linux-firmware now has a new package for
bcm4366c
and includes available NVRAM config files into thebcm43340
,bcm43362
,bcm43430
andbcm4356-pcie
packages.harfbuzz
now splits the newlibharfbuzz-subset.so
library into its own package to reduce the main package size in cases wherelibharfbuzz-subset.so
is not needed.
Additional warnings
Warnings will now be shown at do_package_qa
time in the following
circumstances:
A recipe installs
.desktop
files containingMimeType
keys but does not inherit the newmime-xdg
classA recipe installs
.xml
files into${datadir}/mime/packages
but does not inherit the mime class
wic
image type now used instead of live
by default for x86
conf/machine/include/x86-base.inc
(inherited by most x86 machine
configurations) now specifies wic
instead of live
by default in
IMAGE_FSTYPES. The live
image type will
likely be removed in a future release so it is recommended that you use
wic
instead.
Miscellaneous changes
The undocumented
SRC_DISTRIBUTE_LICENSES
variable has now been removed in favour of a newAVAILABLE_LICENSES
variable which is dynamically set based upon license files found in${COMMON_LICENSE_DIR}
and${LICENSE_PATH}
.The tune definition for big-endian microblaze machines is now
microblaze
instead ofmicroblazeeb
.newlib
no longer has built-in syscalls.libgloss
should then provide the syscalls,crt0.o
and other functions that are no longer part ofnewlib
itself. If you are usingTCLIBC = "newlib"
this now means that you must link applications with bothnewlib
andlibgloss
, whereas beforenewlib
would run in many configurations by itself.