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