1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Release 4.1 (langdale)
4======================
5
6Migration notes for 4.1 (langdale)
7-----------------------------------
8
9This section provides migration information for moving to the Yocto
10Project 4.1 Release (codename "langdale") from the prior release.
11
12
13.. _migration-4.1-make-4.0:
14
15make 4.0 is now the minimum required make version
16~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17
18glibc now requires ``make`` 4.0 to build, thus it is now the version required to
19be installed on the build host. A new :term:`buildtools-make` tarball has been
20introduced to provide just make 4.0 for host distros without a current/working
21make 4.x version; if you also need other tools you can use the updated
22:term:`buildtools` tarball. For more information see
23:ref:`ref-manual/system-requirements:required packages for the build host`.
24
25
26.. _migration-4.1-complementary-deps:
27
28Complementary package installation ignores recommends
29~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30
31When installing complementary packages (e.g. ``-dev`` and ``-dbg`` packages when
32building an SDK, or if you have added ``dev-deps`` to :term:`IMAGE_FEATURES`),
33recommends (as defined by :term:`RRECOMMENDS`) are no longer installed.
34
35If you wish to double-check the contents of your images after this change, see
36:ref:`Checking Image / SDK Changes <migration-general-buildhistory>`. If needed
37you can explicitly install items by adding them to :term:`IMAGE_INSTALL` in
38image recipes or :term:`TOOLCHAIN_TARGET_TASK` for the SDK.
39
40
41.. _migration-4.1-dev-recommends:
42
43dev dependencies are now recommends
44~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45
46The default for ``${PN}-dev`` package is now to use :term:`RRECOMMENDS` instead
47of :term:`RDEPENDS` to pull in the main package. This takes advantage of a
48change to complimentary package installation to not follow :term:`RRECOMMENDS`
49(as mentioned above) and for example means an SDK for an image with both openssh
50and dropbear components will now build successfully.
51
52
53.. _migration-4.1-dropbear-sftp:
54
55dropbear now recommends openssh-sftp-server
56~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
57
58openssh has switched the scp client to use the sftp protocol instead of scp to
59move files. This means scp from Fedora 36 and other current distributions will
60no longer be able to move files to/from a system running dropbear with no sftp
61server installed.
62
63The sftp server from openssh is small (200kb uncompressed) and standalone, so
64adding it to the packagegroup seems to be the best way to preserve the
65functionality for user sanity. However, if you wish to avoid this dependency,
66you can either:
67
68 A. Use ``dropbear`` in :term:`IMAGE_INSTALL` instead of
69    ``packagegroup-core-ssh-dropbear`` (or ``ssh-server-dropbear`` in
70    :term:`IMAGE_FEATURES`), or
71 B. Add ``openssh-sftp-server`` to :term:`BAD_RECOMMENDATIONS`.
72
73
74.. _migration-4.1-classes-split:
75
76Classes now split by usage context
77~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
78
79A split directory structure has now been set up for ``.bbclass`` files - classes
80that are intended to be inherited only by recipes (e.g. ``inherit`` in a recipe
81file, :term:`IMAGE_CLASSES` or :term:`KERNEL_CLASSES`) should be in a
82``classes-recipe`` subdirectory and classes that are intended to be inherited
83globally (e.g. via ``INHERIT +=``, :term:`PACKAGE_CLASSES`, :term:`USER_CLASSES`
84or :term:`INHERIT_DISTRO`) should be in ``classes-global``. Classes in the
85existing ``classes`` subdirectory will continue to work in any context as before.
86
87Other than knowing where to look when manually browsing the class files, this is
88not likely to require any changes to your configuration. However, if in your
89configuration you were using some classes in the incorrect context, you will now
90receive an error during parsing. For example, the following in ``local.conf`` will
91now cause an error::
92
93   INHERIT += "testimage"
94
95Since :ref:`ref-classes-testimage` is a class intended solely to
96affect image recipes, this would be correctly specified as::
97
98   IMAGE_CLASSES += "testimage"
99
100
101.. _migration-4.1-local-file-error:
102
103Missing local files in SRC_URI now triggers an error
104~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
105
106If a file referenced in :term:`SRC_URI` does not exist, in 4.1 this will trigger
107an error at parse time where previously this only triggered a warning. In the past
108you could ignore these warnings for example if you have multiple build
109configurations (e.g. for several different target machines) and there were recipes
110that you were not building in one of the configurations. If you have this scenario
111you will now need to conditionally add entries to :term:`SRC_URI` where they are
112valid, or use :term:`COMPATIBLE_MACHINE` / :term:`COMPATIBLE_HOST` to prevent the
113recipe from being available (and therefore avoid it being parsed) in configurations
114where the files aren't available.
115
116
117.. _migration-4.1-qa-checks:
118
119QA check changes
120~~~~~~~~~~~~~~~~
121
122- The :ref:`buildpaths <qa-check-buildpaths>` QA check is now enabled by default
123  in :term:`WARN_QA`, and thus any build system paths found in output files will
124  trigger a warning. If you see these warnings for your own recipes, for full
125  binary reproducibility you should make the necessary changes to the recipe build
126  to remove these paths. If you wish to disable the warning for a particular
127  recipe you can use :term:`INSANE_SKIP`, or for the entire build you can adjust
128  :term:`WARN_QA`. For more information, see the :ref:`buildpaths QA check
129  <qa-check-buildpaths>` section.
130
131- ``do_qa_staging`` now checks shebang length in all directories specified by
132  :term:`SYSROOT_DIRS`, since there is a maximum length defined in the kernel. For
133  native recipes which write scripts to the sysroot, if the shebang line in one of
134  these scripts is too long you will get an error. This can be skipped using
135  :term:`INSANE_SKIP` if necessary, but the best course of action is of course to
136  fix the script. There is now also a ``create_cmdline_shebang_wrapper`` function
137  that you can call e.g. from ``do_install`` (or ``do_install:append``) within a
138  recipe to create a wrapper to fix such scripts - see the ``libcheck`` recipe
139  for an example usage.
140
141
142
143Miscellaneous changes
144~~~~~~~~~~~~~~~~~~~~~
145
146- ``mount.blacklist`` has been renamed to ``mount.ignorelist`` in
147  ``udev-extraconf``. If you are customising this file via ``udev-extraconf`` then
148  you will need to update your ``udev-extraconf`` ``.bbappend`` as appropriate.
149- ``help2man-native`` has been removed from implicit sysroot dependencies. If a
150  recipe needs ``help2man-native`` it should now be explicitly added to
151  :term:`DEPENDS` within the recipe.
152- For images using systemd, the reboot watchdog timeout has been set to 60
153  seconds (from the upstream default of 10 minutes). If you wish to override this
154  you can set :term:`WATCHDOG_TIMEOUT` to the desired timeout in seconds. Note
155  that the same :term:`WATCHDOG_TIMEOUT` variable also specifies the timeout used
156  for the ``watchdog`` tool (if that is being built).
157- The :ref:`ref-classes-image-buildinfo` class now writes to
158  ``${sysconfdir}/buildinfo`` instead of ``${sysconfdir}/build`` by default (i.e.
159  the default value of :term:`IMAGE_BUILDINFO_FILE` has been changed). If you have
160  code that reads this from images at build or runtime you will need to update it
161  or specify your own value for :term:`IMAGE_BUILDINFO_FILE`.
162- In the :ref:`ref-classes-archiver` class, the default
163  ``ARCHIVER_OUTDIR`` value no longer includes the :term:`MACHINE` value in order
164  to avoid the archive task running multiple times in a multiconfig setup. If you
165  have custom code that does something with the files archived by the
166  :ref:`ref-classes-archiver` class then you may need to adjust it to
167  the new structure.
168- If you are not using `systemd` then udev is now configured to use labels
169  (``LABEL`` or ``PARTLABEL``) to set the mount point for the device. For example::
170
171    /run/media/rootfs-sda2
172
173  instead of::
174
175    /run/media/sda2
176
177- ``icu`` no longer provides the ``icu-config`` configuration tool - upstream
178  have indicated ``icu-config`` is deprecated and should no longer be used. Code
179  with references to it will need to be updated, for example to use ``pkg-config``
180  instead.
181- The ``rng-tools`` systemd service name has changed from ``rngd`` to ``rng-tools``
182- The ``largefile`` :term:`DISTRO_FEATURES` item has been removed, large file
183  support is now always enabled where it was previously optional.
184- The Python ``zoneinfo`` module is now split out to its own ``python3-zoneinfo``
185  package.
186- The :term:`PACKAGECONFIG` option to enable wpa_supplicant in the ``connman``
187  recipe has been renamed to "wpa-supplicant". If you have set :term:`PACKAGECONFIG` for
188  the ``connman`` recipe to include this option you will need to update
189  your configuration. Related to this, the :term:`WIRELESS_DAEMON` variable
190  now expects the new ``wpa-supplicant`` naming and affects ``packagegroup-base``
191  as well as ``connman``.
192- The ``wpa-supplicant`` recipe no longer uses a static (and stale) ``defconfig``
193  file, instead it uses the upstream version with appropriate edits for the
194  :term:`PACKAGECONFIG`. If you are customising this file you will need to
195  update your customisations.
196- With the introduction of picobuild in
197  :ref:`ref-classes-python_pep517`, The ``PEP517_BUILD_API``
198  variable is no longer supported. If you have any references to this variable
199  you should remove them.
200
201
202.. _migration-4.1-removed-recipes:
203
204Removed recipes
205~~~~~~~~~~~~~~~
206
207The following recipes have been removed in this release:
208
209- ``alsa-utils-scripts``: merged into alsa-utils
210- ``cargo-cross-canadian``: optimised out
211- ``lzop``: obsolete, unmaintained upstream
212- ``linux-yocto (5.10)``: 5.15 and 5.19 are currently provided
213- ``rust-cross``: optimised out
214- ``rust-crosssdk``: optimised out
215- ``rust-tools-cross-canadian``: optimised out
216- ``xf86-input-keyboard``: obsolete (replaced by libinput/evdev)
217