1Release 4.0 (kirkstone) 2======================= 3 4Migration notes for 4.0 (kirkstone) 5----------------------------------- 6 7This section provides migration information for moving to the Yocto 8Project 4.0 Release (codename "kirkstone") from the prior release. 9 10.. _migration-4.0-inclusive-language: 11 12Inclusive language improvements 13~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 14 15To use more `inclusive language <https://inclusivenaming.org/>`__ 16in the code and documentation, some variables have been renamed, and 17some have been deleted where they are no longer needed. In many cases the 18new names are also easier to understand. BitBake will stop with an error when 19renamed or removed variables still exist in your recipes or configuration. 20 21Please note that the change applies also to environmental variables, so 22make sure you use a fresh environment for your build. 23 24The following variables have changed their names: 25 26- ``BB_ENV_WHITELIST`` became :term:`BB_ENV_PASSTHROUGH` 27- ``BB_ENV_EXTRAWHITE`` became :term:`BB_ENV_PASSTHROUGH_ADDITIONS` 28- ``BB_HASHBASE_WHITELIST`` became :term:`BB_BASEHASH_IGNORE_VARS` 29- ``BB_HASHCONFIG_WHITELIST`` became :term:`BB_HASHCONFIG_IGNORE_VARS` 30- ``BB_HASHTASK_WHITELIST`` became ``BB_TASKHASH_IGNORE_TASKS`` 31- ``BB_SETSCENE_ENFORCE_WHITELIST`` became ``BB_SETSCENE_ENFORCE_IGNORE_TASKS`` 32- ``CVE_CHECK_PN_WHITELIST`` became :term:`CVE_CHECK_SKIP_RECIPE` 33- ``CVE_CHECK_WHITELIST`` became :term:`CVE_CHECK_IGNORE` 34- ``ICECC_USER_CLASS_BL`` became :term:`ICECC_CLASS_DISABLE` 35- ``ICECC_SYSTEM_CLASS_BL`` became :term:`ICECC_CLASS_DISABLE` 36- ``ICECC_USER_PACKAGE_WL`` became :term:`ICECC_RECIPE_ENABLE` 37- ``ICECC_USER_PACKAGE_BL`` became :term:`ICECC_RECIPE_DISABLE` 38- ``ICECC_SYSTEM_PACKAGE_BL`` became :term:`ICECC_RECIPE_DISABLE` 39- ``LICENSE_FLAGS_WHITELIST`` became :term:`LICENSE_FLAGS_ACCEPTED` 40- ``MULTI_PROVIDER_WHITELIST`` became :term:`BB_MULTI_PROVIDER_ALLOWED` 41- ``PNBLACKLIST`` became :term:`SKIP_RECIPE` 42- ``SDK_LOCAL_CONF_BLACKLIST`` became :term:`ESDK_LOCALCONF_REMOVE` 43- ``SDK_LOCAL_CONF_WHITELIST`` became :term:`ESDK_LOCALCONF_ALLOW` 44- ``SDK_INHERIT_BLACKLIST`` became :term:`ESDK_CLASS_INHERIT_DISABLE` 45- ``SSTATE_DUPWHITELIST`` became ``SSTATE_ALLOW_OVERLAP_FILES`` 46- ``SYSROOT_DIRS_BLACKLIST`` became :term:`SYSROOT_DIRS_IGNORE` 47- ``UNKNOWN_CONFIGURE_WHITELIST`` became :term:`UNKNOWN_CONFIGURE_OPT_IGNORE` 48- ``WHITELIST_<license>`` became :term:`INCOMPATIBLE_LICENSE_EXCEPTIONS` 49 50In addition, ``BB_STAMP_WHITELIST``, ``BB_STAMP_POLICY``, ``INHERIT_BLACKLIST``, 51``TUNEABI``, ``TUNEABI_WHITELIST``, and ``TUNEABI_OVERRIDE`` have been removed. 52 53Many internal variable names have been also renamed accordingly. 54 55In addition, in the ``cve-check`` output, the CVE issue status ``Whitelisted`` 56has been renamed to ``Ignored``. 57 58The :term:`BB_DISKMON_DIRS` variable value now uses the term ``HALT`` 59instead of ``ABORT``. 60 61A :oe_git:`convert-variable-renames.py 62</openembedded-core/tree/scripts/contrib/convert-variable-renames.py>` 63script is provided to convert your recipes and configuration, 64and also warns you about the use of problematic words. The script performs 65changes and you need to review them before committing. An example warning 66looks like:: 67 68 poky/scripts/lib/devtool/upgrade.py needs further work at line 275 since it contains abort 69 70Fetching changes 71~~~~~~~~~~~~~~~~ 72 73- Because of the uncertainty in future default branch names in git repositories, 74 it is now required to add a branch name to all URLs described 75 by ``git://`` and ``gitsm://`` :term:`SRC_URI` entries. For example:: 76 77 SRC_URI = "git://git.denx.de/u-boot.git;branch=master" 78 79 A :oe_git:`convert-srcuri </openembedded-core/tree/scripts/contrib/convert-srcuri.py>` 80 script to convert your recipes is available in :term:`OpenEmbedded-Core (OE-Core)` 81 and in :term:`Poky`. 82 83- Because of `GitHub dropping support for the git: 84 protocol <https://github.blog/2021-09-01-improving-git-protocol-security-github/>`__, 85 recipes now need to use ``;protocol=https`` at the end of GitHub 86 URLs. The same ``convert-srcuri`` script mentioned above can be used to convert 87 your recipes. 88 89- Network access from tasks is now disabled by default on kernels which support 90 this feature (on most recent distros such as CentOS 8 and Debian 11 onwards). 91 This means that tasks accessing the network need to be marked as such with the ``network`` 92 flag. For example:: 93 94 do_mytask[network] = "1" 95 96 This is allowed by default from :ref:`ref-tasks-fetch` but not from any of our other standard 97 tasks. Recipes shouldn't be accessing the network outside of :ref:`ref-tasks-fetch` as it 98 usually undermines fetcher source mirroring, image and licence manifests, software 99 auditing and supply chain security. 100 101License changes 102~~~~~~~~~~~~~~~ 103 104- The ambiguous "BSD" license has been removed from the ``common-licenses`` directory. 105 Each recipe that fetches or builds BSD-licensed code should specify the proper 106 version of the BSD license in its :term:`LICENSE` value. 107 108- :term:`LICENSE` variable values should now use `SPDX identifiers <https://spdx.org/licenses/>`__. 109 If they do not, by default a warning will be shown. A 110 :oe_git:`convert-spdx-licenses.py </openembedded-core/tree/scripts/contrib/convert-spdx-licenses.py>` 111 script can be used to update your recipes. 112 113- :term:`INCOMPATIBLE_LICENSE` should now use `SPDX identifiers <https://spdx.org/licenses/>`__. 114 Additionally, wildcarding is now limited to specifically supported values - 115 see the :term:`INCOMPATIBLE_LICENSE` documentation for further information. 116 117- The ``AVAILABLE_LICENSES`` variable has been removed. This variable was a performance 118 liability and is highly dependent on which layers are added to the configuration, 119 which can cause signature issues for users. In addition the ``available_licenses()`` 120 function has been removed from the :ref:`license <ref-classes-license>` class as 121 it is no longer needed. 122 123Removed recipes 124~~~~~~~~~~~~~~~ 125 126The following recipes have been removed in this release: 127 128- ``dbus-test``: merged into main dbus recipe 129- ``libid3tag``: moved to meta-oe - no longer needed by anything in OE-Core 130- ``libportal``: moved to meta-gnome - no longer needed by anything in OE-Core 131- ``linux-yocto``: removed version 5.14 recipes (5.15 and 5.10 still provided) 132- ``python3-nose``: has not changed since 2016 upstream, and no longer needed by anything in OE-Core 133- ``rustfmt``: not especially useful as a standalone recipe 134 135Python changes 136~~~~~~~~~~~~~~ 137 138- ``distutils`` has been deprecated upstream in Python 3.10 and thus the ``distutils*`` 139 classes have been moved to ``meta-python``. Recipes that inherit the ``distutils*`` 140 classes should be updated to inherit ``setuptools*`` equivalents instead. 141 142- The Python package build process is now based on `wheels <https://pythonwheels.com/>`__. 143 Here are the new Python packaging classes that should be used: 144 :ref:`python_flit_core <ref-classes-python_flit_core>`, 145 :ref:`python_setuptools_build_meta <ref-classes-python_setuptools_build_meta>` 146 and :ref:`python_poetry_core <ref-classes-python_poetry_core>`. 147 148- The :ref:`setuptools3 <ref-classes-setuptools3>` class :ref:`ref-tasks-install` task now 149 installs the ``wheel`` binary archive. In current versions of ``setuptools`` the 150 legacy ``setup.py install`` method is deprecated. If the ``setup.py`` cannot be used 151 with wheels, for example it creates files outside of the Python module or standard 152 entry points, then :ref:`setuptools3_legacy <ref-classes-setuptools3_legacy>` should 153 be used instead. 154 155Prelink removed 156~~~~~~~~~~~~~~~ 157 158Prelink has been dropped by ``glibc`` upstream in 2.36. It already caused issues with 159binary corruption, has a number of open bugs and is of questionable benefit 160without disabling load address randomization and PIE executables. 161 162We disabled prelinking by default in the honister (3.4) release, but left it able 163to be enabled if desired. However, without glibc support it cannot be maintained 164any further, so all of the prelinking functionality has been removed in this release. 165If you were enabling the ``image-prelink`` class in :term:`INHERIT`, :term:`IMAGE_CLASSES`, 166:term:`USER_CLASSES` etc in your configuration, then you will need to remove the 167reference(s). 168 169Reproducible as standard 170~~~~~~~~~~~~~~~~~~~~~~~~ 171 172Reproducibility is now considered as standard functionality, thus the 173``reproducible`` class has been removed and its previous contents merged into the 174:ref:`base <ref-classes-base>` class. If you have references in your configuration to 175``reproducible`` in :term:`INHERIT`, :term:`USER_CLASSES` etc. then they should be 176removed. 177 178Additionally, the ``BUILD_REPRODUCIBLE_BINARIES`` variable is no longer used. 179Specifically for the kernel, if you wish to enable build timestamping functionality 180that is normally disabled for reproducibility reasons, you can do so by setting 181a new :term:`KERNEL_DEBUG_TIMESTAMPS` variable to "1". 182 183Supported host distribution changes 184~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 185 186- Support for `AlmaLinux <https://en.wikipedia.org/wiki/AlmaLinux>`__ 187 hosts replacing `CentOS <https://en.wikipedia.org/wiki/CentOS>`__. 188 The following distribution versions were dropped: CentOS 8, Ubuntu 16.04 and Fedora 30, 31 and 32. 189 190- ``gcc`` version 7.5 is now required at minimum on the build host. For older 191 host distributions where this is not available, you can use the 192 ``buildtools-extended-tarball`` (easily installable using 193 ``scripts/install-buildtools``). 194 195:append/:prepend in combination with other operators 196~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 197 198The ``append``, ``prepend`` and ``remove`` operators can now only be combined with 199``=`` and ``:=`` operators. To the exception of the ``append`` plus ``+=`` and 200``prepend`` plus ``=+`` combinations, all combinations could be factored up to the 201``append``, ``prepend`` or ``remove`` in the combination. This brought a lot of 202confusion on how the override style syntax operators work and should be used. 203Therefore, those combinations should be replaced by a single ``append``, 204``prepend`` or ``remove`` operator without any additional change. 205For the ``append`` plus ``+=`` (and ``prepend`` plus ``=+``) combinations, 206the content should be prefixed (respectively suffixed) by a space to maintain 207the same behavior. You can learn more about override style syntax operators 208(``append``, ``prepend`` and ``remove``) in the BitBake documentation: 209:ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:appending and prepending (override style syntax)` 210and :ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:removal (override style syntax)`. 211 212Miscellaneous changes 213~~~~~~~~~~~~~~~~~~~~~ 214 215- ``blacklist.bbclass`` is removed and the functionality moved to the 216 :ref:`base <ref-classes-base>` class with a more descriptive 217 ``varflag`` variable named :term:`SKIP_RECIPE` which will use the `bb.parse.SkipRecipe()` 218 function. The usage remains the same, for example:: 219 220 SKIP_RECIPE[my-recipe] = "Reason for skipping recipe" 221 222- :ref:`allarch <ref-classes-allarch>` packagegroups can no longer depend on packages 223 which use :term:`PKG` renaming such as :ref:`ref-classes-debian`. Such packagegroups 224 recipes should be changed to avoid inheriting :ref:`allarch <ref-classes-allarch>`. 225 226- The ``lnr`` script has been removed. ``lnr`` implemented the same behaviour as `ln --relative --symbolic`, 227 since at the time of creation `--relative` was only available in coreutils 8.16 228 onwards which was too new for the older supported distros. Current supported host 229 distros have a new enough version of coreutils, so it is no longer needed. If you have 230 any calls to ``lnr`` in your recipes or classes, they should be replaced with 231 `ln --relative --symbolic` or `ln -rs` if you prefer the short version. 232 233- The ``package_qa_handle_error()`` function formerly in the :ref:`insane <ref-classes-insane>` 234 class has been moved and renamed - if you have any references in your own custom 235 classes they should be changed to ``oe.qa.handle_error()``. 236 237- When building ``perl``, Berkeley db support is no longer enabled by default, since 238 Berkeley db is largely obsolete. If you wish to reenable it, you can append ``bdb`` 239 to :term:`PACKAGECONFIG` in a ``perl`` bbappend or ``PACKAGECONFIG:pn-perl`` at 240 the configuration level. 241 242- For the ``xserver-xorg`` recipe, the ``xshmfence``, ``xmlto`` and ``systemd`` options 243 previously supported in :term:`PACKAGECONFIG` have been removed, as they are no 244 longer supported since the move from building it with autotools to meson in this release. 245 246- For the ``libsdl2`` recipe, various X11 features are now disabled by default (primarily 247 for reproducibility purposes in the native case) with options in :term:`EXTRA_OECMAKE` 248 within the recipe. These can be changed within a bbappend if desired. See the 249 ``libsdl2`` recipe for more details. 250 251- The ``cortexa72-crc`` and ``cortexa72-crc-crypto`` tunes have been removed since 252 the crc extension is now enabled by default for cortexa72. Replace any references to 253 these with ``cortexa72`` and ``cortexa72-crypto`` respectively. 254 255- The Python development shell (previously known as ``devpyshell``) feature has been 256 renamed to ``pydevshell``. To start it you should now run:: 257 258 bitbake <target> -c pydevshell 259 260- The ``packagegroups-core-full-cmdline-libs`` packagegroup is no longer produced, as 261 libraries should normally be brought in via dependencies. If you have any references 262 to this then remove them. 263 264- The :term:`TOPDIR` variable and the current working directory are no longer modified 265 when parsing recipes. Any code depending on the previous behaviour will no longer 266 work - change any such code to explicitly use appropriate path variables instead. 267 268