4.16 Moving to the Yocto Project 3.0 Release (zeus)
This section provides migration information for moving to the Yocto Project 3.0 Release (codename “zeus”) from the prior release.
4.16.1 Init System Selection
Changing the init system manager previously required setting a number of
different variables. You can now change the manager by setting the
INIT_MANAGER variable and the corresponding include files (i.e.
conf/distro/include/init-manager-*.conf). Include files are provided
for four values: “none”, “sysvinit”, “systemd”, and “mdev-busybox”. The
default value, “none”, for INIT_MANAGER should allow your current
settings to continue working. However, it is advisable to explicitly set
INIT_MANAGER.
4.16.2 LSB Support Removed
Linux Standard Base (LSB) as a standard is not current, and is not well suited for embedded applications. Support can be continued in a separate layer if needed. However, presently LSB support has been removed from the core.
As a result of this change, the poky-lsb derivative distribution
configuration that was also used for testing alternative configurations
has been replaced with a poky-altcfg distribution that has LSB parts
removed.
4.16.3 Removed Recipes
The following recipes have been removed.
core-image-lsb-dev: Part of removed LSB support.core-image-lsb: Part of removed LSB support.core-image-lsb-sdk: Part of removed LSB support.cve-check-tool: Functionally replaced by thecve-update-dbrecipe andcve-checkclass.eglinfo: No longer maintained.eglinfofrommesa-demosis an adequate and maintained alternative.gcc-8.3: Version 8.3 removed. Replaced by 9.2.gnome-themes-standard: Only needed by gtk+ 2.x, which has been removed.gtk+: GTK+ 2 is obsolete and has been replaced by gtk+3.irda-utils: Has become obsolete. IrDA support has been removed from the Linux kernel in version 4.17 and later.libnewt-python:libnewtPython support merged into mainlibnewtrecipe.libsdl: Replaced by newerlibsdl2.libx11-diet: Became obsolete.libxx86dga: Removed obsolete client library.libxx86misc: Removed. Library is redundant.linux-yocto: Version 5.0 removed, which is now redundant (5.2 / 4.19 present).lsbinitscripts: Part of removed LSB support.lsb: Part of removed LSB support.lsbtest: Part of removed LSB support.openssl10: Replaced by neweropensslversion 1.1.packagegroup-core-lsb: Part of removed LSB support.python-nose: Removed the Python 2.x version of the recipe.python-numpy: Removed the Python 2.x version of the recipe.python-scons: Removed the Python 2.x version of the recipe.source-highlight: No longer needed.stress: Replaced bystress-ng.vulkan: Split intovulkan-loader,vulkan-headers, andvulkan-tools.weston-conf: Functionality moved toweston-init.
4.16.4 Packaging Changes
The following packaging changes have occurred.
The Epiphany browser has been dropped from
packagegroup-self-hostedas it has not been needed insidebuild-appliance-imagefor quite some time and was causing resource problems.libcap-ngPython support has been moved to a separatelibcap-ng-pythonrecipe to streamline the build process when the Python bindings are not needed.libdrmnow packages the fileamdgpu.idsinto a separatelibdrm-amdgpupackage.python3: Therunpymodule is now in thepython3-corepackage as it is required to support the common “python3 -m” command usage.distccnow provides separatedistcc-clientanddistcc-serverpackages as typically one or the other are needed, rather than both.python*-setuptoolsrecipes now separately package thepkg_resourcesmodule in apython-pkg-resources/python3-pkg-resourcespackage as the module is useful independent of the rest of the setuptools package. The mainpython-setuptools/python3-setuptoolspackage depends on this new package so you should only need to update dependencies unless you want to take advantage of the increased granularity.
4.16.5 CVE Checking
cve-check-tool has been functionally replaced by a new
cve-update-db recipe and functionality built into the cve-check
class. The result uses NVD JSON data feeds rather than the deprecated
XML feeds that cve-check-tool was using, supports CVSSv3 scoring,
and makes other improvements.
Additionally, the CVE_CHECK_CVE_WHITELIST variable has been replaced
by CVE_CHECK_WHITELIST.
4.16.6 Bitbake Changes
The following BitBake changes have occurred.
addtaskstatements now properly validate dependent tasks. Previously, an invalid task was silently ignored. With this change, the invalid task generates a warning.Other invalid
addtaskanddeltaskusages now trigger these warnings: “multiple target tasks arguments with addtask / deltask”, and “multiple before/after clauses”.The “multiconfig” prefix is now shortened to “mc”. “multiconfig” will continue to work, however it may be removed in a future release.
The
bitbake -gcommand no longer generates arecipe-depends.dotfile as the contents (i.e. a reprocessed version oftask-depends.dot) were confusing.The
bb.build.FuncFailedexception, previously raised bybb.build.exec_func()when certain other exceptions have occurred, has been removed. The real underlying exceptions will be raised instead. If you have calls tobb.build.exec_func()in custom classes ortinfoil-usingscripts, any references tobb.build.FuncFailedshould be cleaned up.Additionally, the
bb.build.exec_func()no longer accepts the “pythonexception” parameter. The function now always raises exceptions. Remove this argument in any calls tobb.build.exec_func()in custom classes or scripts.The BB_SETSCENE_VERIFY_FUNCTION2 is no longer used. In the unlikely event that you have any references to it, they should be removed.
The
RunQueueExecuteScenequeueandRunQueueExecuteTasksevents have been removed since setscene tasks are now executed as part of the normal runqueue. Any event handling code in custom classes or scripts that handles these two events need to be updated.The arguments passed to functions used with BB_HASHCHECK_FUNCTION have changed. If you are using your own custom hash check function, see https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=40a5e193c4ba45c928fccd899415ea56b5417725 for details.
Task specifications in
BB_TASKDEPDATAand class implementations used in signature generator classes now use “<fn>:<task>” everywhere rather than the “.” delimiter that was being used in some places. This change makes it consistent with all areas in the code. Custom signature generator classes and code that readsBB_TASKDEPDATAneed to be updated to use ‘:’ as a separator rather than ‘.’.
4.16.7 Sanity Checks
The following sanity check changes occurred.
SRC_URI is now checked for usage of two problematic items:
“${PN}” prefix/suffix use - Warnings always appear if ${PN} is used. You must fix the issue regardless of whether multiconfig or anything else that would cause prefixing/suffixing to happen.
Github archive tarballs - these are not guaranteed to be stable. Consequently, it is likely that the tarballs will be refreshed and thus the SRC_URI checksums will fail to apply. It is recommended that you fetch either an official release tarball or a specific revision from the actual Git repository instead.
Either one of these items now trigger a warning by default. If you wish to disable this check, remove
src-uri-badfrom WARN_QA.The
file-rdepsruntime dependency check no longer expands RDEPENDS recursively as there is no mechanism to ensure they can be fully computed, and thus races sometimes result in errors either showing up or not. Thus, you might now see errors for missing runtime dependencies that were previously satisfied recursively. Here is an example: package A contains a shell script starting with#!/bin/bashbut has no dependency on bash. However, package A depends on package B, which does depend on bash. You need to add the missing dependency or dependencies to resolve the warning.Setting
DEPENDS_${PN}anywhere (i.e. typically in a recipe) now triggers an error. The error is triggered because DEPENDS is not a package-specific variable unlike RDEPENDS. You should setDEPENDSinstead.systemd currently does not work well with the musl C library because only upstream officially supports linking the library with glibc. Thus, a warning is shown when building systemd in conjunction with musl.
4.16.8 Miscellaneous Changes
The following miscellaneous changes have occurred.
The
gnomeclass has been removed because it now does very little. You should update recipes that previously inherited this class to do the following: inherit gnomebase gtk-icon-cache gconf mimeThe
meta/recipes-kernel/linux/linux-dtb.incfile has been removed. This file was previously deprecated in favor of setting KERNEL_DEVICETREE in any kernel recipe and only produced a warning. Remove anyincludeorrequirestatements pointing to this file.TARGET_CFLAGS, TARGET_CPPFLAGS, TARGET_CXXFLAGS, and TARGET_LDFLAGS are no longer exported to the external environment. This change did not require any changes to core recipes, which is a good indicator that no changes will be required. However, if for some reason the software being built by one of your recipes is expecting these variables to be set, then building the recipe will fail. In such cases, you must either export the variable or variables in the recipe or change the scripts so that exporting is not necessary.
You must change the host distro identifier used in NATIVELSBSTRING to use all lowercase characters even if it does not contain a version number. This change is necessary only if you are not using
uninativeand SANITY_TESTED_DISTROS.In the
base-filesrecipe, writing the hostname into/etc/hostsand/etc/hostnameis now done within the main do_install function rather than in thedo_install_basefilesissuefunction. The reason for the change is becausedo_install_basefilesissueis more easily overridden without having to duplicate the hostname functionality. If you have done the latter (e.g. in abase-filesbbappend), then you should remove it from your customizeddo_install_basefilesissuefunction.The
wic --expandcommand now uses commas to separate “key:value” pairs rather than hyphens.Note
The wic command-line help is not updated.
You must update any scripts or commands where you use
wic --expandwith multiple “key:value” pairs.UEFI image variable settings have been moved from various places to a central
conf/image-uefi.conf. This change should not influence any existing configuration as themeta/conf/image-uefi.confin the core metadata sets defaults that can be overridden in the same manner as before.conf/distro/include/world-broken.inchas been removed. For cases where certain recipes need to be disabled when using the musl C library, these recipes now haveCOMPATIBLE_HOST_libc-muslset with a comment that explains why.