1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK 2 3Release 2.6 (thud) 4================== 5 6This section provides migration information for moving to the Yocto 7Project 2.6 Release (codename "thud") from the prior release. 8 9.. _migration-2.6-gcc-changes: 10 11GCC 8.2 is Now Used by Default 12------------------------------ 13 14The GNU Compiler Collection version 8.2 is now used by default for 15compilation. For more information on what has changed in the GCC 8.x 16release, see https://gcc.gnu.org/gcc-8/changes.html. 17 18If you still need to compile with version 7.x, GCC 7.3 is also provided. 19You can select this version by setting the and can be selected by 20setting the :term:`GCCVERSION` variable to "7.%" in 21your configuration. 22 23.. _migration-2.6-removed-recipes: 24 25Removed Recipes 26--------------- 27 28The following recipes have been removed: 29 30- *beecrypt*: No longer needed since moving to RPM 4. 31- *bigreqsproto*: Replaced by ``xorgproto``. 32- *calibrateproto*: Removed in favor of ``xinput``. 33- *compositeproto*: Replaced by ``xorgproto``. 34- *damageproto*: Replaced by ``xorgproto``. 35- *dmxproto*: Replaced by ``xorgproto``. 36- *dri2proto*: Replaced by ``xorgproto``. 37- *dri3proto*: Replaced by ``xorgproto``. 38- *eee-acpi-scripts*: Became obsolete. 39- *fixesproto*: Replaced by ``xorgproto``. 40- *fontsproto*: Replaced by ``xorgproto``. 41- *fstests*: Became obsolete. 42- *gccmakedep*: No longer used. 43- *glproto*: Replaced by ``xorgproto``. 44- *gnome-desktop3*: No longer needed. This recipe has moved to ``meta-oe``. 45- *icon-naming-utils*: No longer used since the Sato theme was removed in 2016. 46- *inputproto*: Replaced by ``xorgproto``. 47- *kbproto*: Replaced by ``xorgproto``. 48- *libusb-compat*: Became obsolete. 49- *libuser*: Became obsolete. 50- *libnfsidmap*: No longer an external requirement since ``nfs-utils`` 2.2.1. ``libnfsidmap`` is now integrated. 51- *libxcalibrate*: No longer needed with ``xinput`` 52- *mktemp*: Became obsolete. The ``mktemp`` command is provided by both ``busybox`` and ``coreutils``. 53- *ossp-uuid*: Is not being maintained and has mostly been replaced by ``uuid.h`` in ``util-linux``. 54- *pax-utils*: No longer needed. Previous QA tests that did use this recipe are now done at build time. 55- *pcmciautils*: Became obsolete. 56- *pixz*: No longer needed. ``xz`` now supports multi-threaded compression. 57- *presentproto*: Replaced by ``xorgproto``. 58- *randrproto*: Replaced by ``xorgproto``. 59- *recordproto*: Replaced by ``xorgproto``. 60- *renderproto*: Replaced by ``xorgproto``. 61- *resourceproto*: Replaced by ``xorgproto``. 62- *scrnsaverproto*: Replaced by ``xorgproto``. 63- *trace-cmd*: Became obsolete. ``perf`` replaced this recipe's functionally. 64- *videoproto*: Replaced by ``xorgproto``. 65- *wireless-tools*: Became obsolete. Superseded by ``iw``. 66- *xcmiscproto*: Replaced by ``xorgproto``. 67- *xextproto*: Replaced by ``xorgproto``. 68- *xf86dgaproto*: Replaced by ``xorgproto``. 69- *xf86driproto*: Replaced by ``xorgproto``. 70- *xf86miscproto*: Replaced by ``xorgproto``. 71- *xf86-video-omapfb*: Became obsolete. Use kernel modesetting driver instead. 72- *xf86-video-omap*: Became obsolete. Use kernel modesetting driver instead. 73- *xf86vidmodeproto*: Replaced by ``xorgproto``. 74- *xineramaproto*: Replaced by ``xorgproto``. 75- *xproto*: Replaced by ``xorgproto``. 76- *yasm*: No longer needed since previous usages are now satisfied by ``nasm``. 77 78.. _migration-2.6-packaging-changes: 79 80Packaging Changes 81----------------- 82 83The following packaging changes have been made: 84 85- *cmake*: ``cmake.m4`` and ``toolchain`` files have been moved to 86 the main package. 87 88- *iptables*: The ``iptables`` modules have been split into 89 separate packages. 90 91- *alsa-lib*: ``libasound`` is now in the main ``alsa-lib`` package 92 instead of ``libasound``. 93 94- *glibc*: ``libnss-db`` is now in its own package along with a 95 ``/var/db/makedbs.sh`` script to update databases. 96 97- *python and python3*: The main package has been removed from 98 the recipe. You must install specific packages or ``python-modules`` 99 / ``python3-modules`` for everything. 100 101- *systemtap*: Moved ``systemtap-exporter`` into its own package. 102 103.. _migration-2.6-xorg-protocol-dependencies: 104 105XOrg Protocol dependencies 106-------------------------- 107 108The ``*proto`` upstream repositories have been combined into one 109"xorgproto" repository. Thus, the corresponding recipes have also been 110combined into a single ``xorgproto`` recipe. Any recipes that depend 111upon the older ``*proto`` recipes need to be changed to depend on the 112newer ``xorgproto`` recipe instead. 113 114For names of recipes removed because of this repository change, see the 115:ref:`migration-guides/migration-2.6:removed recipes` section. 116 117.. _migration-2.6-distutils-distutils3-fetching-dependencies: 118 119``distutils`` and ``distutils3`` Now Prevent Fetching Dependencies During the ``do_configure`` Task 120--------------------------------------------------------------------------------------------------- 121 122Previously, it was possible for Python recipes that inherited the 123``distutils`` and ``distutils3`` classes to fetch code 124during the :ref:`ref-tasks-configure` task to satisfy 125dependencies mentioned in ``setup.py`` if those dependencies were not 126provided in the sysroot (i.e. recipes providing the dependencies were 127missing from :term:`DEPENDS`). 128 129.. note:: 130 131 This change affects classes beyond just the two mentioned (i.e. ``distutils`` 132 and ``distutils3``). Any recipe that inherits ``distutils*`` classes are 133 affected. For example, the ``setuptools`` and :ref:`ref-classes-setuptools3` 134 recipes are affected since they inherit the ``distutils*`` classes. 135 136Fetching these types of dependencies that are not provided in the 137sysroot negatively affects the ability to reproduce builds. This type of 138fetching is now explicitly disabled. Consequently, any missing 139dependencies in Python recipes that use these classes now result in an 140error during the :ref:`ref-tasks-configure` task. 141 142.. _migration-2.6-linux-yocto-configuration-audit-issues-now-correctly-reported: 143 144``linux-yocto`` Configuration Audit Issues Now Correctly Reported 145----------------------------------------------------------------- 146 147Due to a bug, the kernel configuration audit functionality was not 148writing out any resulting warnings during the build. This issue is now 149corrected. You might notice these warnings now if you have a custom 150kernel configuration with a ``linux-yocto`` style kernel recipe. 151 152.. _migration-2.6-image-kernel-artifact-naming-changes: 153 154Image/Kernel Artifact Naming Changes 155------------------------------------ 156 157The following changes have been made: 158 159- Name variables (e.g. :term:`IMAGE_NAME`) use a new 160 :term:`IMAGE_VERSION_SUFFIX` variable instead of 161 :term:`DATETIME`. Using :term:`IMAGE_VERSION_SUFFIX` 162 allows easier and more direct changes. 163 164 The :term:`IMAGE_VERSION_SUFFIX` variable is set in the ``bitbake.conf`` 165 configuration file as follows:: 166 167 IMAGE_VERSION_SUFFIX = "-${DATETIME}" 168 169- Several variables have changed names for consistency:: 170 171 Old Variable Name New Variable Name 172 ======================================================== 173 KERNEL_IMAGE_BASE_NAME KERNEL_IMAGE_NAME 174 KERNEL_IMAGE_SYMLINK_NAME KERNEL_IMAGE_LINK_NAME 175 MODULE_TARBALL_BASE_NAME MODULE_TARBALL_NAME 176 MODULE_TARBALL_SYMLINK_NAME MODULE_TARBALL_LINK_NAME 177 INITRAMFS_BASE_NAME INITRAMFS_NAME 178 179- The ``MODULE_IMAGE_BASE_NAME`` variable has been removed. The module 180 tarball name is now controlled directly with the 181 :term:`MODULE_TARBALL_NAME` variable. 182 183- The :term:`KERNEL_DTB_NAME` and 184 :term:`KERNEL_DTB_LINK_NAME` variables 185 have been introduced to control kernel Device Tree Binary (DTB) 186 artifact names instead of mangling ``KERNEL_IMAGE_*`` variables. 187 188- The :term:`KERNEL_FIT_NAME` and 189 :term:`KERNEL_FIT_LINK_NAME` variables 190 have been introduced to specify the name of flattened image tree 191 (FIT) kernel images similar to other deployed artifacts. 192 193- The :term:`MODULE_TARBALL_NAME` and 194 :term:`MODULE_TARBALL_LINK_NAME` 195 variable values no longer include the "module-" prefix or ".tgz" 196 suffix. These parts are now hardcoded so that the values are 197 consistent with other artifact naming variables. 198 199- Added the :term:`INITRAMFS_LINK_NAME` 200 variable so that the symlink can be controlled similarly to other 201 artifact types. 202 203- :term:`INITRAMFS_NAME` now uses 204 "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}" instead 205 of "${PV}-${PR}-${MACHINE}-${DATETIME}", which makes it consistent 206 with other variables. 207 208.. _migration-2.6-serial-console-deprecated: 209 210``SERIAL_CONSOLE`` Deprecated 211----------------------------- 212 213The ``SERIAL_CONSOLE`` variable has been functionally replaced by the 214:term:`SERIAL_CONSOLES` variable for some time. With the Yocto Project 2.6 215release, ``SERIAL_CONSOLE`` has been officially deprecated. 216 217``SERIAL_CONSOLE`` will continue to work as before for the 2.6 release. 218However, for the sake of future compatibility, it is recommended that 219you replace all instances of ``SERIAL_CONSOLE`` with :term:`SERIAL_CONSOLES`. 220 221.. note:: 222 223 The only difference in usage is that :term:`SERIAL_CONSOLES` 224 expects entries to be separated using semicolons as compared to 225 ``SERIAL_CONSOLE``, which expects spaces. 226 227.. _migration-2.6-poky-sets-unknown-configure-option-to-qa-error: 228 229Configure Script Reports Unknown Options as Errors 230-------------------------------------------------- 231 232If the configure script reports an unknown option, this now triggers a 233QA error instead of a warning. Any recipes that previously got away with 234specifying such unknown options now need to be fixed. 235 236.. _migration-2.6-override-changes: 237 238Override Changes 239---------------- 240 241The following changes have occurred: 242 243- The ``virtclass-native`` and ``virtclass-nativesdk`` Overrides Have 244 Been Removed: The ``virtclass-native`` and ``virtclass-nativesdk`` 245 overrides have been deprecated since 2012 in favor of 246 ``class-native`` and ``class-nativesdk``, respectively. Both 247 ``virtclass-native`` and ``virtclass-nativesdk`` are now dropped. 248 249 .. note:: 250 251 The ``virtclass-multilib-`` overrides for multilib are still valid. 252 253- The ``forcevariable`` Override Now Has a Higher Priority Than 254 ``libc`` Overrides: The ``forcevariable`` override is documented to 255 be the highest priority override. However, due to a long-standing 256 quirk of how :term:`OVERRIDES` is set, the ``libc`` 257 overrides (e.g. ``libc-glibc``, ``libc-musl``, and so forth) 258 erroneously had a higher priority. This issue is now corrected. 259 260 It is likely this change will not cause any problems. However, it is 261 possible with some unusual configurations that you might see a change 262 in behavior if you were relying on the previous behavior. Be sure to 263 check how you use ``forcevariable`` and ``libc-*`` overrides in your 264 custom layers and configuration files to ensure they make sense. 265 266- The ``build-${BUILD_OS}`` Override Has Been Removed: The 267 ``build-${BUILD_OS}``, which is typically ``build-linux``, override 268 has been removed because building on a host operating system other 269 than a recent version of Linux is neither supported nor recommended. 270 Dropping the override avoids giving the impression that other host 271 operating systems might be supported. 272 273- The "_remove" operator now preserves whitespace. Consequently, when 274 specifying list items to remove, be aware that leading and trailing 275 whitespace resulting from the removal is retained. 276 277 See the ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:removal (override style syntax)`" 278 section in the BitBake User Manual for a detailed example. 279 280.. _migration-2.6-systemd-configuration-now-split-out-to-systemd-conf: 281 282``systemd`` Configuration is Now Split Into ``systemd-conf`` 283------------------------------------------------------------ 284 285The configuration for the ``systemd`` recipe has been moved into a 286``systemd-conf`` recipe. Moving this configuration to a separate recipe 287avoids the ``systemd`` recipe from becoming machine-specific for cases 288where machine-specific configurations need to be applied (e.g. for 289``qemu*`` machines). 290 291Currently, the new recipe packages the following files:: 292 293 ${sysconfdir}/machine-id 294 ${sysconfdir}/systemd/coredump.conf 295 ${sysconfdir}/systemd/journald.conf 296 ${sysconfdir}/systemd/logind.conf 297 ${sysconfdir}/systemd/system.conf 298 ${sysconfdir}/systemd/user.conf 299 300If you previously used bbappend files to append the ``systemd`` recipe to 301change any of the listed files, you must do so for the ``systemd-conf`` 302recipe instead. 303 304.. _migration-2.6-automatic-testing-changes: 305 306Automatic Testing Changes 307------------------------- 308 309This section provides information about automatic testing changes: 310 311- ``TEST_IMAGE`` Variable Removed: Prior to this release, you set the 312 ``TEST_IMAGE`` variable to "1" to enable automatic testing for 313 successfully built images. The ``TEST_IMAGE`` variable no longer 314 exists and has been replaced by the 315 :term:`TESTIMAGE_AUTO` variable. 316 317- Inheriting the :ref:`ref-classes-testimage` and :ref:`ref-classes-testsdk` 318 classes: best practices now dictate that you use the :term:`IMAGE_CLASSES` 319 variable rather than the :term:`INHERIT` variable when you inherit the 320 :ref:`ref-classes-testimage` and :ref:`ref-classes-testsdk` classes used 321 for automatic testing. 322 323.. _migration-2.6-openssl-changes: 324 325OpenSSL Changes 326--------------- 327 328`OpenSSL <https://www.openssl.org/>`__ has been upgraded from 1.0 to 3291.1. By default, this upgrade could cause problems for recipes that have 330both versions in their dependency chains. The problem is that both 331versions cannot be installed together at build time. 332 333.. note:: 334 335 It is possible to have both versions of the library at runtime. 336 337.. _migration-2.6-bitbake-changes: 338 339BitBake Changes 340--------------- 341 342The server logfile ``bitbake-cookerdaemon.log`` is now always placed in 343the :term:`Build Directory` instead of the current directory. 344 345.. _migration-2.6-security-changes: 346 347Security Changes 348---------------- 349 350The Poky distribution now uses security compiler flags by default. 351Inclusion of these flags could cause new failures due to stricter 352checking for various potential security issues in code. 353 354.. _migration-2.6-post-installation-changes: 355 356Post Installation Changes 357------------------------- 358 359You must explicitly mark post installs to defer to the target. If you 360want to explicitly defer a postinstall to first boot on the target 361rather than at root filesystem creation time, use ``pkg_postinst_ontarget()`` or 362call ``postinst_intercept delay_to_first_boot`` from ``pkg_postinst()``. 363Any failure of a ``pkg_postinst()`` script (including exit 1) triggers 364an error during the :ref:`ref-tasks-rootfs` task. 365 366For more information on post-installation behavior, see the 367":ref:`dev-manual/new-recipe:post-installation scripts`" 368section in the Yocto Project Development Tasks Manual. 369 370.. _migration-2.6-python-3-profile-guided-optimizations: 371 372Python 3 Profile-Guided Optimization 373------------------------------------ 374 375The ``python3`` recipe now enables profile-guided optimization. Using 376this optimization requires a little extra build time in exchange for 377improved performance on the target at runtime. Additionally, the 378optimization is only enabled if the current 379:term:`MACHINE` has support for user-mode emulation in 380QEMU (i.e. "qemu-usermode" is in 381:term:`MACHINE_FEATURES`, which it is by 382default). 383 384If you wish to disable Python profile-guided optimization regardless of 385the value of :term:`MACHINE_FEATURES`, then ensure that 386:term:`PACKAGECONFIG` for the ``python3`` recipe 387does not contain "pgo". You could accomplish the latter using the 388following at the configuration level:: 389 390 PACKAGECONFIG_remove_pn-python3 = "pgo" 391 392Alternatively, you can set :term:`PACKAGECONFIG` using an append file 393for the ``python3`` recipe. 394 395.. _migration-2.6-miscellaneous-changes: 396 397Miscellaneous Changes 398--------------------- 399 400The following miscellaneous changes occurred: 401 402- Default to using the Thumb-2 instruction set for armv7a and above. If 403 you have any custom recipes that build software that needs to be 404 built with the ARM instruction set, change the recipe to set the 405 instruction set as follows:: 406 407 ARM_INSTRUCTION_SET = "arm" 408 409- ``run-postinsts`` no longer uses ``/etc/*-postinsts`` for 410 ``dpkg/opkg`` in favor of built-in postinst support. RPM behavior 411 remains unchanged. 412 413- The ``NOISO`` and ``NOHDD`` variables are no longer used. You now 414 control building ``*.iso`` and ``*.hddimg`` image types directly by 415 using the :term:`IMAGE_FSTYPES` variable. 416 417- The ``scripts/contrib/mkefidisk.sh`` has been removed in favor of 418 Wic. 419 420- ``kernel-modules`` has been removed from 421 :term:`RRECOMMENDS` for ``qemumips`` and 422 ``qemumips64`` machines. Removal also impacts the ``x86-base.inc`` 423 file. 424 425 .. note:: 426 427 ``genericx86`` and ``genericx86-64`` retain ``kernel-modules`` as part of 428 the :term:`RRECOMMENDS` variable setting. 429 430- The ``LGPLv2_WHITELIST_GPL-3.0`` variable has been removed. If you 431 are setting this variable in your configuration, set or append it to 432 the ``WHITELIST_GPL-3.0`` variable instead. 433 434- ``${ASNEEDED}`` is now included in the 435 :term:`TARGET_LDFLAGS` variable directly. The 436 remaining definitions from ``meta/conf/distro/include/as-needed.inc`` 437 have been moved to corresponding recipes. 438 439- Support for DSA host keys has been dropped from the OpenSSH recipes. 440 If you are still using DSA keys, you must switch over to a more 441 secure algorithm as recommended by OpenSSH upstream. 442 443- The ``dhcp`` recipe now uses the ``dhcpd6.conf`` configuration file 444 in ``dhcpd6.service`` for IPv6 DHCP rather than re-using 445 ``dhcpd.conf``, which is now reserved for IPv4. 446 447 448