123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- .. SPDX-License-Identifier: CC-BY-SA-2.0-UK
- Release 4.3 (nanbield)
- ========================
- Migration notes for 4.3 (nanbield)
- ------------------------------------
- This section provides migration information for moving to the Yocto
- Project 4.3 Release (codename "nanbield") from the prior release.
- .. _migration-4.3-supported-kernel-versions:
- Supported kernel versions
- ~~~~~~~~~~~~~~~~~~~~~~~~~
- The :term:`OLDEST_KERNEL` setting has been changed to "5.15" in this release, meaning that
- out the box, older kernels are not supported. There were two reasons for this.
- Firstly it allows glibc optimisations that improve the performance of the system
- by removing compatibility code and using modern kernel APIs exclusively. The second
- issue was this allows 64 bit time support even on 32 bit platforms and resolves Y2038
- issues.
- It is still possible to override this value and build for older kernels, this is just
- no longer the default supported configuration. This setting does not affect which
- kernel versions SDKs will run against and does not affect which versions of the kernel
- can be used to run builds.
- .. _migration-4.3-layername-override:
- Layername override implications
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Code can now know which layer a recipe is coming from through the newly added
- :term:`FILE_LAYERNAME` variable and the ``layer-<layername> override``. This is being used
- for enabling QA checks on a per layer basis. For existing code this has the
- side effect that the QA checks will apply to recipes being bbappended
- from other layers - for example, patches added through such bbappends will now
- need to have the "Upstream-Status" specified in the patch header.
- .. _migration-4.3-compiling-changes:
- Compiling changes
- ~~~~~~~~~~~~~~~~~
- - Code on 32 bit platforms is now compiled with largefile support and 64
- bit ``time_t``, to avoid the Y2038 time overflow issue. This breaks the ABI
- and could break existing programs in untested layers.
- .. _migration-4.3-supported-distributions:
- Supported distributions
- ~~~~~~~~~~~~~~~~~~~~~~~
- This release supports running BitBake on new GNU/Linux distributions:
- - Ubuntu 22.10
- - Fedora 38
- - Debian 12
- - CentOS Stream 8
- - AlmaLinux 8.8
- - AlmaLinux 9.2
- On the other hand, some earlier distributions are no longer supported:
- - Fedora 36
- - AlmaLinux 8.7
- - AlmaLinux 9.1
- See :ref:`all supported distributions <system-requirements-supported-distros>`.
- .. _migration-4.3-removed-machines:
- edgerouter machine removed
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
- The ``edgerouter`` reference BSP for the MIPS architecture in ``meta-yocto-bsp``
- has been removed as the hardware has been unavailable for some time. There is no
- suitable reference MIPS hardware to replace it with, but the MIPS architecture
- will continue to get coverage via QEMU build/boot testing.
- .. _migration-4.3-go-changes:
- Go language changes
- ~~~~~~~~~~~~~~~~~~~
- - Support for the Glide package manager has been removed, as ``go mod``
- has become the standard.
- .. _migration-4.3-systemd-changes:
- systemd changes
- ~~~~~~~~~~~~~~~
- Upstream systemd is now more strict on filesystem layout and the ``usrmerge``
- feature is therefore required alongside systemd. The Poky test configurations
- have been updated accordingly for systemd.
- .. _migration-4.3-recipe-changes:
- Recipe changes
- ~~~~~~~~~~~~~~
- - Runtime testing of ptest now fails if no test results are returned by
- any given ptest.
- .. _migration-4.3-deprecated-variables:
- Deprecated variables
- ~~~~~~~~~~~~~~~~~~~~
- The following variables have been deprecated:
- - :term:`CVE_CHECK_IGNORE`: use :term:`CVE_STATUS` instead.
- .. _migration-4.3-removed-variables:
- Removed variables
- ~~~~~~~~~~~~~~~~~
- The following variables have been removed:
- - ``AUTHOR``
- - ``PERLARCH``
- - ``PERLVERSION``
- - ``QEMU_USE_SLIRP`` - add ``slirp`` to ``TEST_RUNQEMUPARAMS`` instead.
- - ``SERIAL_CONSOLES_CHECK`` - no longer necessary because all
- consoles listed in :term:`SERIAL_CONSOLES` are checked for their existence
- before a ``getty`` is started.
- .. _migration-4.3-removed-recipes:
- Removed recipes
- ~~~~~~~~~~~~~~~
- The following recipes have been removed in this release:
- - ``apmd``: obsolete (``apm`` in :term:`MACHINE_FEATURES` also removed).
- - ``cve-update-db-native``: functionally replaced by ``cve-update-nvd2-native``
- - ``gcr3``: no longer needed by core recipes, moved to meta-gnome (gcr, i.e. version 4.x, is still provided).
- - ``glide``: as explained in :ref:`migration-4.3-go-changes`.
- - ``libdmx``: obsolete
- - ``linux-yocto`` version 5.15 (versions 6.1 and 6.5 provided instead).
- - ``python3-async``: obsolete - no longer needed by ``python3-gitdb`` or any other core recipe
- - ``rust-hello-world``: there are sufficient other Rust recipes and test cases such that this is no longer needed.
- .. _migration-4.3-removed-classes:
- Removed classes
- ~~~~~~~~~~~~~~~
- The following classes have been removed in this release:
- - ``glide``: as explained in :ref:`migration-4.3-go-changes`.
- Output file naming changes
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
- In 4.3 there are some minor differences in image and SDK output file names.
- If you rely on the existing naming (e.g. in external scripts) you may need to
- either modify configuration or adapt to the new naming. Further details:
- - :term:`IMAGE_NAME` and :term:`IMAGE_LINK_NAME` now include the
- :term:`IMAGE_NAME_SUFFIX` value directly. In practical terms, this means
- that ``.rootfs`` will now appear in image output file names. If you do not
- wish to have the ``.rootfs`` suffix used, you can just set
- :term:`IMAGE_NAME_SUFFIX` to "" and this will now be consistently respected
- in both the image file and image file symlink names. As part of this change,
- support for the ``imgsuffix`` task varflag has been dropped (mostly
- an internal implementation detail, but if you were implementing a custom
- image construction with a task in a similar manner to ``do_bootimg``
- you may have been using this).
- - :term:`SDK_NAME` now includes the values of :term:`IMAGE_BASENAME` and
- :term:`MACHINE` so that they are unique when building SDKs for different
- images and machines.
- .. _migration-4.3-pr-pe:
- Versioning changes
- ~~~~~~~~~~~~~~~~~~
- - :term:`PR` values have been removed from all core recipes - distro maintainers
- who make use of :term:`PR` values would need to curate these already so the
- sparsely set base values would not be that useful anymore. If you have been
- relying on these (i.e. you are maintaining a binary package feed where package
- versions should only ever increase), double-check the output (perhaps with the
- help of the :ref:`ref-classes-buildhistory` class) to ensure that package
- versions are consistent.
- - The :term:`PR` value can no longer be set from the recipe file name - this
- was rarely used, but in any case is no longer supported.
- - :term:`PE` and :term:`PR` are no longer included in the work directory path
- (:term:`WORKDIR`). This may break some tool assumptions about directory paths,
- but those should really be querying paths from the build system (or not poking
- into :term:`WORKDIR` externally).
- - Source revision information has been moved from :term:`PV` to :term:`PKGV`.
- The user visible effect of this change is that :term:`PV` will no longer have
- revision information in it and this will now be appended to the :term:`PV`
- value through :term:`PKGV` when the packages are written out (as long as "+"
- is present in the :term:`PKGV` value). Since :term:`PV` is used in
- :term:`STAMP` and :term:`WORKDIR`, you may notice small directory naming and
- stamp naming changes.
- - The :term:`SRCPV` variable is no longer needed in :term:`PV`, but since
- the default :term:`SRCPV` value is now "", using it is effectively now just a
- null operation - you can remove it (leaving behind the "+") , but it is not
- yet required to do so.
- .. _migration-4.3-qemu-changes:
- QEMU changes
- ~~~~~~~~~~~~
- - The ``runqemu`` script no longer systematically adds two serial ports
- (``--serial null`` and ``-serial mon:stdio``) to the QEMU emulated machine
- if the user already adds such ports through the ``QB_OPT_APPEND`` setting.
- If the user adds one port, only ``--serial null`` is added, and
- ``-serial mon:stdio`` is no longer passed. If the user adds more than one
- port, ``--serial null`` is no longer added either. This can break some
- existing QEMU based configurations expecting such serial ports to be added
- when ``runqemu`` is executed.
- This change was made to avoid exceeding two serial ports, which interferes
- with automated testing.
- - ``runqemu`` now uses the ``ip tuntap`` command instead of ``tunctl``, and
- thus ``tunctl`` is no longer built by the ``qemu-helper-native`` recipe; if
- for some reason you were calling ``tunctl`` directly from your own scripts
- you should switch to calling ``ip tuntap`` instead.
- .. _migration-4.3-misc-changes:
- Miscellaneous changes
- ~~~~~~~~~~~~~~~~~~~~~
- - The ``-crosssdk`` suffix and any :term:`MLPREFIX` were removed from
- ``virtual/XXX`` provider/dependencies where a ``PREFIX`` was used as well,
- as we don't need both and it made automated dependency rewriting
- unnecessarily complex. In general this only affects internal toolchain
- dependencies so isn't end user visible, but if for some reason you have
- custom classes or recipes that rely upon the old providers then you will
- need to update those.
|