aboutsummaryrefslogtreecommitdiffstats
path: root/documentation/migration-guides/migration-4.3.rst
blob: 17ea4e71276933455d388eeb048d37f7d3b0457b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
.. 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:

-  ``glide``, as explained in :ref:`migration-4.3-go-changes`.

.. _migration-4.3-removed-classes:

Removed classes
~~~~~~~~~~~~~~~

The following classes have been removed in this release:

.. _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.

.. _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.