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