1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Release 2.5 (sumo)
4==================
5
6This section provides migration information for moving to the Yocto
7Project 2.5 Release (codename "sumo") from the prior release.
8
9.. _migration-2.5-packaging-changes:
10
11Packaging Changes
12-----------------
13
14This section provides information about packaging changes that have
15occurred:
16
17-  ``bind-libs``: The libraries packaged by the bind recipe are in a
18   separate ``bind-libs`` package.
19
20-  ``libfm-gtk``: The ``libfm`` GTK+ bindings are split into a
21   separate ``libfm-gtk`` package.
22
23-  ``flex-libfl``: The flex recipe splits out libfl into a separate
24   ``flex-libfl`` package to avoid too many dependencies being pulled in
25   where only the library is needed.
26
27-  ``grub-efi``: The ``grub-efi`` configuration is split into a
28   separate ``grub-bootconf`` recipe. However, the dependency
29   relationship from ``grub-efi`` is through a virtual/grub-bootconf
30   provider making it possible to have your own recipe provide the
31   dependency. Alternatively, you can use a BitBake append file to bring
32   the configuration back into the ``grub-efi`` recipe.
33
34-  *armv7a Legacy Package Feed Support:* Legacy support is removed for
35   transitioning from ``armv7a`` to ``armv7a-vfp-neon`` in package
36   feeds, which was previously enabled by setting
37   ``PKGARCHCOMPAT_ARMV7A``. This transition occurred in 2011 and active
38   package feeds should by now be updated to the new naming.
39
40.. _migration-2.5-removed-recipes:
41
42Removed Recipes
43---------------
44
45The following recipes have been removed:
46
47-  ``gcc``: The version 6.4 recipes are replaced by 7.x.
48
49-  ``gst-player``: Renamed to ``gst-examples`` as per upstream.
50
51-  ``hostap-utils``: This software package is obsolete.
52
53-  ``latencytop``: This recipe is no longer maintained upstream. The
54   last release was in 2009.
55
56-  ``libpfm4``: The only file that requires this recipe is
57   ``oprofile``, which has been removed.
58
59-  ``linux-yocto``: The version 4.4, 4.9, and 4.10 recipes have been
60   removed. Versions 4.12, 4.14, and 4.15 remain.
61
62-  ``man``: This recipe has been replaced by modern ``man-db``
63
64-  ``mkelfimage``: This tool has been removed in the upstream coreboot
65   project, and is no longer needed with the removal of the ELF image
66   type.
67
68-  ``nativesdk-postinst-intercept``: This recipe is not maintained.
69
70-  ``neon``: This software package is no longer maintained upstream
71   and is no longer needed by anything in OpenEmbedded-Core.
72
73-  ``oprofile``: The functionality of this recipe is replaced by
74   ``perf`` and keeping compatibility on an ongoing basis with ``musl``
75   is difficult.
76
77-  ``pax``: This software package is obsolete.
78
79-  ``stat``: This software package is not maintained upstream.
80   ``coreutils`` provides a modern stat binary.
81
82-  ``zisofs-tools-native``: This recipe is no longer needed because
83   the compressed ISO image feature has been removed.
84
85.. _migration-2.5-scripts-and-tools-changes:
86
87Scripts and Tools Changes
88-------------------------
89
90-  ``yocto-bsp``, ``yocto-kernel``, and ``yocto-layer``: The
91   ``yocto-bsp``, ``yocto-kernel``, and ``yocto-layer`` scripts
92   previously shipped with poky but not in OpenEmbedded-Core have been
93   removed. These scripts are not maintained and are outdated. In many
94   cases, they are also limited in scope. The
95   ``bitbake-layers create-layer`` command is a direct replacement for
96   ``yocto-layer``. See the documentation to create a BSP or kernel
97   recipe in the ":ref:`bsp-guide/bsp:bsp kernel recipe example`" section.
98
99-  ``devtool finish``: ``devtool finish`` now exits with an error if
100   there are uncommitted changes or a rebase/am in progress in the
101   recipe's source repository. If this error occurs, there might be
102   uncommitted changes that will not be included in updates to the
103   patches applied by the recipe. A -f/--force option is provided for
104   situations that the uncommitted changes are inconsequential and you
105   want to proceed regardless.
106
107-  ``scripts/oe-setup-rpmrepo`` script: The functionality of
108   ``scripts/oe-setup-rpmrepo`` is replaced by
109   ``bitbake package-index``.
110
111-  ``scripts/test-dependencies.sh`` script: The script is largely made
112   obsolete by the recipe-specific sysroots functionality introduced in
113   the previous release.
114
115.. _migration-2.5-bitbake-changes:
116
117BitBake Changes
118---------------
119
120-  The ``--runall`` option has changed. There are two different
121   behaviors people might want:
122
123   -  *Behavior A:* For a given target (or set of targets) look through
124      the task graph and run task X only if it is present and will be
125      built.
126
127   -  *Behavior B:* For a given target (or set of targets) look through
128      the task graph and run task X if any recipe in the taskgraph has
129      such a target, even if it is not in the original task graph.
130
131   The ``--runall`` option now performs "Behavior B". Previously
132   ``--runall`` behaved like "Behavior A". A ``--runonly`` option has
133   been added to retain the ability to perform "Behavior A".
134
135-  Several explicit "run this task for all recipes in the dependency
136   tree" tasks have been removed (e.g. ``fetchall``, ``checkuriall``,
137   and the ``*all`` tasks provided by the ``distrodata`` and
138   :ref:`ref-classes-archiver` classes). There is a BitBake option to complete this for
139   any arbitrary task. For example::
140
141      bitbake <target> -c fetchall
142
143   should now be replaced with::
144
145      bitbake <target> --runall=fetch
146
147.. _migration-2.5-python-and-python3-changes:
148
149Python and Python 3 Changes
150---------------------------
151
152Here are auto-packaging changes to Python and Python 3:
153
154The script-managed ``python-*-manifest.inc`` files that were previously
155used to generate Python and Python 3 packages have been replaced with a
156JSON-based file that is easier to read and maintain. A new task is
157available for maintainers of the Python recipes to update the JSON file
158when upgrading to new Python versions. You can now edit the file
159directly instead of having to edit a script and run it to update the
160file.
161
162One particular change to note is that the Python recipes no longer have
163build-time provides for their packages. This assumes ``python-foo`` is
164one of the packages provided by the Python recipe. You can no longer run
165``bitbake python-foo`` or have a
166:term:`DEPENDS` on ``python-foo``,
167but doing either of the following causes the package to work as
168expected::
169
170   IMAGE_INSTALL_append = " python-foo"
171
172or ::
173
174   RDEPENDS_${PN} = "python-foo"
175
176The earlier build-time provides behavior was a quirk of the
177way the Python manifest file was created. For more information on this
178change please see :yocto_git:`this commit
179</poky/commit/?id=8d94b9db221d1def42f091b991903faa2d1651ce>`.
180
181.. _migration-2.5-miscellaneous-changes:
182
183Miscellaneous Changes
184---------------------
185
186-  The :ref:`ref-classes-kernel` class supports building packages for multiple kernels.
187   If your kernel recipe or ``.bbappend`` file mentions packaging at
188   all, you should replace references to the kernel in package names
189   with ``${KERNEL_PACKAGE_NAME}``. For example, if you disable
190   automatic installation of the kernel image using
191   ``RDEPENDS_kernel-base = ""`` you can avoid warnings using
192   ``RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""`` instead.
193
194-  The :ref:`ref-classes-buildhistory` class commits changes to the repository by
195   default so you no longer need to set ``BUILDHISTORY_COMMIT = "1"``.
196   If you want to disable commits you need to set
197   ``BUILDHISTORY_COMMIT = "0"`` in your configuration.
198
199-  The ``beaglebone`` reference machine has been renamed to
200   ``beaglebone-yocto``. The ``beaglebone-yocto`` BSP is a reference
201   implementation using only mainline components available in
202   OpenEmbedded-Core and ``meta-yocto-bsp``, whereas Texas Instruments
203   maintains a full-featured BSP in the ``meta-ti`` layer. This rename
204   avoids the previous name clash that existed between the two BSPs.
205
206-  The :ref:`ref-classes-update-alternatives` class no longer works with SysV ``init``
207   scripts because this usage has been problematic. Also, the
208   ``sysklogd`` recipe no longer uses ``update-alternatives`` because it
209   is incompatible with other implementations.
210
211-  By default, the :ref:`ref-classes-cmake` class uses
212   ``ninja`` instead of ``make`` for building. This improves build
213   performance. If a recipe is broken with ``ninja``, then the recipe
214   can set ``OECMAKE_GENERATOR = "Unix Makefiles"`` to change back to
215   ``make``.
216
217-  The previously deprecated ``base_*`` functions have been removed in
218   favor of their replacements in ``meta/lib/oe`` and
219   ``bitbake/lib/bb``. These are typically used from recipes and
220   classes. Any references to the old functions must be updated. The
221   following table shows the removed functions and their replacements:
222
223   +------------------------------+----------------------------------------------------------+
224   | *Removed*                    | *Replacement*                                            |
225   +==============================+==========================================================+
226   | base_path_join()             | oe.path.join()                                           |
227   +------------------------------+----------------------------------------------------------+
228   | base_path_relative()         | oe.path.relative()                                       |
229   +------------------------------+----------------------------------------------------------+
230   | base_path_out()              | oe.path.format_display()                                 |
231   +------------------------------+----------------------------------------------------------+
232   | base_read_file()             | oe.utils.read_file()                                     |
233   +------------------------------+----------------------------------------------------------+
234   | base_ifelse()                | oe.utils.ifelse()                                        |
235   +------------------------------+----------------------------------------------------------+
236   | base_conditional()           | oe.utils.conditional()                                   |
237   +------------------------------+----------------------------------------------------------+
238   | base_less_or_equal()         | oe.utils.less_or_equal()                                 |
239   +------------------------------+----------------------------------------------------------+
240   | base_version_less_or_equal() | oe.utils.version_less_or_equal()                         |
241   +------------------------------+----------------------------------------------------------+
242   | base_contains()              | bb.utils.contains()                                      |
243   +------------------------------+----------------------------------------------------------+
244   | base_both_contain()          | oe.utils.both_contain()                                  |
245   +------------------------------+----------------------------------------------------------+
246   | base_prune_suffix()          | oe.utils.prune_suffix()                                  |
247   +------------------------------+----------------------------------------------------------+
248   | oe_filter()                  | oe.utils.str_filter()                                    |
249   +------------------------------+----------------------------------------------------------+
250   | oe_filter_out()              | oe.utils.str_filter_out() (or use the \_remove operator) |
251   +------------------------------+----------------------------------------------------------+
252
253-  Using ``exit 1`` to explicitly defer a postinstall script until first
254   boot is now deprecated since it is not an obvious mechanism and can
255   mask actual errors. If you want to explicitly defer a postinstall to
256   first boot on the target rather than at ``rootfs`` creation time, use
257   ``pkg_postinst_ontarget()`` or call
258   ``postinst_intercept delay_to_first_boot`` from ``pkg_postinst()``.
259   Any failure of a ``pkg_postinst()`` script (including ``exit 1``)
260   will trigger a warning during :ref:`ref-tasks-rootfs`.
261
262   For more information, see the
263   ":ref:`dev-manual/new-recipe:post-installation scripts`"
264   section in the Yocto Project Development Tasks Manual.
265
266-  The ``elf`` image type has been removed. This image type was removed
267   because the ``mkelfimage`` tool that was required to create it is no
268   longer provided by coreboot upstream and required updating every time
269   ``binutils`` updated.
270
271-  Support for .iso image compression (previously enabled through
272   ``COMPRESSISO = "1"``) has been removed. The userspace tools
273   (``zisofs-tools``) are unmaintained and ``squashfs`` provides better
274   performance and compression. In order to build a live image with
275   squashfs+lz4 compression enabled you should now set
276   ``LIVE_ROOTFS_TYPE = "squashfs-lz4"`` and ensure that ``live`` is in
277   :term:`IMAGE_FSTYPES`.
278
279-  Recipes with an unconditional dependency on ``libpam`` are only
280   buildable with ``pam`` in :term:`DISTRO_FEATURES`. If the dependency is
281   truly optional then it is recommended that the dependency be
282   conditional upon ``pam`` being in :term:`DISTRO_FEATURES`.
283
284-  For EFI-based machines, the bootloader (``grub-efi`` by default) is
285   installed into the image at /boot. Wic can be used to split the
286   bootloader into separate boot and root filesystem partitions if necessary.
287
288-  Patches whose context does not match exactly (i.e. where patch
289   reports "fuzz" when applying) will generate a warning. For an example
290   of this see :yocto_git:`this commit
291   </poky/commit/?id=cc97bc08125b63821ce3f616771830f77c456f57>`.
292
293-  Layers are expected to set ``LAYERSERIES_COMPAT_layername`` to match
294   the version(s) of OpenEmbedded-Core they are compatible with. This is
295   specified as codenames using spaces to separate multiple values (e.g.
296   "rocko sumo"). If a layer does not set
297   ``LAYERSERIES_COMPAT_layername``, a warning will is shown. If a layer
298   sets a value that does not include the current version ("sumo" for
299   the 2.5 release), then an error will be produced.
300
301-  The ``TZ`` environment variable is set to "UTC" within the build
302   environment in order to fix reproducibility problems in some recipes.
303
304
305