xref: /openbmc/openbmc/poky/documentation/migration-guides/migration-3.0.rst (revision da295319aa739dfa657fb4a1ba7e81804ba48658)
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Release 3.0 (zeus)
4==================
5
6This section provides migration information for moving to the Yocto
7Project 3.0 Release (codename "zeus") from the prior release.
8
9.. _migration-3.0-init-system-selection:
10
11Init System Selection
12---------------------
13
14Changing the init system manager previously required setting a number of
15different variables. You can now change the manager by setting the
16``INIT_MANAGER`` variable and the corresponding include files (i.e.
17``conf/distro/include/init-manager-*.conf``). Include files are provided
18for four values: "none", "sysvinit", "systemd", and "mdev-busybox". The
19default value, "none", for ``INIT_MANAGER`` should allow your current
20settings to continue working. However, it is advisable to explicitly set
21``INIT_MANAGER``.
22
23.. _migration-3.0-lsb-support-removed:
24
25LSB Support Removed
26-------------------
27
28Linux Standard Base (LSB) as a standard is not current, and is not well
29suited for embedded applications. Support can be continued in a separate
30layer if needed. However, presently LSB support has been removed from
31the core.
32
33As a result of this change, the ``poky-lsb`` derivative distribution
34configuration that was also used for testing alternative configurations
35has been replaced with a ``poky-altcfg`` distribution that has LSB parts
36removed.
37
38.. _migration-3.0-removed-recipes:
39
40Removed Recipes
41---------------
42
43The following recipes have been removed.
44
45-  ``core-image-lsb-dev``: Part of removed LSB support.
46
47-  ``core-image-lsb``: Part of removed LSB support.
48
49-  ``core-image-lsb-sdk``: Part of removed LSB support.
50
51-  ``cve-check-tool``: Functionally replaced by the ``cve-update-db``
52   recipe and :ref:`ref-classes-cve-check` class.
53
54-  ``eglinfo``: No longer maintained. ``eglinfo`` from ``mesa-demos`` is
55   an adequate and maintained alternative.
56
57-  ``gcc-8.3``: Version 8.3 removed. Replaced by 9.2.
58
59-  ``gnome-themes-standard``: Only needed by gtk+ 2.x, which has been
60   removed.
61
62-  ``gtk+``: GTK+ 2 is obsolete and has been replaced by gtk+3.
63
64-  ``irda-utils``: Has become obsolete. IrDA support has been removed
65   from the Linux kernel in version 4.17 and later.
66
67-  ``libnewt-python``: ``libnewt`` Python support merged into main
68   ``libnewt`` recipe.
69
70-  ``libsdl``: Replaced by newer ``libsdl2``.
71
72-  ``libx11-diet``: Became obsolete.
73
74-  ``libxx86dga``: Removed obsolete client library.
75
76-  ``libxx86misc``: Removed. Library is redundant.
77
78-  ``linux-yocto``: Version 5.0 removed, which is now redundant (5.2 /
79   4.19 present).
80
81-  ``lsbinitscripts``: Part of removed LSB support.
82
83-  ``lsb``: Part of removed LSB support.
84
85-  ``lsbtest``: Part of removed LSB support.
86
87-  ``openssl10``: Replaced by newer ``openssl`` version 1.1.
88
89-  ``packagegroup-core-lsb``: Part of removed LSB support.
90
91-  ``python-nose``: Removed the Python 2.x version of the recipe.
92
93-  ``python-numpy``: Removed the Python 2.x version of the recipe.
94
95-  ``python-scons``: Removed the Python 2.x version of the recipe.
96
97-  ``source-highlight``: No longer needed.
98
99-  ``stress``: Replaced by ``stress-ng``.
100
101-  ``vulkan``: Split into ``vulkan-loader``, ``vulkan-headers``, and
102   ``vulkan-tools``.
103
104-  ``weston-conf``: Functionality moved to ``weston-init``.
105
106.. _migration-3.0-packaging-changes:
107
108Packaging Changes
109-----------------
110
111The following packaging changes have occurred.
112
113-  The :wikipedia:`Epiphany <GNOME_Web>` browser
114   has been dropped from ``packagegroup-self-hosted`` as it has not been
115   needed inside ``build-appliance-image`` for quite some time and was
116   causing resource problems.
117
118-  ``libcap-ng`` Python support has been moved to a separate
119   ``libcap-ng-python`` recipe to streamline the build process when the
120   Python bindings are not needed.
121
122-  ``libdrm`` now packages the file ``amdgpu.ids`` into a separate
123   ``libdrm-amdgpu`` package.
124
125-  ``python3``: The ``runpy`` module is now in the ``python3-core``
126   package as it is required to support the common "python3 -m" command
127   usage.
128
129-  ``distcc`` now provides separate ``distcc-client`` and
130   ``distcc-server`` packages as typically one or the other are needed,
131   rather than both.
132
133-  ``python*-setuptools`` recipes now separately package the
134   ``pkg_resources`` module in a ``python-pkg-resources`` /
135   ``python3-pkg-resources`` package as the module is useful independent
136   of the rest of the setuptools package. The main ``python-setuptools``
137   / ``python3-setuptools`` package depends on this new package so you
138   should only need to update dependencies unless you want to take
139   advantage of the increased granularity.
140
141.. _migration-3.0-cve-checking:
142
143CVE Checking
144------------
145
146``cve-check-tool`` has been functionally replaced by a new
147``cve-update-db`` recipe and functionality built into the :ref:`ref-classes-cve-check`
148class. The result uses NVD JSON data feeds rather than the deprecated
149XML feeds that ``cve-check-tool`` was using, supports CVSSv3 scoring,
150and makes other improvements.
151
152Additionally, the ``CVE_CHECK_CVE_WHITELIST`` variable has been replaced
153by ``CVE_CHECK_WHITELIST`` (replaced by :term:`CVE_CHECK_IGNORE` in version 4.0).
154
155.. _migration-3.0-bitbake-changes:
156
157BitBake Changes
158---------------
159
160The following BitBake changes have occurred.
161
162-  ``addtask`` statements now properly validate dependent tasks.
163   Previously, an invalid task was silently ignored. With this change,
164   the invalid task generates a warning.
165
166-  Other invalid ``addtask`` and ``deltask`` usages now trigger these
167   warnings: "multiple target tasks arguments with addtask / deltask",
168   and "multiple before/after clauses".
169
170-  The "multiconfig" prefix is now shortened to "mc". "multiconfig" will
171   continue to work, however it may be removed in a future release.
172
173-  The ``bitbake -g`` command no longer generates a
174   ``recipe-depends.dot`` file as the contents (i.e. a reprocessed
175   version of ``task-depends.dot``) were confusing.
176
177-  The ``bb.build.FuncFailed`` exception, previously raised by
178   ``bb.build.exec_func()`` when certain other exceptions have occurred,
179   has been removed. The real underlying exceptions will be raised
180   instead. If you have calls to ``bb.build.exec_func()`` in custom
181   classes or ``tinfoil-using`` scripts, any references to
182   ``bb.build.FuncFailed`` should be cleaned up.
183
184-  Additionally, the ``bb.build.exec_func()`` no longer accepts the
185   "pythonexception" parameter. The function now always raises
186   exceptions. Remove this argument in any calls to
187   ``bb.build.exec_func()`` in custom classes or scripts.
188
189-  The ``BB_SETSCENE_VERIFY_FUNCTION2`` variable is no longer used. In
190   the unlikely event that you have any references to it, they should be
191   removed.
192
193-  The ``RunQueueExecuteScenequeue`` and ``RunQueueExecuteTasks`` events
194   have been removed since setscene tasks are now executed as part of
195   the normal runqueue. Any event handling code in custom classes or
196   scripts that handles these two events need to be updated.
197
198-  The arguments passed to functions used with
199   :term:`BB_HASHCHECK_FUNCTION`
200   have changed. If you are using your own custom hash check function,
201   see :yocto_git:`/poky/commit/?id=40a5e193c4ba45c928fccd899415ea56b5417725`
202   for details.
203
204-  Task specifications in ``BB_TASKDEPDATA`` and class implementations
205   used in signature generator classes now use "<fn>:<task>" everywhere
206   rather than the "." delimiter that was being used in some places.
207   This change makes it consistent with all areas in the code. Custom
208   signature generator classes and code that reads ``BB_TASKDEPDATA``
209   need to be updated to use ':' as a separator rather than '.'.
210
211.. _migration-3.0-sanity-checks:
212
213Sanity Checks
214-------------
215
216The following sanity check changes occurred.
217
218-  :term:`SRC_URI` is now checked for usage of two
219   problematic items:
220
221   -  "${PN}" prefix/suffix use --- warnings always appear if ${PN} is
222      used. You must fix the issue regardless of whether multiconfig or
223      anything else that would cause prefixing/suffixing to happen.
224
225   -  Github archive tarballs --- these are not guaranteed to be stable.
226      Consequently, it is likely that the tarballs will be refreshed and
227      thus the :term:`SRC_URI` checksums will fail to apply. It is recommended
228      that you fetch either an official release tarball or a specific
229      revision from the actual Git repository instead.
230
231   Either one of these items now trigger a warning by default. If you
232   wish to disable this check, remove ``src-uri-bad`` from
233   :term:`WARN_QA`.
234
235-  The ``file-rdeps`` runtime dependency check no longer expands
236   :term:`RDEPENDS` recursively as there is no mechanism
237   to ensure they can be fully computed, and thus races sometimes result
238   in errors either showing up or not. Thus, you might now see errors
239   for missing runtime dependencies that were previously satisfied
240   recursively. Here is an example: package A contains a shell script
241   starting with ``#!/bin/bash`` but has no dependency on bash. However,
242   package A depends on package B, which does depend on bash. You need
243   to add the missing dependency or dependencies to resolve the warning.
244
245-  Setting ``DEPENDS_${PN}`` anywhere (i.e. typically in a recipe) now
246   triggers an error. The error is triggered because
247   :term:`DEPENDS` is not a package-specific variable
248   unlike RDEPENDS. You should set :term:`DEPENDS` instead.
249
250-  systemd currently does not work well with the musl C library because
251   only upstream officially supports linking the library with glibc.
252   Thus, a warning is shown when building systemd in conjunction with
253   musl.
254
255.. _migration-3.0-miscellaneous-changes:
256
257Miscellaneous Changes
258---------------------
259
260The following miscellaneous changes have occurred.
261
262-  The ``gnome`` class has been removed because it now does very little.
263   You should update recipes that previously inherited this class to do
264   the following::
265
266      inherit gnomebase gtk-icon-cache gconf mime
267
268-  The ``meta/recipes-kernel/linux/linux-dtb.inc`` file has been
269   removed. This file was previously deprecated in favor of setting
270   :term:`KERNEL_DEVICETREE` in any kernel
271   recipe and only produced a warning. Remove any ``include`` or
272   ``require`` statements pointing to this file.
273
274-  :term:`TARGET_CFLAGS`,
275   :term:`TARGET_CPPFLAGS`,
276   :term:`TARGET_CXXFLAGS`, and
277   :term:`TARGET_LDFLAGS` are no longer exported
278   to the external environment. This change did not require any changes
279   to core recipes, which is a good indicator that no changes will be
280   required. However, if for some reason the software being built by one
281   of your recipes is expecting these variables to be set, then building
282   the recipe will fail. In such cases, you must either export the
283   variable or variables in the recipe or change the scripts so that
284   exporting is not necessary.
285
286-  You must change the host distro identifier used in
287   :term:`NATIVELSBSTRING` to use all lowercase
288   characters even if it does not contain a version number. This change
289   is necessary only if you are not using
290   :ref:`ref-classes-uninative` and :term:`SANITY_TESTED_DISTROS`.
291
292-  In the ``base-files`` recipe, writing the hostname into
293   ``/etc/hosts`` and ``/etc/hostname`` is now done within the main
294   :ref:`ref-tasks-install` function rather than in the
295   ``do_install_basefilesissue`` function. The reason for the change is
296   because ``do_install_basefilesissue`` is more easily overridden
297   without having to duplicate the hostname functionality. If you have
298   done the latter (e.g. in a ``base-files`` bbappend), then you should
299   remove it from your customized ``do_install_basefilesissue``
300   function.
301
302-  The ``wic --expand`` command now uses commas to separate "key:value"
303   pairs rather than hyphens.
304
305   .. note::
306
307      The wic command-line help is not updated.
308
309   You must update any scripts or commands where you use
310   ``wic --expand`` with multiple "key:value" pairs.
311
312-  UEFI image variable settings have been moved from various places to a
313   central ``conf/image-uefi.conf``. This change should not influence
314   any existing configuration as the ``meta/conf/image-uefi.conf`` in
315   the core metadata sets defaults that can be overridden in the same
316   manner as before.
317
318-  ``conf/distro/include/world-broken.inc`` has been removed. For cases
319   where certain recipes need to be disabled when using the musl C
320   library, these recipes now have ``COMPATIBLE_HOST_libc-musl`` set
321   with a comment that explains why.
322
323
324