1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK 2 3Migration notes for 3.4 (honister) 4---------------------------------- 5 6This section provides migration information for moving to the Yocto 7Project 3.4 Release (codename "honister") from the prior release. 8 9Override syntax changes 10~~~~~~~~~~~~~~~~~~~~~~~ 11 12In this release, the ``:`` character replaces the use of ``_`` to 13refer to an override, most commonly when making a conditional assignment 14of a variable. This means that an entry like:: 15 16 SRC_URI_qemux86 = "file://somefile" 17 18now becomes:: 19 20 SRC_URI:qemux86 = "file://somefile" 21 22since ``qemux86`` is an override. This applies to any use of override 23syntax, so the following:: 24 25 SRC_URI_append = " file://somefile" 26 SRC_URI_append_qemux86 = " file://somefile2" 27 SRC_URI_remove_qemux86-64 = "file://somefile3" 28 SRC_URI_prepend_qemuarm = "file://somefile4 " 29 FILES_${PN}-ptest = "${bindir}/xyz" 30 IMAGE_CMD_tar = "tar" 31 BASE_LIB_tune-cortexa76 = "lib" 32 SRCREV_pn-bash = "abc" 33 BB_TASK_NICE_LEVEL_task-testimage = '0' 34 35would now become:: 36 37 SRC_URI:append = " file://somefile" 38 SRC_URI:append:qemux86 = " file://somefile2" 39 SRC_URI:remove:qemux86-64 = "file://somefile3" 40 SRC_URI:prepend:qemuarm = "file://somefile4 " 41 FILES:${PN}-ptest = "${bindir}/xyz" 42 IMAGE_CMD:tar = "tar" 43 BASE_LIB:tune-cortexa76 = "lib" 44 SRCREV:pn-bash = "abc" 45 BB_TASK_NICE_LEVEL:task-testimage = '0' 46 47This also applies to 48:ref:`variable queries to the datastore <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:functions for accessing datastore variables>`, 49for example using ``getVar`` and similar so ``d.getVar("RDEPENDS_${PN}")`` 50becomes ``d.getVar("RDEPENDS:${PN}")``. 51 52Whilst some of these are fairly obvious such as :term:`MACHINE` and :term:`DISTRO` 53overrides, some are less obvious, for example the packaging variables such as 54:term:`RDEPENDS`, :term:`FILES` and so on taking package names (e.g. ``${PN}``, 55``${PN}-ptest``) as overrides. These overrides are not always in 56:term:`OVERRIDES` but applied conditionally in specific contexts 57such as packaging. ``task-<taskname>`` is another context specific override, the 58context being specific tasks in that case. Tune overrides are another special 59case where some code does use them as overrides but some does not. We plan to try 60and make the tune code use overrides more consistently in the future. 61 62There are some variables which do not use override syntax which include the 63suffix to variables in ``layer.conf`` files such as :term:`BBFILE_PATTERN`, 64:term:`SRCREV`\ ``_xxx`` where ``xxx`` is a name from :term:`SRC_URI` and 65:term:`PREFERRED_VERSION`\ ``_xxx``. In particular, ``layer.conf`` suffixes 66may be the same as a :term:`DISTRO` override causing some confusion. We do 67plan to try and improve consistency as these issues are identified. 68 69To help with migration of layers, a script has been provided in OE-Core. 70Once configured with the overrides used by a layer, this can be run as:: 71 72 <oe-core>/scripts/contrib/convert-overrides.py <layerdir> 73 74.. note:: 75 76 Please read the notes in the script as it isn't entirely automatic and it isn't 77 expected to handle every case. In particular, it needs to be told which overrides 78 the layer uses (usually machine and distro names/overrides) and the result should 79 be carefully checked since it can be a little enthusiastic and will convert 80 references to ``_append``, ``_remove`` and ``_prepend`` in function and variable 81 names. 82 83For reference, this conversion is important as it allows BitBake to more reliably 84determine what is an override and what is not, as underscores are also used in 85variable names without intending to be overrides. This should allow us to proceed 86with other syntax improvements and simplifications for usability. It also means 87BitBake no longer has to guess and maintain large lookup lists just in case 88e.g. ``functionname`` in ``my_functionname`` is an override, and thus should improve 89efficiency. 90 91New host dependencies 92~~~~~~~~~~~~~~~~~~~~~ 93 94The ``lz4c``, ``pzstd`` and ``zstd`` commands are now required to be 95installed on the build host to support LZ4 and Zstandard compression 96functionality. These are typically provided by ``lz4`` and ``zstd`` 97packages in most Linux distributions. Alternatively they are available 98as part of :term:`buildtools` tarball if your distribution does not provide 99them. For more information see 100:ref:`ref-manual/system-requirements:required packages for the build host`. 101 102Removed recipes 103~~~~~~~~~~~~~~~ 104 105The following recipes have been removed in this release: 106 107- ``assimp``: problematic from a licensing perspective and no longer 108 needed by anything else 109- ``clutter-1.0``: legacy component moved to meta-gnome 110- ``clutter-gst-3.0``: legacy component moved to meta-gnome 111- ``clutter-gtk-1.0``: legacy component moved to meta-gnome 112- ``cogl-1.0``: legacy component moved to meta-gnome 113- ``core-image-clutter``: removed along with clutter 114- ``linux-yocto``: removed version 5.4 recipes (5.14 and 5.10 still 115 provided) 116- ``mklibs-native``: not actively tested and upstream mklibs still 117 requires Python 2 118- ``mx-1.0``: obsolete (last release 2012) and isn't used by anything in 119 any known layer 120- ``packagegroup-core-clutter``: removed along with clutter 121 122Removed classes 123~~~~~~~~~~~~~~~ 124 125- ``clutter``: moved to meta-gnome along with clutter itself 126- ``image-mklibs``: not actively tested and upstream mklibs still 127 requires Python 2 128- ``meta``: no longer useful. Recipes that need to skip installing 129 packages should inherit :ref:`ref-classes-nopackages` instead. 130 131Prelinking disabled by default 132~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 133 134Recent tests have shown that prelinking works only when PIE is not 135enabled (see `here <https://rlbl.me/prelink-1>`__ and `here <https://rlbl.me/prelink-2>`__), 136and as PIE is both a desirable security feature, and the only 137configuration provided and tested by the Yocto Project, there is 138simply no sense in continuing to enable prelink. 139 140There's also a concern that no one is maintaining the code, and there 141are open bugs (including :yocto_bugs:`this serious one </show_bug.cgi?id=14429>`). 142Given that prelink does intricate address arithmetic and rewriting 143of binaries the best option is to disable the feature. It is recommended 144that you consider disabling this feature in your own configuration if 145it is currently enabled. 146 147Virtual runtime provides 148~~~~~~~~~~~~~~~~~~~~~~~~ 149 150Recipes shouldn't use the ``virtual/`` string in :term:`RPROVIDES` and 151:term:`RDEPENDS` --- it is confusing because ``virtual/`` has no special 152meaning in :term:`RPROVIDES` and :term:`RDEPENDS` (unlike in the 153corresponding build-time :term:`PROVIDES` and :term:`DEPENDS`). 154 155Tune files moved to architecture-specific directories 156~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 157 158The tune files found in ``conf/machine/include`` have now been moved 159into their respective architecture name directories under that same 160location; e.g. x86 tune files have moved into an ``x86`` subdirectory, 161MIPS tune files have moved into a ``mips`` subdirectory, etc. 162The ARM tunes have an extra level (``armv8a``, ``armv8m``, etc.) and 163some have been renamed to make them uniform with the rest of the tunes. 164See :yocto_git:`this commit </poky/commit/?id=1d381f21f5f13aa0c4e1a45683ed656ebeedd37d>` 165for reference. 166 167If you have any references to tune files (e.g. in custom machine 168configuration files) they will need to be updated. 169 170Extensible SDK host extension 171~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 172 173For a normal SDK, some layers append to :term:`TOOLCHAIN_HOST_TASK` 174unconditionally which is fine, until the eSDK tries to override the 175variable to its own values. Instead of installing packages specified 176in this variable it uses native recipes instead --- a very different 177approach. This has led to confusing errors when binaries are added 178to the SDK but not relocated. 179 180To avoid these issues, a new :term:`TOOLCHAIN_HOST_TASK_ESDK` variable has 181been created. If you wish to extend what is installed in the host 182portion of the eSDK then you will now need to set this variable. 183 184Package/recipe splitting 185~~~~~~~~~~~~~~~~~~~~~~~~ 186 187- ``perl-cross`` has been split out from the main ``perl`` recipe to 188 its own ``perlcross`` recipe for maintenance reasons. If you have 189 bbappends for the perl recipe then these may need extending. 190 191- The ``wayland`` recipe now packages its binaries in a 192 ``wayland-tools`` package rather than putting them into 193 ``wayland-dev``. 194 195- Xwayland has been split out of the xserver-xorg tree and thus is now 196 in its own ``xwayland`` recipe. If you need Xwayland in your image 197 then you may now need to add it explicitly. 198 199- The ``rpm`` package no longer has ``rpm-build`` in its :term:`RRECOMMENDS`; 200 if by chance you still need rpm package building functionality in 201 your image and you have not already done so then you should add 202 ``rpm-build`` to your image explicitly. 203 204- The Python ``statistics`` standard module is now packaged in its own 205 ``python3-statistics`` package instead of ``python3-misc`` as 206 previously. 207 208Image / SDK generation changes 209~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 210 211- Recursive dependencies on the :ref:`ref-tasks-build` task are now disabled when 212 building SDKs. These are generally not needed; in the unlikely event 213 that you do encounter problems then it will probably be as a result of 214 missing explicit dependencies that need to be added. 215 216- Errors during "complementary" package installation (e.g. for ``*-dbg`` 217 and ``*-dev`` packages) during image construction are no longer 218 ignored. Historically some of these packages had installation problems, 219 that is no longer the case. In the unlikely event that you see errors 220 as a result, you will need to fix the installation/packaging issues. 221 222- When building an image, only packages that will be used in building 223 the image (i.e. the first entry in :term:`PACKAGE_CLASSES`) will be 224 produced if multiple package types are enabled (which is not a typical 225 configuration). If in your CI system you need to have the original 226 behaviour, use ``bitbake --runall build <target>``. 227 228- The ``-lic`` package is no longer automatically added to 229 :term:`RRECOMMENDS` for every other package when 230 :term:`LICENSE_CREATE_PACKAGE` is set to "1". If you wish all license 231 packages to be installed corresponding to packages in your image, then 232 you should instead add the new ``lic-pkgs`` feature to 233 :term:`IMAGE_FEATURES`. 234 235Miscellaneous 236~~~~~~~~~~~~~ 237 238- Certificates are now properly checked when BitBake fetches sources 239 over HTTPS. If you receive errors as a result for your custom recipes, 240 you will need to use a mirror or address the issue with the operators 241 of the server in question. 242 243- ``avahi`` has had its GTK+ support disabled by default. If you wish to 244 re-enable it, set ``AVAHI_GTK = "gtk3"`` in a bbappend for the 245 ``avahi`` recipe or in your custom distro configuration file. 246 247- Setting the ``BUILD_REPRODUCIBLE_BINARIES`` variable to "0" no longer 248 uses a strangely old fallback date of April 2011, it instead disables 249 building reproducible binaries as you would logically expect. 250 251- Setting noexec/nostamp/fakeroot varflags to any value besides "1" will 252 now trigger a warning. These should be either set to "1" to enable, or 253 not set at all to disable. 254 255- The previously deprecated ``COMPRESS_CMD`` and 256 ``CVE_CHECK_CVE_WHITELIST`` variables have been removed. Use 257 :term:`CONVERSION_CMD` and ``CVE_CHECK_WHITELIST`` (replaced by 258 :term:`CVE_CHECK_IGNORE` in version 3.5) respectively 259 instead. 260 261- The obsolete ``oe_machinstall`` function previously provided in the 262 :ref:`ref-classes-utils` class has been removed. For 263 machine-specific installation it is recommended that you use the 264 built-in override support in the fetcher or overrides in general 265 instead. 266 267- The ``-P`` (``--clear-password``) option can no longer be used with 268 ``useradd`` and ``usermod`` entries in :term:`EXTRA_USERS_PARAMS`. 269 It was being implemented using a custom patch to the ``shadow`` recipe 270 which clashed with a ``-P`` option that was added upstream in 271 ``shadow`` version 4.9, and in any case is fundamentally insecure. 272 Hardcoded passwords are still supported but they need to be hashed, see 273 examples in :term:`EXTRA_USERS_PARAMS`. 274 275 276