poky/documentation/migration-guides/migration-2.4.rst
Quentin Schulz 5a6fb291ad docs: replace remaining `FOO by :term:FOO`
A few occurences appeared between the time the original patch was sent
and it was applied, this fixes it.

Also, the original patch didn't take into account lowercase terms, this
is now fixed, see module_autoload for example.

Finally, as is often the case with regexp, there was a typo in it that
didn't make it match as much as it should have.

The script that is used to do the replacement of ``FOO`` by :term:`FOO`
is the following Python code:

import re
from pathlib import Path
from runpy import run_module
import contextlib
import io
import sys

re_term = re.compile(r'variables.html#term-([a-zA-Z_0-9]*)')
terms = []
new_terms = set()

with contextlib.redirect_stdout(io.StringIO()) as f:
    run_module('sphinx.ext.intersphinx', run_name='__main__')

objects = f.getvalue()

match = re_term.search(objects)
while match:
    if match.group(1):
        terms.append(match.group(1))
    match = re_term.search(objects, match.end())

for rst in Path('.').rglob('*.rst'):
    with open(rst, 'r') as f:
        content = "".join(f.readlines())
    for term in terms:
        content = re.sub(r'``({})``(?!.*\s+[~=-]{{{:d},}})'.format(term, len(term)), r':term:`\1`', content)

    with open(rst, 'w') as f:
        f.write(content)

This script takes one argument as input: an objects.inv. Bitbake's can
be gotten from https://docs.yoctoproject.org/bitbake/objects.inv. The
objetcs.inv from the current git repo can be gotten from
documentation/_build/html/objetcs.inv after running `make html`.

Note that this excludes from replacement terms that appear in section
titles as it requires refs to be changed too. This can be automated too
if need be but right now it looks a bit confusing to have an anchor link
(for sections) also have a term/reference link in it. I am not sure this
is desired today.

This is the result of two runs of the aforementioned script, once with
Bitbake objects.inv and once with this repo's.

Fixes: ba49d9babfcb "docs: replace ``FOO`` by :term:`FOO` where possible"

(From yocto-docs rev: 1e1b0c4dd241b6657035172b1f7b5f341afa8b25)

Signed-off-by: Quentin Schulz <foss@0leil.net>
Reviewed-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-07-16 21:59:31 +01:00

328 lines
12 KiB
ReStructuredText

Release 2.4 (rocko)
===================
This section provides migration information for moving to the Yocto
Project 2.4 Release (codename "rocko") 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 :term:`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. :term:`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. :term:`RDEPENDS`) on the ``sushell`` package when "selinux" is in
:term:`DISTRO_FEATURES`.
- ``glib-2.0``: The ``glib-2.0`` package now has a recommended
runtime dependency (i.e. :term:`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 <ref-classes-kernel-devicetree>` class.
Functionality is automatically enabled for any recipe that inherits the
:ref:`kernel <ref-classes-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 <ref-classes-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 <bitbake:bitbake-user-manual/bitbake-user-manual-metadata: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_<type>[depends]`` has replaced ``IMAGE_DEPENDS_<type>``.
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.