Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 1 | Moving to the Yocto Project 2.2 Release |
| 2 | ======================================= |
| 3 | |
| 4 | This section provides migration information for moving to the Yocto |
| 5 | Project 2.2 Release from the prior release. |
| 6 | |
| 7 | .. _migration-2.2-minimum-kernel-version: |
| 8 | |
| 9 | Minimum Kernel Version |
| 10 | ---------------------- |
| 11 | |
| 12 | The minimum kernel version for the target system and for SDK is now |
| 13 | 3.2.0, due to the upgrade to ``glibc 2.24``. Specifically, for |
| 14 | AArch64-based targets the version is 3.14. For Nios II-based targets, |
| 15 | the minimum kernel version is 3.19. |
| 16 | |
| 17 | .. note:: |
| 18 | |
Andrew Geissler | 4c19ea1 | 2020-10-27 13:52:24 -0500 | [diff] [blame] | 19 | For x86 and x86_64, you can reset :term:`OLDEST_KERNEL` |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 20 | to anything down to 2.6.32 if desired. |
| 21 | |
| 22 | .. _migration-2.2-staging-directories-in-sysroot-simplified: |
| 23 | |
| 24 | Staging Directories in Sysroot Has Been Simplified |
| 25 | -------------------------------------------------- |
| 26 | |
| 27 | The way directories are staged in sysroot has been simplified and |
| 28 | introduces the new :term:`SYSROOT_DIRS`, |
| 29 | :term:`SYSROOT_DIRS_NATIVE`, and |
| 30 | :term:`SYSROOT_DIRS_BLACKLIST`. See the |
| 31 | `v2 patch series on the OE-Core Mailing |
| 32 | List <http://lists.openembedded.org/pipermail/openembedded-core/2016-May/121365.html>`__ |
| 33 | for additional information. |
| 34 | |
| 35 | .. _migration-2.2-removal-of-old-images-from-tmp-deploy-now-enabled: |
| 36 | |
| 37 | Removal of Old Images and Other Files in ``tmp/deploy`` Now Enabled |
| 38 | ------------------------------------------------------------------- |
| 39 | |
| 40 | Removal of old images and other files in ``tmp/deploy/`` is now enabled |
| 41 | by default due to a new staging method used for those files. As a result |
| 42 | of this change, the ``RM_OLD_IMAGE`` variable is now redundant. |
| 43 | |
| 44 | .. _migration-2.2-python-changes: |
| 45 | |
| 46 | Python Changes |
| 47 | -------------- |
| 48 | |
| 49 | The following changes for Python occurred: |
| 50 | |
| 51 | .. _migration-2.2-bitbake-now-requires-python-3.4: |
| 52 | |
| 53 | BitBake Now Requires Python 3.4+ |
| 54 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 55 | |
| 56 | BitBake requires Python 3.4 or greater. |
| 57 | |
| 58 | .. _migration-2.2-utf-8-locale-required-on-build-host: |
| 59 | |
| 60 | UTF-8 Locale Required on Build Host |
| 61 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 62 | |
| 63 | A UTF-8 locale is required on the build host due to Python 3. Since |
| 64 | C.UTF-8 is not a standard, the default is en_US.UTF-8. |
| 65 | |
| 66 | .. _migration-2.2-metadata-now-must-use-python-3-syntax: |
| 67 | |
| 68 | Metadata Must Now Use Python 3 Syntax |
| 69 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 70 | |
| 71 | The metadata is now required to use Python 3 syntax. For help preparing |
| 72 | metadata, see any of the many Python 3 porting guides available. |
| 73 | Alternatively, you can reference the conversion commits for Bitbake and |
| 74 | you can use :term:`OpenEmbedded-Core (OE-Core)` as a guide for changes. Following are |
| 75 | particular areas of interest: |
| 76 | |
| 77 | - subprocess command-line pipes needing locale decoding |
| 78 | |
| 79 | - the syntax for octal values changed |
| 80 | |
Andrew Geissler | 4c19ea1 | 2020-10-27 13:52:24 -0500 | [diff] [blame] | 81 | - the ``iter*()`` functions changed name |
| 82 | |
| 83 | - iterators now return views, not lists |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 84 | |
| 85 | - changed names for Python modules |
| 86 | |
| 87 | .. _migration-2.2-target-python-recipes-switched-to-python-3: |
| 88 | |
| 89 | Target Python Recipes Switched to Python 3 |
| 90 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 91 | |
| 92 | Most target Python recipes have now been switched to Python 3. |
| 93 | Unfortunately, systems using RPM as a package manager and providing |
| 94 | online package-manager support through SMART still require Python 2. |
| 95 | |
| 96 | .. note:: |
| 97 | |
| 98 | Python 2 and recipes that use it can still be built for the target as |
| 99 | with previous versions. |
| 100 | |
| 101 | .. _migration-2.2-buildtools-tarball-includes-python-3: |
| 102 | |
| 103 | ``buildtools-tarball`` Includes Python 3 |
| 104 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 105 | |
| 106 | ``buildtools-tarball`` now includes Python 3. |
| 107 | |
| 108 | .. _migration-2.2-uclibc-replaced-by-musl: |
| 109 | |
| 110 | uClibc Replaced by musl |
| 111 | ----------------------- |
| 112 | |
| 113 | uClibc has been removed in favor of musl. Musl has matured, is better |
| 114 | maintained, and is compatible with a wider range of applications as |
| 115 | compared to uClibc. |
| 116 | |
| 117 | .. _migration-2.2-B-no-longer-default-working-directory-for-tasks: |
| 118 | |
| 119 | ``${B}`` No Longer Default Working Directory for Tasks |
| 120 | ------------------------------------------------------ |
| 121 | |
| 122 | ``${``\ :term:`B`\ ``}`` is no longer the default working |
| 123 | directory for tasks. Consequently, any custom tasks you define now need |
| 124 | to either have the |
| 125 | ``[``\ :ref:`dirs <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]`` flag |
| 126 | set, or the task needs to change into the appropriate working directory |
| 127 | manually (e.g using ``cd`` for a shell task). |
| 128 | |
| 129 | .. note:: |
| 130 | |
| 131 | The preferred method is to use the |
| 132 | [dirs] |
| 133 | flag. |
| 134 | |
| 135 | .. _migration-2.2-runqemu-ported-to-python: |
| 136 | |
| 137 | ``runqemu`` Ported to Python |
| 138 | ---------------------------- |
| 139 | |
| 140 | ``runqemu`` has been ported to Python and has changed behavior in some |
| 141 | cases. Previous usage patterns continue to be supported. |
| 142 | |
| 143 | The new ``runqemu`` is a Python script. Machine knowledge is no longer |
| 144 | hardcoded into ``runqemu``. You can choose to use the ``qemuboot`` |
| 145 | configuration file to define the BSP's own arguments and to make it |
| 146 | bootable with ``runqemu``. If you use a configuration file, use the |
| 147 | following form: |
| 148 | :: |
| 149 | |
| 150 | image-name-machine.qemuboot.conf |
| 151 | |
| 152 | The configuration file |
| 153 | enables fine-grained tuning of options passed to QEMU without the |
| 154 | ``runqemu`` script hard-coding any knowledge about different machines. |
| 155 | Using a configuration file is particularly convenient when trying to use |
| 156 | QEMU with machines other than the ``qemu*`` machines in |
| 157 | :term:`OpenEmbedded-Core (OE-Core)`. The ``qemuboot.conf`` file is generated by the |
| 158 | ``qemuboot`` class when the root filesystem is being build (i.e. build |
| 159 | rootfs). QEMU boot arguments can be set in BSP's configuration file and |
| 160 | the ``qemuboot`` class will save them to ``qemuboot.conf``. |
| 161 | |
| 162 | If you want to use ``runqemu`` without a configuration file, use the |
| 163 | following command form: |
| 164 | :: |
| 165 | |
| 166 | $ runqemu machine rootfs kernel [options] |
| 167 | |
| 168 | Supported machines are as follows: |
| 169 | |
| 170 | - qemuarm |
| 171 | - qemuarm64 |
| 172 | - qemux86 |
| 173 | - qemux86-64 |
| 174 | - qemuppc |
| 175 | - qemumips |
| 176 | - qemumips64 |
| 177 | - qemumipsel |
| 178 | - qemumips64el |
| 179 | |
| 180 | Consider the |
| 181 | following example, which uses the ``qemux86-64`` machine, provides a |
| 182 | root filesystem, provides an image, and uses the ``nographic`` option: :: |
| 183 | |
| 184 | $ runqemu qemux86-64 tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.ext4 tmp/deploy/images/qemux86-64/bzImage nographic |
| 185 | |
| 186 | Following is a list of variables that can be set in configuration files |
| 187 | such as ``bsp.conf`` to enable the BSP to be booted by ``runqemu``: |
| 188 | |
| 189 | .. note:: |
| 190 | |
| 191 | "QB" means "QEMU Boot". |
| 192 | |
| 193 | :: |
| 194 | |
| 195 | QB_SYSTEM_NAME: QEMU name (e.g. "qemu-system-i386") |
| 196 | QB_OPT_APPEND: Options to append to QEMU (e.g. "-show-cursor") |
| 197 | QB_DEFAULT_KERNEL: Default kernel to boot (e.g. "bzImage") |
| 198 | QB_DEFAULT_FSTYPE: Default FSTYPE to boot (e.g. "ext4") |
| 199 | QB_MEM: Memory (e.g. "-m 512") |
| 200 | QB_MACHINE: QEMU machine (e.g. "-machine virt") |
| 201 | QB_CPU: QEMU cpu (e.g. "-cpu qemu32") |
| 202 | QB_CPU_KVM: Similar to QB_CPU except used for kvm support (e.g. "-cpu kvm64") |
| 203 | QB_KERNEL_CMDLINE_APPEND: Options to append to the kernel's -append |
| 204 | option (e.g. "console=ttyS0 console=tty") |
| 205 | QB_DTB: QEMU dtb name |
| 206 | QB_AUDIO_DRV: QEMU audio driver (e.g. "alsa", set it when support audio) |
| 207 | QB_AUDIO_OPT: QEMU audio option (e.g. "-soundhw ac97,es1370"), which is used |
| 208 | when QB_AUDIO_DRV is set. |
| 209 | QB_KERNEL_ROOT: Kernel's root (e.g. /dev/vda) |
| 210 | QB_TAP_OPT: Network option for 'tap' mode (e.g. |
| 211 | "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no -device virtio-net-device,netdev=net0"). |
| 212 | runqemu will replace "@TAP@" with the one that is used, such as tap0, tap1 ... |
| 213 | QB_SLIRP_OPT: Network option for SLIRP mode (e.g. "-netdev user,id=net0 -device virtio-net-device,netdev=net0") |
| 214 | QB_ROOTFS_OPT: Used as rootfs (e.g. |
| 215 | "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0"). |
| 216 | runqemu will replace "@ROOTFS@" with the one which is used, such as |
| 217 | core-image-minimal-qemuarm64.ext4. |
| 218 | QB_SERIAL_OPT: Serial port (e.g. "-serial mon:stdio") |
| 219 | QB_TCPSERIAL_OPT: tcp serial port option (e.g. |
| 220 | " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon" |
| 221 | runqemu will replace "@PORT@" with the port number which is used. |
| 222 | |
| 223 | To use ``runqemu``, set :term:`IMAGE_CLASSES` as |
| 224 | follows and run ``runqemu``: |
| 225 | |
| 226 | .. note:: |
| 227 | |
Andrew Geissler | 4c19ea1 | 2020-10-27 13:52:24 -0500 | [diff] [blame] | 228 | For command-line syntax, use ``runqemu help``. |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 229 | |
| 230 | :: |
| 231 | |
| 232 | IMAGE_CLASSES += "qemuboot" |
| 233 | |
| 234 | .. _migration-2.2-default-linker-hash-style-changed: |
| 235 | |
| 236 | Default Linker Hash Style Changed |
| 237 | --------------------------------- |
| 238 | |
| 239 | The default linker hash style for ``gcc-cross`` is now "sysv" in order |
| 240 | to catch recipes that are building software without using the |
| 241 | OpenEmbedded :term:`LDFLAGS`. This change could result in |
| 242 | seeing some "No GNU_HASH in the elf binary" QA issues when building such |
| 243 | recipes. You need to fix these recipes so that they use the expected |
| 244 | ``LDFLAGS``. Depending on how the software is built, the build system |
| 245 | used by the software (e.g. a Makefile) might need to be patched. |
| 246 | However, sometimes making this fix is as simple as adding the following |
| 247 | to the recipe: |
| 248 | :: |
| 249 | |
| 250 | TARGET_CC_ARCH += "${LDFLAGS}" |
| 251 | |
| 252 | .. _migration-2.2-kernel-image-base-name-no-longer-uses-kernel-imagetype: |
| 253 | |
| 254 | ``KERNEL_IMAGE_BASE_NAME`` no Longer Uses ``KERNEL_IMAGETYPE`` |
| 255 | -------------------------------------------------------------- |
| 256 | |
| 257 | The ``KERNEL_IMAGE_BASE_NAME`` variable no longer uses the |
| 258 | :term:`KERNEL_IMAGETYPE` variable to create the |
| 259 | image's base name. Because the OpenEmbedded build system can now build |
| 260 | multiple kernel image types, this part of the kernel image base name as |
| 261 | been removed leaving only the following: |
| 262 | :: |
| 263 | |
| 264 | KERNEL_IMAGE_BASE_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}" |
| 265 | |
| 266 | If you have recipes or |
| 267 | classes that use ``KERNEL_IMAGE_BASE_NAME`` directly, you might need to |
| 268 | update the references to ensure they continue to work. |
| 269 | |
| 270 | .. _migration-2.2-bitbake-changes: |
| 271 | |
| 272 | BitBake Changes |
| 273 | --------------- |
| 274 | |
| 275 | The following changes took place for BitBake: |
| 276 | |
| 277 | - The "goggle" UI and standalone image-writer tool have been removed as |
| 278 | they both require GTK+ 2.0 and were not being maintained. |
| 279 | |
| 280 | - The Perforce fetcher now supports :term:`SRCREV` for |
| 281 | specifying the source revision to use, be it |
| 282 | ``${``\ :term:`AUTOREV`\ ``}``, changelist number, |
| 283 | p4date, or label, in preference to separate |
| 284 | :term:`SRC_URI` parameters to specify these. This |
| 285 | change is more in-line with how the other fetchers work for source |
| 286 | control systems. Recipes that fetch from Perforce will need to be |
| 287 | updated to use ``SRCREV`` in place of specifying the source revision |
| 288 | within ``SRC_URI``. |
| 289 | |
| 290 | - Some of BitBake's internal code structures for accessing the recipe |
| 291 | cache needed to be changed to support the new multi-configuration |
| 292 | functionality. These changes will affect external tools that use |
| 293 | BitBake's tinfoil module. For information on these changes, see the |
| 294 | changes made to the scripts supplied with OpenEmbedded-Core: |
Andrew Geissler | 09209ee | 2020-12-13 08:44:15 -0600 | [diff] [blame] | 295 | :yocto_git:`1 </poky/commit/?id=189371f8393971d00bca0fceffd67cc07784f6ee>` |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 296 | and |
Andrew Geissler | 09209ee | 2020-12-13 08:44:15 -0600 | [diff] [blame] | 297 | :yocto_git:`2 </poky/commit/?id=4a5aa7ea4d07c2c90a1654b174873abb018acc67>`. |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 298 | |
| 299 | - The task management code has been rewritten to avoid using ID |
| 300 | indirection in order to improve performance. This change is unlikely |
| 301 | to cause any problems for most users. However, the setscene |
| 302 | verification function as pointed to by |
| 303 | ``BB_SETSCENE_VERIFY_FUNCTION`` needed to change signature. |
| 304 | Consequently, a new variable named ``BB_SETSCENE_VERIFY_FUNCTION2`` |
| 305 | has been added allowing multiple versions of BitBake to work with |
| 306 | suitably written metadata, which includes OpenEmbedded-Core and Poky. |
| 307 | Anyone with custom BitBake task scheduler code might also need to |
| 308 | update the code to handle the new structure. |
| 309 | |
| 310 | .. _migration-2.2-swabber-has-been-removed: |
| 311 | |
| 312 | Swabber has Been Removed |
| 313 | ------------------------ |
| 314 | |
| 315 | Swabber, a tool that was intended to detect host contamination in the |
| 316 | build process, has been removed, as it has been unmaintained and unused |
| 317 | for some time and was never particularly effective. The OpenEmbedded |
| 318 | build system has since incorporated a number of mechanisms including |
| 319 | enhanced QA checks that mean that there is less of a need for such a |
| 320 | tool. |
| 321 | |
| 322 | .. _migration-2.2-removed-recipes: |
| 323 | |
| 324 | Removed Recipes |
| 325 | --------------- |
| 326 | |
| 327 | The following recipes have been removed: |
| 328 | |
| 329 | - ``augeas``: No longer needed and has been moved to ``meta-oe``. |
| 330 | |
| 331 | - ``directfb``: Unmaintained and has been moved to ``meta-oe``. |
| 332 | |
| 333 | - ``gcc``: Removed 4.9 version. Versions 5.4 and 6.2 are still present. |
| 334 | |
| 335 | - ``gnome-doc-utils``: No longer needed. |
| 336 | |
| 337 | - ``gtk-doc-stub``: Replaced by ``gtk-doc``. |
| 338 | |
| 339 | - ``gtk-engines``: No longer needed and has been moved to |
| 340 | ``meta-gnome``. |
| 341 | |
| 342 | - ``gtk-sato-engine``: Became obsolete. |
| 343 | |
| 344 | - ``libglade``: No longer needed and has been moved to ``meta-oe``. |
| 345 | |
| 346 | - ``libmad``: Unmaintained and functionally replaced by ``libmpg123``. |
| 347 | ``libmad`` has been moved to ``meta-oe``. |
| 348 | |
| 349 | - ``libowl``: Became obsolete. |
| 350 | |
| 351 | - ``libxsettings-client``: No longer needed. |
| 352 | |
| 353 | - ``oh-puzzles``: Functionally replaced by ``puzzles``. |
| 354 | |
| 355 | - ``oprofileui``: Became obsolete. OProfile has been largely supplanted |
| 356 | by perf. |
| 357 | |
| 358 | - ``packagegroup-core-directfb.bb``: Removed. |
| 359 | |
| 360 | - ``core-image-directfb.bb``: Removed. |
| 361 | |
| 362 | - ``pointercal``: No longer needed and has been moved to ``meta-oe``. |
| 363 | |
| 364 | - ``python-imaging``: No longer needed and moved to ``meta-python`` |
| 365 | |
| 366 | - ``python-pyrex``: No longer needed and moved to ``meta-python``. |
| 367 | |
| 368 | - ``sato-icon-theme``: Became obsolete. |
| 369 | |
| 370 | - ``swabber-native``: Swabber has been removed. See the `entry on |
Andrew Geissler | 4c19ea1 | 2020-10-27 13:52:24 -0500 | [diff] [blame] | 371 | Swabber <#swabber-has-been-removed>`__. |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 372 | |
| 373 | - ``tslib``: No longer needed and has been moved to ``meta-oe``. |
| 374 | |
| 375 | - ``uclibc``: Removed in favor of musl. |
| 376 | |
| 377 | - ``xtscal``: No longer needed and moved to ``meta-oe`` |
| 378 | |
| 379 | .. _migration-2.2-removed-classes: |
| 380 | |
| 381 | Removed Classes |
| 382 | --------------- |
| 383 | |
| 384 | The following classes have been removed: |
| 385 | |
| 386 | - ``distutils-native-base``: No longer needed. |
| 387 | |
| 388 | - ``distutils3-native-base``: No longer needed. |
| 389 | |
| 390 | - ``sdl``: Only set :term:`DEPENDS` and |
| 391 | :term:`SECTION`, which are better set within the |
| 392 | recipe instead. |
| 393 | |
| 394 | - ``sip``: Mostly unused. |
| 395 | |
| 396 | - ``swabber``: See the `entry on |
Andrew Geissler | 4c19ea1 | 2020-10-27 13:52:24 -0500 | [diff] [blame] | 397 | Swabber <#swabber-has-been-removed>`__. |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 398 | |
| 399 | .. _migration-2.2-minor-packaging-changes: |
| 400 | |
| 401 | Minor Packaging Changes |
| 402 | ----------------------- |
| 403 | |
| 404 | The following minor packaging changes have occurred: |
| 405 | |
| 406 | - ``grub``: Split ``grub-editenv`` into its own package. |
| 407 | |
| 408 | - ``systemd``: Split container and vm related units into a new package, |
| 409 | systemd-container. |
| 410 | |
| 411 | - ``util-linux``: Moved ``prlimit`` to a separate |
| 412 | ``util-linux-prlimit`` package. |
| 413 | |
| 414 | .. _migration-2.2-miscellaneous-changes: |
| 415 | |
| 416 | Miscellaneous Changes |
| 417 | --------------------- |
| 418 | |
| 419 | The following miscellaneous changes have occurred: |
| 420 | |
| 421 | - ``package_regex.inc``: Removed because the definitions |
| 422 | ``package_regex.inc`` previously contained have been moved to their |
| 423 | respective recipes. |
| 424 | |
| 425 | - Both ``devtool add`` and ``recipetool create`` now use a fixed |
| 426 | :term:`SRCREV` by default when fetching from a Git |
| 427 | repository. You can override this in either case to use |
| 428 | ``${``\ :term:`AUTOREV`\ ``}`` instead by using the |
| 429 | ``-a`` or ``DASHDASHautorev`` command-line option |
| 430 | |
| 431 | - ``distcc``: GTK+ UI is now disabled by default. |
| 432 | |
| 433 | - ``packagegroup-core-tools-testapps``: Removed Piglit. |
| 434 | |
| 435 | - ``image.bbclass``: Renamed COMPRESS(ION) to CONVERSION. This change |
| 436 | means that ``COMPRESSIONTYPES``, ``COMPRESS_DEPENDS`` and |
| 437 | ``COMPRESS_CMD`` are deprecated in favor of ``CONVERSIONTYPES``, |
| 438 | ``CONVERSION_DEPENDS`` and ``CONVERSION_CMD``. The ``COMPRESS*`` |
| 439 | variable names will still work in the 2.2 release but metadata that |
| 440 | does not need to be backwards-compatible should be changed to use the |
| 441 | new names as the ``COMPRESS*`` ones will be removed in a future |
| 442 | release. |
| 443 | |
| 444 | - ``gtk-doc``: A full version of ``gtk-doc`` is now made available. |
| 445 | However, some old software might not be capable of using the current |
| 446 | version of ``gtk-doc`` to build documentation. You need to change |
| 447 | recipes that build such software so that they explicitly disable |
| 448 | building documentation with ``gtk-doc``. |
| 449 | |
| 450 | |