migration-4.3.rst 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. .. SPDX-License-Identifier: CC-BY-SA-2.0-UK
  2. Release 4.3 (nanbield)
  3. ========================
  4. Migration notes for 4.3 (nanbield)
  5. ------------------------------------
  6. This section provides migration information for moving to the Yocto
  7. Project 4.3 Release (codename "nanbield") from the prior release.
  8. .. _migration-4.3-supported-kernel-versions:
  9. Supported kernel versions
  10. ~~~~~~~~~~~~~~~~~~~~~~~~~
  11. The :term:`OLDEST_KERNEL` setting has been changed to "5.15" in this release, meaning that
  12. out the box, older kernels are not supported. There were two reasons for this.
  13. Firstly it allows glibc optimisations that improve the performance of the system
  14. by removing compatibility code and using modern kernel APIs exclusively. The second
  15. issue was this allows 64 bit time support even on 32 bit platforms and resolves Y2038
  16. issues.
  17. It is still possible to override this value and build for older kernels, this is just
  18. no longer the default supported configuration. This setting does not affect which
  19. kernel versions SDKs will run against and does not affect which versions of the kernel
  20. can be used to run builds.
  21. .. _migration-4.3-layername-override:
  22. Layername override implications
  23. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  24. Code can now know which layer a recipe is coming from through the newly added
  25. :term:`FILE_LAYERNAME` variable and the ``layer-<layername> override``. This is being used
  26. for enabling QA checks on a per layer basis. For existing code this has the
  27. side effect that the QA checks will apply to recipes being bbappended
  28. from other layers - for example, patches added through such bbappends will now
  29. need to have the "Upstream-Status" specified in the patch header.
  30. .. _migration-4.3-compiling-changes:
  31. Compiling changes
  32. ~~~~~~~~~~~~~~~~~
  33. - Code on 32 bit platforms is now compiled with largefile support and 64
  34. bit ``time_t``, to avoid the Y2038 time overflow issue. This breaks the ABI
  35. and could break existing programs in untested layers.
  36. .. _migration-4.3-supported-distributions:
  37. Supported distributions
  38. ~~~~~~~~~~~~~~~~~~~~~~~
  39. This release supports running BitBake on new GNU/Linux distributions:
  40. - Ubuntu 22.10
  41. - Fedora 38
  42. - Debian 12
  43. - CentOS Stream 8
  44. - AlmaLinux 8.8
  45. - AlmaLinux 9.2
  46. On the other hand, some earlier distributions are no longer supported:
  47. - Fedora 36
  48. - AlmaLinux 8.7
  49. - AlmaLinux 9.1
  50. See :ref:`all supported distributions <system-requirements-supported-distros>`.
  51. .. _migration-4.3-removed-machines:
  52. edgerouter machine removed
  53. ~~~~~~~~~~~~~~~~~~~~~~~~~~
  54. The ``edgerouter`` reference BSP for the MIPS architecture in ``meta-yocto-bsp``
  55. has been removed as the hardware has been unavailable for some time. There is no
  56. suitable reference MIPS hardware to replace it with, but the MIPS architecture
  57. will continue to get coverage via QEMU build/boot testing.
  58. .. _migration-4.3-go-changes:
  59. Go language changes
  60. ~~~~~~~~~~~~~~~~~~~
  61. - Support for the Glide package manager has been removed, as ``go mod``
  62. has become the standard.
  63. .. _migration-4.3-systemd-changes:
  64. systemd changes
  65. ~~~~~~~~~~~~~~~
  66. Upstream systemd is now more strict on filesystem layout and the ``usrmerge``
  67. feature is therefore required alongside systemd. The Poky test configurations
  68. have been updated accordingly for systemd.
  69. .. _migration-4.3-recipe-changes:
  70. Recipe changes
  71. ~~~~~~~~~~~~~~
  72. - Runtime testing of ptest now fails if no test results are returned by
  73. any given ptest.
  74. .. _migration-4.3-deprecated-variables:
  75. Deprecated variables
  76. ~~~~~~~~~~~~~~~~~~~~
  77. The following variables have been deprecated:
  78. - :term:`CVE_CHECK_IGNORE`: use :term:`CVE_STATUS` instead.
  79. .. _migration-4.3-removed-variables:
  80. Removed variables
  81. ~~~~~~~~~~~~~~~~~
  82. The following variables have been removed:
  83. - ``AUTHOR``
  84. - ``PERLARCH``
  85. - ``PERLVERSION``
  86. - ``QEMU_USE_SLIRP`` - add ``slirp`` to ``TEST_RUNQEMUPARAMS`` instead.
  87. - ``SERIAL_CONSOLES_CHECK`` - no longer necessary because all
  88. consoles listed in :term:`SERIAL_CONSOLES` are checked for their existence
  89. before a ``getty`` is started.
  90. .. _migration-4.3-removed-recipes:
  91. Removed recipes
  92. ~~~~~~~~~~~~~~~
  93. The following recipes have been removed in this release:
  94. - ``apmd``: obsolete (``apm`` in :term:`MACHINE_FEATURES` also removed).
  95. - ``cve-update-db-native``: functionally replaced by ``cve-update-nvd2-native``
  96. - ``gcr3``: no longer needed by core recipes, moved to meta-gnome (gcr, i.e. version 4.x, is still provided).
  97. - ``glide``: as explained in :ref:`migration-4.3-go-changes`.
  98. - ``libdmx``: obsolete
  99. - ``linux-yocto`` version 5.15 (versions 6.1 and 6.5 provided instead).
  100. - ``python3-async``: obsolete - no longer needed by ``python3-gitdb`` or any other core recipe
  101. - ``rust-hello-world``: there are sufficient other Rust recipes and test cases such that this is no longer needed.
  102. .. _migration-4.3-removed-classes:
  103. Removed classes
  104. ~~~~~~~~~~~~~~~
  105. The following classes have been removed in this release:
  106. - ``glide``: as explained in :ref:`migration-4.3-go-changes`.
  107. Output file naming changes
  108. ~~~~~~~~~~~~~~~~~~~~~~~~~~
  109. In 4.3 there are some minor differences in image and SDK output file names.
  110. If you rely on the existing naming (e.g. in external scripts) you may need to
  111. either modify configuration or adapt to the new naming. Further details:
  112. - :term:`IMAGE_NAME` and :term:`IMAGE_LINK_NAME` now include the
  113. :term:`IMAGE_NAME_SUFFIX` value directly. In practical terms, this means
  114. that ``.rootfs`` will now appear in image output file names. If you do not
  115. wish to have the ``.rootfs`` suffix used, you can just set
  116. :term:`IMAGE_NAME_SUFFIX` to "" and this will now be consistently respected
  117. in both the image file and image file symlink names. As part of this change,
  118. support for the ``imgsuffix`` task varflag has been dropped (mostly
  119. an internal implementation detail, but if you were implementing a custom
  120. image construction with a task in a similar manner to ``do_bootimg``
  121. you may have been using this).
  122. - :term:`SDK_NAME` now includes the values of :term:`IMAGE_BASENAME` and
  123. :term:`MACHINE` so that they are unique when building SDKs for different
  124. images and machines.
  125. .. _migration-4.3-pr-pe:
  126. Versioning changes
  127. ~~~~~~~~~~~~~~~~~~
  128. - :term:`PR` values have been removed from all core recipes - distro maintainers
  129. who make use of :term:`PR` values would need to curate these already so the
  130. sparsely set base values would not be that useful anymore. If you have been
  131. relying on these (i.e. you are maintaining a binary package feed where package
  132. versions should only ever increase), double-check the output (perhaps with the
  133. help of the :ref:`ref-classes-buildhistory` class) to ensure that package
  134. versions are consistent.
  135. - The :term:`PR` value can no longer be set from the recipe file name - this
  136. was rarely used, but in any case is no longer supported.
  137. - :term:`PE` and :term:`PR` are no longer included in the work directory path
  138. (:term:`WORKDIR`). This may break some tool assumptions about directory paths,
  139. but those should really be querying paths from the build system (or not poking
  140. into :term:`WORKDIR` externally).
  141. - Source revision information has been moved from :term:`PV` to :term:`PKGV`.
  142. The user visible effect of this change is that :term:`PV` will no longer have
  143. revision information in it and this will now be appended to the :term:`PV`
  144. value through :term:`PKGV` when the packages are written out (as long as "+"
  145. is present in the :term:`PKGV` value). Since :term:`PV` is used in
  146. :term:`STAMP` and :term:`WORKDIR`, you may notice small directory naming and
  147. stamp naming changes.
  148. - The :term:`SRCPV` variable is no longer needed in :term:`PV`, but since
  149. the default :term:`SRCPV` value is now "", using it is effectively now just a
  150. null operation - you can remove it (leaving behind the "+") , but it is not
  151. yet required to do so.
  152. .. _migration-4.3-qemu-changes:
  153. QEMU changes
  154. ~~~~~~~~~~~~
  155. - The ``runqemu`` script no longer systematically adds two serial ports
  156. (``--serial null`` and ``-serial mon:stdio``) to the QEMU emulated machine
  157. if the user already adds such ports through the ``QB_OPT_APPEND`` setting.
  158. If the user adds one port, only ``--serial null`` is added, and
  159. ``-serial mon:stdio`` is no longer passed. If the user adds more than one
  160. port, ``--serial null`` is no longer added either. This can break some
  161. existing QEMU based configurations expecting such serial ports to be added
  162. when ``runqemu`` is executed.
  163. This change was made to avoid exceeding two serial ports, which interferes
  164. with automated testing.
  165. - ``runqemu`` now uses the ``ip tuntap`` command instead of ``tunctl``, and
  166. thus ``tunctl`` is no longer built by the ``qemu-helper-native`` recipe; if
  167. for some reason you were calling ``tunctl`` directly from your own scripts
  168. you should switch to calling ``ip tuntap`` instead.
  169. .. _migration-4.3-misc-changes:
  170. Miscellaneous changes
  171. ~~~~~~~~~~~~~~~~~~~~~
  172. - The ``-crosssdk`` suffix and any :term:`MLPREFIX` were removed from
  173. ``virtual/XXX`` provider/dependencies where a ``PREFIX`` was used as well,
  174. as we don't need both and it made automated dependency rewriting
  175. unnecessarily complex. In general this only affects internal toolchain
  176. dependencies so isn't end user visible, but if for some reason you have
  177. custom classes or recipes that rely upon the old providers then you will
  178. need to update those.