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