blob: dd21eb3baf89b1090ca7eccc7afeb9477bfe99ee [file] [log] [blame]
Andrew Geissler517393d2023-01-13 08:55:19 -06001.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
Andrew Geissler09036742021-06-25 14:25:14 -05003Release 2.6 (thud)
4==================
Andrew Geisslerc9f78652020-09-18 14:11:35 -05005
6This section provides migration information for moving to the Yocto
Andrew Geissler3b8a17c2021-04-15 15:55:55 -05007Project 2.6 Release (codename "thud") from the prior release.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05008
9.. _migration-2.6-gcc-changes:
10
11GCC 8.2 is Now Used by Default
12------------------------------
13
14The GNU Compiler Collection version 8.2 is now used by default for
15compilation. For more information on what has changed in the GCC 8.x
16release, see https://gcc.gnu.org/gcc-8/changes.html.
17
18If you still need to compile with version 7.x, GCC 7.3 is also provided.
19You can select this version by setting the and can be selected by
20setting the :term:`GCCVERSION` variable to "7.%" in
21your configuration.
22
23.. _migration-2.6-removed-recipes:
24
25Removed Recipes
26---------------
27
28The following recipes have been removed:
29
30- *beecrypt*: No longer needed since moving to RPM 4.
31- *bigreqsproto*: Replaced by ``xorgproto``.
32- *calibrateproto*: Removed in favor of ``xinput``.
33- *compositeproto*: Replaced by ``xorgproto``.
34- *damageproto*: Replaced by ``xorgproto``.
35- *dmxproto*: Replaced by ``xorgproto``.
36- *dri2proto*: Replaced by ``xorgproto``.
37- *dri3proto*: Replaced by ``xorgproto``.
38- *eee-acpi-scripts*: Became obsolete.
39- *fixesproto*: Replaced by ``xorgproto``.
40- *fontsproto*: Replaced by ``xorgproto``.
41- *fstests*: Became obsolete.
42- *gccmakedep*: No longer used.
43- *glproto*: Replaced by ``xorgproto``.
44- *gnome-desktop3*: No longer needed. This recipe has moved to ``meta-oe``.
45- *icon-naming-utils*: No longer used since the Sato theme was removed in 2016.
46- *inputproto*: Replaced by ``xorgproto``.
47- *kbproto*: Replaced by ``xorgproto``.
48- *libusb-compat*: Became obsolete.
49- *libuser*: Became obsolete.
50- *libnfsidmap*: No longer an external requirement since ``nfs-utils`` 2.2.1. ``libnfsidmap`` is now integrated.
51- *libxcalibrate*: No longer needed with ``xinput``
52- *mktemp*: Became obsolete. The ``mktemp`` command is provided by both ``busybox`` and ``coreutils``.
53- *ossp-uuid*: Is not being maintained and has mostly been replaced by ``uuid.h`` in ``util-linux``.
54- *pax-utils*: No longer needed. Previous QA tests that did use this recipe are now done at build time.
55- *pcmciautils*: Became obsolete.
56- *pixz*: No longer needed. ``xz`` now supports multi-threaded compression.
57- *presentproto*: Replaced by ``xorgproto``.
58- *randrproto*: Replaced by ``xorgproto``.
59- *recordproto*: Replaced by ``xorgproto``.
60- *renderproto*: Replaced by ``xorgproto``.
61- *resourceproto*: Replaced by ``xorgproto``.
62- *scrnsaverproto*: Replaced by ``xorgproto``.
63- *trace-cmd*: Became obsolete. ``perf`` replaced this recipe's functionally.
64- *videoproto*: Replaced by ``xorgproto``.
65- *wireless-tools*: Became obsolete. Superseded by ``iw``.
66- *xcmiscproto*: Replaced by ``xorgproto``.
67- *xextproto*: Replaced by ``xorgproto``.
68- *xf86dgaproto*: Replaced by ``xorgproto``.
69- *xf86driproto*: Replaced by ``xorgproto``.
70- *xf86miscproto*: Replaced by ``xorgproto``.
71- *xf86-video-omapfb*: Became obsolete. Use kernel modesetting driver instead.
72- *xf86-video-omap*: Became obsolete. Use kernel modesetting driver instead.
73- *xf86vidmodeproto*: Replaced by ``xorgproto``.
74- *xineramaproto*: Replaced by ``xorgproto``.
75- *xproto*: Replaced by ``xorgproto``.
76- *yasm*: No longer needed since previous usages are now satisfied by ``nasm``.
77
78.. _migration-2.6-packaging-changes:
79
80Packaging Changes
81-----------------
82
83The following packaging changes have been made:
84
85- *cmake*: ``cmake.m4`` and ``toolchain`` files have been moved to
86 the main package.
87
88- *iptables*: The ``iptables`` modules have been split into
89 separate packages.
90
91- *alsa-lib*: ``libasound`` is now in the main ``alsa-lib`` package
92 instead of ``libasound``.
93
94- *glibc*: ``libnss-db`` is now in its own package along with a
95 ``/var/db/makedbs.sh`` script to update databases.
96
97- *python and python3*: The main package has been removed from
98 the recipe. You must install specific packages or ``python-modules``
99 / ``python3-modules`` for everything.
100
101- *systemtap*: Moved ``systemtap-exporter`` into its own package.
102
103.. _migration-2.6-xorg-protocol-dependencies:
104
105XOrg Protocol dependencies
106--------------------------
107
108The ``*proto`` upstream repositories have been combined into one
109"xorgproto" repository. Thus, the corresponding recipes have also been
110combined into a single ``xorgproto`` recipe. Any recipes that depend
111upon the older ``*proto`` recipes need to be changed to depend on the
112newer ``xorgproto`` recipe instead.
113
114For names of recipes removed because of this repository change, see the
Andrew Geissler09036742021-06-25 14:25:14 -0500115:ref:`migration-guides/migration-2.6:removed recipes` section.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500116
117.. _migration-2.6-distutils-distutils3-fetching-dependencies:
118
119``distutils`` and ``distutils3`` Now Prevent Fetching Dependencies During the ``do_configure`` Task
120---------------------------------------------------------------------------------------------------
121
122Previously, it was possible for Python recipes that inherited the
Andrew Geissler9aee5002022-03-30 16:27:02 +0000123``distutils`` and ``distutils3`` classes to fetch code
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500124during the :ref:`ref-tasks-configure` task to satisfy
125dependencies mentioned in ``setup.py`` if those dependencies were not
126provided in the sysroot (i.e. recipes providing the dependencies were
127missing from :term:`DEPENDS`).
128
129.. note::
130
Andrew Geissler517393d2023-01-13 08:55:19 -0600131 This change affects classes beyond just the two mentioned (i.e. ``distutils``
132 and ``distutils3``). Any recipe that inherits ``distutils*`` classes are
133 affected. For example, the ``setuptools`` and :ref:`ref-classes-setuptools3`
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500134 recipes are affected since they inherit the ``distutils*`` classes.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500135
136Fetching these types of dependencies that are not provided in the
137sysroot negatively affects the ability to reproduce builds. This type of
138fetching is now explicitly disabled. Consequently, any missing
139dependencies in Python recipes that use these classes now result in an
Patrick Williams2194f502022-10-16 14:26:09 -0500140error during the :ref:`ref-tasks-configure` task.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500141
142.. _migration-2.6-linux-yocto-configuration-audit-issues-now-correctly-reported:
143
144``linux-yocto`` Configuration Audit Issues Now Correctly Reported
145-----------------------------------------------------------------
146
147Due to a bug, the kernel configuration audit functionality was not
148writing out any resulting warnings during the build. This issue is now
149corrected. You might notice these warnings now if you have a custom
150kernel configuration with a ``linux-yocto`` style kernel recipe.
151
152.. _migration-2.6-image-kernel-artifact-naming-changes:
153
154Image/Kernel Artifact Naming Changes
155------------------------------------
156
157The following changes have been made:
158
159- Name variables (e.g. :term:`IMAGE_NAME`) use a new
Andrew Geissler09036742021-06-25 14:25:14 -0500160 :term:`IMAGE_VERSION_SUFFIX` variable instead of
161 :term:`DATETIME`. Using :term:`IMAGE_VERSION_SUFFIX`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500162 allows easier and more direct changes.
163
Andrew Geissler09036742021-06-25 14:25:14 -0500164 The :term:`IMAGE_VERSION_SUFFIX` variable is set in the ``bitbake.conf``
Andrew Geisslerc926e172021-05-07 16:11:35 -0500165 configuration file as follows::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500166
167 IMAGE_VERSION_SUFFIX = "-${DATETIME}"
168
Andrew Geisslerc926e172021-05-07 16:11:35 -0500169- Several variables have changed names for consistency::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500170
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500171 Old Variable Name New Variable Name
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500172 ========================================================
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500173 KERNEL_IMAGE_BASE_NAME KERNEL_IMAGE_NAME
174 KERNEL_IMAGE_SYMLINK_NAME KERNEL_IMAGE_LINK_NAME
175 MODULE_TARBALL_BASE_NAME MODULE_TARBALL_NAME
176 MODULE_TARBALL_SYMLINK_NAME MODULE_TARBALL_LINK_NAME
177 INITRAMFS_BASE_NAME INITRAMFS_NAME
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500178
179- The ``MODULE_IMAGE_BASE_NAME`` variable has been removed. The module
180 tarball name is now controlled directly with the
181 :term:`MODULE_TARBALL_NAME` variable.
182
183- The :term:`KERNEL_DTB_NAME` and
184 :term:`KERNEL_DTB_LINK_NAME` variables
185 have been introduced to control kernel Device Tree Binary (DTB)
186 artifact names instead of mangling ``KERNEL_IMAGE_*`` variables.
187
188- The :term:`KERNEL_FIT_NAME` and
189 :term:`KERNEL_FIT_LINK_NAME` variables
190 have been introduced to specify the name of flattened image tree
191 (FIT) kernel images similar to other deployed artifacts.
192
193- The :term:`MODULE_TARBALL_NAME` and
194 :term:`MODULE_TARBALL_LINK_NAME`
195 variable values no longer include the "module-" prefix or ".tgz"
196 suffix. These parts are now hardcoded so that the values are
197 consistent with other artifact naming variables.
198
199- Added the :term:`INITRAMFS_LINK_NAME`
200 variable so that the symlink can be controlled similarly to other
201 artifact types.
202
203- :term:`INITRAMFS_NAME` now uses
204 "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}" instead
205 of "${PV}-${PR}-${MACHINE}-${DATETIME}", which makes it consistent
206 with other variables.
207
208.. _migration-2.6-serial-console-deprecated:
209
210``SERIAL_CONSOLE`` Deprecated
211-----------------------------
212
Andrew Geissler517393d2023-01-13 08:55:19 -0600213The ``SERIAL_CONSOLE`` variable has been functionally replaced by the
214:term:`SERIAL_CONSOLES` variable for some time. With the Yocto Project 2.6
215release, ``SERIAL_CONSOLE`` has been officially deprecated.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500216
Andrew Geissler517393d2023-01-13 08:55:19 -0600217``SERIAL_CONSOLE`` will continue to work as before for the 2.6 release.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500218However, for the sake of future compatibility, it is recommended that
Andrew Geissler517393d2023-01-13 08:55:19 -0600219you replace all instances of ``SERIAL_CONSOLE`` with :term:`SERIAL_CONSOLES`.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500220
221.. note::
222
Andrew Geissler09036742021-06-25 14:25:14 -0500223 The only difference in usage is that :term:`SERIAL_CONSOLES`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500224 expects entries to be separated using semicolons as compared to
Andrew Geissler517393d2023-01-13 08:55:19 -0600225 ``SERIAL_CONSOLE``, which expects spaces.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500226
227.. _migration-2.6-poky-sets-unknown-configure-option-to-qa-error:
228
229Configure Script Reports Unknown Options as Errors
230--------------------------------------------------
231
232If the configure script reports an unknown option, this now triggers a
233QA error instead of a warning. Any recipes that previously got away with
234specifying such unknown options now need to be fixed.
235
236.. _migration-2.6-override-changes:
237
238Override Changes
239----------------
240
241The following changes have occurred:
242
243- The ``virtclass-native`` and ``virtclass-nativesdk`` Overrides Have
244 Been Removed: The ``virtclass-native`` and ``virtclass-nativesdk``
245 overrides have been deprecated since 2012 in favor of
246 ``class-native`` and ``class-nativesdk``, respectively. Both
247 ``virtclass-native`` and ``virtclass-nativesdk`` are now dropped.
248
249 .. note::
250
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500251 The ``virtclass-multilib-`` overrides for multilib are still valid.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500252
253- The ``forcevariable`` Override Now Has a Higher Priority Than
254 ``libc`` Overrides: The ``forcevariable`` override is documented to
255 be the highest priority override. However, due to a long-standing
256 quirk of how :term:`OVERRIDES` is set, the ``libc``
257 overrides (e.g. ``libc-glibc``, ``libc-musl``, and so forth)
258 erroneously had a higher priority. This issue is now corrected.
259
260 It is likely this change will not cause any problems. However, it is
261 possible with some unusual configurations that you might see a change
262 in behavior if you were relying on the previous behavior. Be sure to
263 check how you use ``forcevariable`` and ``libc-*`` overrides in your
264 custom layers and configuration files to ensure they make sense.
265
266- The ``build-${BUILD_OS}`` Override Has Been Removed: The
267 ``build-${BUILD_OS}``, which is typically ``build-linux``, override
268 has been removed because building on a host operating system other
269 than a recent version of Linux is neither supported nor recommended.
270 Dropping the override avoids giving the impression that other host
271 operating systems might be supported.
272
273- The "_remove" operator now preserves whitespace. Consequently, when
274 specifying list items to remove, be aware that leading and trailing
275 whitespace resulting from the removal is retained.
276
Andrew Geisslerfc113ea2023-03-31 09:59:46 -0500277 See the ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:removal (override style syntax)`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500278 section in the BitBake User Manual for a detailed example.
279
280.. _migration-2.6-systemd-configuration-now-split-out-to-system-conf:
281
282``systemd`` Configuration is Now Split Into ``systemd-conf``
283------------------------------------------------------------
284
285The configuration for the ``systemd`` recipe has been moved into a
286``system-conf`` recipe. Moving this configuration to a separate recipe
287avoids the ``systemd`` recipe from becoming machine-specific for cases
288where machine-specific configurations need to be applied (e.g. for
289``qemu*`` machines).
290
Andrew Geisslerc926e172021-05-07 16:11:35 -0500291Currently, the new recipe packages the following files::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500292
293 ${sysconfdir}/machine-id
294 ${sysconfdir}/systemd/coredump.conf
295 ${sysconfdir}/systemd/journald.conf
296 ${sysconfdir}/systemd/logind.conf
297 ${sysconfdir}/systemd/system.conf
298 ${sysconfdir}/systemd/user.conf
299
300If you previously used bbappend files to append the ``systemd`` recipe to
301change any of the listed files, you must do so for the ``systemd-conf``
302recipe instead.
303
304.. _migration-2.6-automatic-testing-changes:
305
306Automatic Testing Changes
307-------------------------
308
309This section provides information about automatic testing changes:
310
311- ``TEST_IMAGE`` Variable Removed: Prior to this release, you set the
312 ``TEST_IMAGE`` variable to "1" to enable automatic testing for
313 successfully built images. The ``TEST_IMAGE`` variable no longer
314 exists and has been replaced by the
315 :term:`TESTIMAGE_AUTO` variable.
316
Andrew Geissler517393d2023-01-13 08:55:19 -0600317- Inheriting the :ref:`ref-classes-testimage` and :ref:`ref-classes-testsdk`
318 classes: best practices now dictate that you use the :term:`IMAGE_CLASSES`
319 variable rather than the :term:`INHERIT` variable when you inherit the
320 :ref:`ref-classes-testimage` and :ref:`ref-classes-testsdk` classes used
321 for automatic testing.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500322
323.. _migration-2.6-openssl-changes:
324
325OpenSSL Changes
326---------------
327
328`OpenSSL <https://www.openssl.org/>`__ has been upgraded from 1.0 to
3291.1. By default, this upgrade could cause problems for recipes that have
330both versions in their dependency chains. The problem is that both
331versions cannot be installed together at build time.
332
333.. note::
334
335 It is possible to have both versions of the library at runtime.
336
337.. _migration-2.6-bitbake-changes:
338
339BitBake Changes
340---------------
341
342The server logfile ``bitbake-cookerdaemon.log`` is now always placed in
Patrick Williams2390b1b2022-11-03 13:47:49 -0500343the :term:`Build Directory` instead of the current directory.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500344
345.. _migration-2.6-security-changes:
346
347Security Changes
348----------------
349
350The Poky distribution now uses security compiler flags by default.
351Inclusion of these flags could cause new failures due to stricter
352checking for various potential security issues in code.
353
354.. _migration-2.6-post-installation-changes:
355
356Post Installation Changes
357-------------------------
358
359You must explicitly mark post installs to defer to the target. If you
360want to explicitly defer a postinstall to first boot on the target
Andrew Geissler595f6302022-01-24 19:11:47 +0000361rather than at root filesystem creation time, use ``pkg_postinst_ontarget()`` or
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500362call ``postinst_intercept delay_to_first_boot`` from ``pkg_postinst()``.
363Any failure of a ``pkg_postinst()`` script (including exit 1) triggers
364an error during the :ref:`ref-tasks-rootfs` task.
365
366For more information on post-installation behavior, see the
Andrew Geissler517393d2023-01-13 08:55:19 -0600367":ref:`dev-manual/new-recipe:post-installation scripts`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500368section in the Yocto Project Development Tasks Manual.
369
370.. _migration-2.6-python-3-profile-guided-optimizations:
371
372Python 3 Profile-Guided Optimization
373------------------------------------
374
375The ``python3`` recipe now enables profile-guided optimization. Using
376this optimization requires a little extra build time in exchange for
377improved performance on the target at runtime. Additionally, the
378optimization is only enabled if the current
379:term:`MACHINE` has support for user-mode emulation in
380QEMU (i.e. "qemu-usermode" is in
381:term:`MACHINE_FEATURES`, which it is by
382default).
383
384If you wish to disable Python profile-guided optimization regardless of
Andrew Geissler09036742021-06-25 14:25:14 -0500385the value of :term:`MACHINE_FEATURES`, then ensure that
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500386:term:`PACKAGECONFIG` for the ``python3`` recipe
387does not contain "pgo". You could accomplish the latter using the
Andrew Geisslerc926e172021-05-07 16:11:35 -0500388following at the configuration level::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500389
390 PACKAGECONFIG_remove_pn-python3 = "pgo"
391
Andrew Geissler09036742021-06-25 14:25:14 -0500392Alternatively, you can set :term:`PACKAGECONFIG` using an append file
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500393for the ``python3`` recipe.
394
395.. _migration-2.6-miscellaneous-changes:
396
397Miscellaneous Changes
398---------------------
399
400The following miscellaneous changes occurred:
401
402- Default to using the Thumb-2 instruction set for armv7a and above. If
403 you have any custom recipes that build software that needs to be
404 built with the ARM instruction set, change the recipe to set the
Andrew Geisslerc926e172021-05-07 16:11:35 -0500405 instruction set as follows::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500406
407 ARM_INSTRUCTION_SET = "arm"
408
409- ``run-postinsts`` no longer uses ``/etc/*-postinsts`` for
410 ``dpkg/opkg`` in favor of built-in postinst support. RPM behavior
411 remains unchanged.
412
413- The ``NOISO`` and ``NOHDD`` variables are no longer used. You now
414 control building ``*.iso`` and ``*.hddimg`` image types directly by
415 using the :term:`IMAGE_FSTYPES` variable.
416
417- The ``scripts/contrib/mkefidisk.sh`` has been removed in favor of
418 Wic.
419
420- ``kernel-modules`` has been removed from
421 :term:`RRECOMMENDS` for ``qemumips`` and
422 ``qemumips64`` machines. Removal also impacts the ``x86-base.inc``
423 file.
424
425 .. note::
426
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500427 ``genericx86`` and ``genericx86-64`` retain ``kernel-modules`` as part of
Andrew Geissler5f350902021-07-23 13:09:54 -0400428 the :term:`RRECOMMENDS` variable setting.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500429
430- The ``LGPLv2_WHITELIST_GPL-3.0`` variable has been removed. If you
431 are setting this variable in your configuration, set or append it to
432 the ``WHITELIST_GPL-3.0`` variable instead.
433
434- ``${ASNEEDED}`` is now included in the
435 :term:`TARGET_LDFLAGS` variable directly. The
436 remaining definitions from ``meta/conf/distro/include/as-needed.inc``
437 have been moved to corresponding recipes.
438
439- Support for DSA host keys has been dropped from the OpenSSH recipes.
440 If you are still using DSA keys, you must switch over to a more
441 secure algorithm as recommended by OpenSSH upstream.
442
443- The ``dhcp`` recipe now uses the ``dhcpd6.conf`` configuration file
444 in ``dhcpd6.service`` for IPv6 DHCP rather than re-using
445 ``dhcpd.conf``, which is now reserved for IPv4.
446
447