Moving to the Yocto Project 2.4 Release ======================================= This section provides migration information for moving to the Yocto Project 2.4 Release from the prior release. .. _migration-2.4-memory-resident-mode: Memory Resident Mode -------------------- A persistent mode is now available in BitBake's default operation, replacing its previous "memory resident mode" (i.e. ``oe-init-build-env-memres``). Now you only need to set :term:`BB_SERVER_TIMEOUT` to a timeout (in seconds) and BitBake's server stays resident for that amount of time between invocations. The ``oe-init-build-env-memres`` script has been removed since a separate environment setup script is no longer needed. .. _migration-2.4-packaging-changes: Packaging Changes ----------------- This section provides information about packaging changes that have occurred: - ``python3`` Changes: - The main "python3" package now brings in all of the standard Python 3 distribution rather than a subset. This behavior matches what is expected based on traditional Linux distributions. If you wish to install a subset of Python 3, specify ``python-core`` plus one or more of the individual packages that are still produced. - ``python3``: The ``bz2.py``, ``lzma.py``, and ``_compression.py`` scripts have been moved from the ``python3-misc`` package to the ``python3-compression`` package. - ``binutils``: The ``libbfd`` library is now packaged in a separate "libbfd" package. This packaging saves space when certain tools (e.g. ``perf``) are installed. In such cases, the tools only need ``libbfd`` rather than all the packages in ``binutils``. - ``util-linux`` Changes: - The ``su`` program is now packaged in a separate "util-linux-su" package, which is only built when "pam" is listed in the :term:`DISTRO_FEATURES` variable. ``util-linux`` should not be installed unless it is needed because ``su`` is normally provided through the shadow file format. The main ``util-linux`` package has runtime dependencies (i.e. :term:`RDEPENDS`) on the ``util-linux-su`` package when "pam" is in ``DISTRO_FEATURES``. - The ``switch_root`` program is now packaged in a separate "util-linux-switch-root" package for small initramfs images that do not need the whole ``util-linux`` package or the busybox binary, which are both much larger than ``switch_root``. The main ``util-linux`` package has a recommended runtime dependency (i.e. :term:`RRECOMMENDS`) on the ``util-linux-switch-root`` package. - The ``ionice`` program is now packaged in a separate "util-linux-ionice" package. The main ``util-linux`` package has a recommended runtime dependency (i.e. ``RRECOMMENDS``) on the ``util-linux-ionice`` package. - ``initscripts``: The ``sushell`` program is now packaged in a separate "initscripts-sushell" package. This packaging change allows systems to pull ``sushell`` in when ``selinux`` is enabled. The change also eliminates needing to pull in the entire ``initscripts`` package. The main ``initscripts`` package has a runtime dependency (i.e. ``RDEPENDS``) on the ``sushell`` package when "selinux" is in ``DISTRO_FEATURES``. - ``glib-2.0``: The ``glib-2.0`` package now has a recommended runtime dependency (i.e. ``RRECOMMENDS``) on the ``shared-mime-info`` package, since large portions of GIO are not useful without the MIME database. You can remove the dependency by using the :term:`BAD_RECOMMENDATIONS` variable if ``shared-mime-info`` is too large and is not required. - *Go Standard Runtime:* The Go standard runtime has been split out from the main ``go`` recipe into a separate ``go-runtime`` recipe. .. _migration-2.4-removed-recipes: Removed Recipes --------------- The following recipes have been removed: - ``acpitests``: This recipe is not maintained. - ``autogen-native``: No longer required by Grub, oe-core, or meta-oe. - ``bdwgc``: Nothing in OpenEmbedded-Core requires this recipe. It has moved to meta-oe. - ``byacc``: This recipe was only needed by rpm 5.x and has moved to meta-oe. - ``gcc (5.4)``: The 5.4 series dropped the recipe in favor of 6.3 / 7.2. - ``gnome-common``: Deprecated upstream and no longer needed. - ``go-bootstrap-native``: Go 1.9 does its own bootstrapping so this recipe has been removed. - ``guile``: This recipe was only needed by ``autogen-native`` and ``remake``. The recipe is no longer needed by either of these programs. - ``libclass-isa-perl``: This recipe was previously needed for LSB 4, no longer needed. - ``libdumpvalue-perl``: This recipe was previously needed for LSB 4, no longer needed. - ``libenv-perl``: This recipe was previously needed for LSB 4, no longer needed. - ``libfile-checktree-perl``: This recipe was previously needed for LSB 4, no longer needed. - ``libi18n-collate-perl``: This recipe was previously needed for LSB 4, no longer needed. - ``libiconv``: This recipe was only needed for ``uclibc``, which was removed in the previous release. ``glibc`` and ``musl`` have their own implementations. ``meta-mingw`` still needs ``libiconv``, so it has been moved to ``meta-mingw``. - ``libpng12``: This recipe was previously needed for LSB. The current ``libpng`` is 1.6.x. - ``libpod-plainer-perl``: This recipe was previously needed for LSB 4, no longer needed. - ``linux-yocto (4.1)``: This recipe was removed in favor of 4.4, 4.9, 4.10 and 4.12. - ``mailx``: This recipe was previously only needed for LSB compatibility, and upstream is defunct. - ``mesa (git version only)``: The git version recipe was stale with respect to the release version. - ``ofono (git version only)``: The git version recipe was stale with respect to the release version. - ``portmap``: This recipe is obsolete and is superseded by ``rpcbind``. - ``python3-pygpgme``: This recipe is old and unmaintained. It was previously required by ``dnf``, which has switched to official ``gpgme`` Python bindings. - ``python-async``: This recipe has been removed in favor of the Python 3 version. - ``python-gitdb``: This recipe has been removed in favor of the Python 3 version. - ``python-git``: This recipe was removed in favor of the Python 3 version. - ``python-mako``: This recipe was removed in favor of the Python 3 version. - ``python-pexpect``: This recipe was removed in favor of the Python 3 version. - ``python-ptyprocess``: This recipe was removed in favor of Python the 3 version. - ``python-pycurl``: Nothing is using this recipe in OpenEmbedded-Core (i.e. ``meta-oe``). - ``python-six``: This recipe was removed in favor of the Python 3 version. - ``python-smmap``: This recipe was removed in favor of the Python 3 version. - ``remake``: Using ``remake`` as the provider of ``virtual/make`` is broken. Consequently, this recipe is not needed in OpenEmbedded-Core. .. _migration-2.4-kernel-device-tree-move: Kernel Device Tree Move ----------------------- Kernel Device Tree support is now easier to enable in a kernel recipe. The Device Tree code has moved to a :ref:`kernel-devicetree ` class. Functionality is automatically enabled for any recipe that inherits the :ref:`kernel ` class and sets the :term:`KERNEL_DEVICETREE` variable. The previous mechanism for doing this, ``meta/recipes-kernel/linux/linux-dtb.inc``, is still available to avoid breakage, but triggers a deprecation warning. Future releases of the Yocto Project will remove ``meta/recipes-kernel/linux/linux-dtb.inc``. It is advisable to remove any ``require`` statements that request ``meta/recipes-kernel/linux/linux-dtb.inc`` from any custom kernel recipes you might have. This will avoid breakage in post 2.4 releases. .. _migration-2.4-package-qa-changes: Package QA Changes ------------------ The following package QA changes took place: - The "unsafe-references-in-scripts" QA check has been removed. - If you refer to ``${COREBASE}/LICENSE`` within :term:`LIC_FILES_CHKSUM` you receive a warning because this file is a description of the license for OE-Core. Use ``${COMMON_LICENSE_DIR}/MIT`` if your recipe is MIT-licensed and you cannot use the preferred method of referring to a file within the source tree. .. _migration-2.4-readme-changes: ``README`` File Changes ----------------------- The following are changes to ``README`` files: - The main Poky ``README`` file has been moved to the ``meta-poky`` layer and has been renamed ``README.poky``. A symlink has been created so that references to the old location work. - The ``README.hardware`` file has been moved to ``meta-yocto-bsp``. A symlink has been created so that references to the old location work. - A ``README.qemu`` file has been created with coverage of the ``qemu*`` machines. .. _migration-2.4-miscellaneous-changes: Miscellaneous Changes --------------------- The following are additional changes: - The ``ROOTFS_PKGMANAGE_BOOTSTRAP`` variable and any references to it have been removed. You should remove this variable from any custom recipes. - The ``meta-yocto`` directory has been removed. .. note:: In the Yocto Project 2.1 release meta-yocto was renamed to meta-poky and the meta-yocto subdirectory remained to avoid breaking existing configurations. - The ``maintainers.inc`` file, which tracks maintainers by listing a primary person responsible for each recipe in OE-Core, has been moved from ``meta-poky`` to OE-Core (i.e. from ``meta-poky/conf/distro/include`` to ``meta/conf/distro/include``). - The :ref:`buildhistory ` class now makes a single commit per build rather than one commit per subdirectory in the repository. This behavior assumes the commits are enabled with :term:`BUILDHISTORY_COMMIT` = "1", which is typical. Previously, the ``buildhistory`` class made one commit per subdirectory in the repository in order to make it easier to see the changes for a particular subdirectory. To view a particular change, specify that subdirectory as the last parameter on the ``git show`` or ``git diff`` commands. - The ``x86-base.inc`` file, which is included by all x86-based machine configurations, now sets :term:`IMAGE_FSTYPES` using ``?=`` to "live" rather than appending with ``+=``. This change makes the default easier to override. - BitBake fires multiple "BuildStarted" events when multiconfig is enabled (one per configuration). For more information, see the ":ref:`Events `" section in the BitBake User Manual. - By default, the ``security_flags.inc`` file sets a :term:`GCCPIE` variable with an option to enable Position Independent Executables (PIE) within ``gcc``. Enabling PIE in the GNU C Compiler (GCC), makes Return Oriented Programming (ROP) attacks much more difficult to execute. - OE-Core now provides a ``bitbake-layers`` plugin that implements a "create-layer" subcommand. The implementation of this subcommand has resulted in the ``yocto-layer`` script being deprecated and will likely be removed in the next Yocto Project release. - The ``vmdk``, ``vdi``, and ``qcow2`` image file types are now used in conjunction with the "wic" image type through ``CONVERSION_CMD``. Consequently, the equivalent image types are now ``wic.vmdk``, ``wic.vdi``, and ``wic.qcow2``, respectively. - ``do_image_[depends]`` has replaced ``IMAGE_DEPENDS_``. If you have your own classes that implement custom image types, then you need to update them. - OpenSSL 1.1 has been introduced. However, the default is still 1.0.x through the :term:`PREFERRED_VERSION` variable. This preference is set is due to the remaining compatibility issues with other software. The :term:`PROVIDES` variable in the openssl 1.0 recipe now includes "openssl10" as a marker that can be used in :term:`DEPENDS` within recipes that build software that still depend on OpenSSL 1.0. - To ensure consistent behavior, BitBake's "-r" and "-R" options (i.e. prefile and postfile), which are used to read or post-read additional configuration files from the command line, now only affect the current BitBake command. Before these BitBake changes, these options would "stick" for future executions.