| Release 3.4 (honister) |
| ====================== |
| |
| This section provides migration information for moving to the Yocto |
| Project 3.4 Release (codename "honister") from the prior release. |
| |
| Override syntax changes |
| ----------------------- |
| |
| In this release, the ``:`` character replaces the use of ``_`` to |
| refer to an override, most commonly when making a conditional assignment |
| of a variable. This means that an entry like:: |
| |
| SRC_URI_qemux86 = "file://somefile" |
| |
| now becomes:: |
| |
| SRC_URI:qemux86 = "file://somefile" |
| |
| since ``qemux86`` is an override. This applies to any use of override |
| syntax, so the following:: |
| |
| SRC_URI_append = " file://somefile" |
| SRC_URI_append_qemux86 = " file://somefile2" |
| SRC_URI_remove_qemux86-64 = " file://somefile3" |
| SRC_URI_prepend_qemuarm = "file://somefile4 " |
| FILES_${PN}-ptest = "${bindir}/xyz" |
| IMAGE_CMD_tar = "tar" |
| BASE_LIB_tune-cortexa76 = "lib" |
| SRCREV_pn-bash = "abc" |
| BB_TASK_NICE_LEVEL_task-testimage = '0' |
| |
| would now become:: |
| |
| SRC_URI:append = " file://somefile" |
| SRC_URI:append:qemux86 = " file://somefile2" |
| SRC_URI:remove:qemux86-64 = " file://somefile3" |
| SRC_URI:prepend:qemuarm = "file://somefile4 " |
| FILES:${PN}-ptest = "${bindir}/xyz" |
| IMAGE_CMD:tar = "tar" |
| BASE_LIB:tune-cortexa76 = "lib" |
| SRCREV:pn-bash = "abc" |
| BB_TASK_NICE_LEVEL:task-testimage = '0' |
| |
| This also applies to |
| :ref:`variable queries to the datastore <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:functions for accessing datastore variables>`, |
| for example using ``getVar`` and similar so ``d.getVar("RDEPENDS_${PN}")`` |
| becomes ``d.getVar("RDEPENDS:${PN}")``. |
| |
| Whilst some of these are fairly obvious such as :term:`MACHINE` and :term:`DISTRO` |
| overrides, some are less obvious, for example the packaging variables such as |
| :term:`RDEPENDS`, :term:`FILES` and so on taking package names (e.g. ``${PN}``, |
| ``${PN}-ptest``) as overrides. These overrides are not always in |
| :term:`OVERRIDES` but applied conditionally in specific contexts |
| such as packaging. ``task-<taskname>`` is another context specific override, the |
| context being specific tasks in that case. Tune overrides are another special |
| case where some code does use them as overrides but some does not. We plan to try |
| and make the tune code use overrides more consistently in the future. |
| |
| There are some variables which do not use override syntax which include the |
| suffix to variables in ``layer.conf`` files such as :term:`BBFILE_PATTERN`, |
| :term:`SRCREV`\ ``_xxx`` where ``xxx`` is a name from :term:`SRC_URI` and |
| :term:`PREFERRED_VERSION`\ ``_xxx``. In particular, ``layer.conf`` suffixes |
| may be the same as a :term:`DISTRO` override causing some confusion. We do |
| plan to try and improve consistency as these issues are identified. |
| |
| To help with migration of layers, a script has been provided in OE-Core. |
| Once configured with the overrides used by a layer, this can be run as:: |
| |
| <oe-core>/scripts/contrib/convert-overrides.py <layerdir> |
| |
| .. note:: |
| |
| Please read the notes in the script as it isn't entirely automatic and it isn't |
| expected to handle every case. In particular, it needs to be told which overrides |
| the layer uses (usually machine and distro names/overrides) and the result should |
| be carefully checked since it can be a little enthusiastic and will convert |
| references to ``_append``, ``_remove`` and ``_prepend`` in function and variable |
| names. |
| |
| For reference, this conversion is important as it allows BitBake to more reliably |
| determine what is an override and what is not, as underscores are also used in |
| variable names without intending to be overrides. This should allow us to proceed |
| with other syntax improvements and simplifications for usability. It also means |
| BitBake no longer has to guess and maintain large lookup lists just in case |
| e.g. ``functionname`` in ``my_functionname`` is an override, and thus should improve |
| efficiency. |
| |
| |
| New host dependencies |
| --------------------- |
| |
| The ``lz4c``, ``pzstd`` and ``zstd`` commands are now required to be |
| installed on the build host to support LZ4 and Zstandard compression |
| functionality. These are typically provided by ``lz4`` and ``zstd`` |
| packages in most Linux distributions. Alternatively they are available |
| as part of ``buildtools-tarball`` if your distribution does not provide |
| them. For more information see |
| :ref:`ref-manual/system-requirements:required packages for the build host`. |
| |
| |
| Removed recipes |
| --------------- |
| |
| The following recipes have been removed in this release: |
| |
| - ``assimp``: problematic from a licensing perspective and no longer |
| needed by anything else |
| - ``clutter-1.0``: legacy component moved to meta-gnome |
| - ``clutter-gst-3.0``: legacy component moved to meta-gnome |
| - ``clutter-gtk-1.0``: legacy component moved to meta-gnome |
| - ``cogl-1.0``: legacy component moved to meta-gnome |
| - ``core-image-clutter``: removed along with clutter |
| - ``linux-yocto``: removed version 5.4 recipes (5.14 and 5.10 still |
| provided) |
| - ``mklibs-native``: not actively tested and upstream mklibs still |
| requires Python 2 |
| - ``mx-1.0``: obsolete (last release 2012) and isn't used by anything in |
| any known layer |
| - ``packagegroup-core-clutter``: removed along with clutter |
| |
| |
| Removed classes |
| --------------- |
| |
| - ``clutter``: moved to meta-gnome along with clutter itself |
| - ``image-mklibs``: not actively tested and upstream mklibs still |
| requires Python 2 |
| - ``meta``: no longer useful. Recipes that need to skip installing |
| packages should inherit ``nopackages`` instead. |
| |
| |
| Prelinking disabled by default |
| ------------------------------ |
| |
| Recent tests have shown that prelinking works only when PIE is not |
| enabled (see `here <https://rlbl.me/prelink-1>`__ and `here <https://rlbl.me/prelink-2>`__), |
| and as PIE is both a desirable security feature, and the only |
| configuration provided and tested by the Yocto Project, there is |
| simply no sense in continuing to enable prelink. |
| |
| There's also a concern that no one is maintaining the code, and there |
| are open bugs (including `this serious one <https://bugzilla.yoctoproject.org/show_bug.cgi?id=14429>`__). |
| Given that prelink does intricate address arithmetic and rewriting |
| of binaries the best option is to disable the feature. It is recommended |
| that you consider disabling this feature in your own configuration if |
| it is currently enabled. |
| |
| |
| Virtual runtime provides |
| ------------------------ |
| |
| Recipes shouldn't use the ``virtual/`` string in :term:`RPROVIDES` and |
| :term:`RDEPENDS` - it is confusing because ``virtual/`` has no special |
| meaning in :term:`RPROVIDES` and :term:`RDEPENDS` (unlike in the |
| corresponding build-time :term:`PROVIDES` and :term:`DEPENDS`). |
| |
| |
| Tune files moved to architecture-specific directories |
| ----------------------------------------------------- |
| |
| The tune files found in ``conf/machine/include`` have now been moved |
| into their respective architecture name directories under that same |
| location; e.g. x86 tune files have moved into an ``x86`` subdirectory, |
| MIPS tune files have moved into a ``mips`` subdirectory, etc. |
| The ARM tunes have an extra level (``armv8a``, ``armv8m``, etc.) and |
| some have been renamed to make them uniform with the rest of the tunes. |
| See `this commit <http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=1d381f21f5f13aa0c4e1a45683ed656ebeedd37d>`__ |
| for reference. |
| |
| If you have any references to tune files (e.g. in custom machine |
| configuration files) they will need to be updated. |
| |
| |
| Extensible SDK host extension |
| ----------------------------- |
| |
| For a normal SDK, some layers append to :term:`TOOLCHAIN_HOST_TASK` |
| unconditionally which is fine, until the eSDK tries to override the |
| variable to its own values. Instead of installing packages specified |
| in this variable it uses native recipes instead - a very different |
| approach. This has led to confusing errors when binaries are added |
| to the SDK but not relocated. |
| |
| To avoid these issues, a new :term:`TOOLCHAIN_HOST_TASK_ESDK` variable has |
| been created. If you wish to extend what is installed in the host |
| portion of the eSDK then you will now need to set this variable. |
| |
| |
| Package/recipe splitting |
| ------------------------ |
| |
| - ``perl-cross`` has been split out from the main ``perl`` recipe to |
| its own ``perlcross`` recipe for maintenance reasons. If you have |
| bbappends for the perl recipe then these may need extending. |
| |
| - The ``wayland`` recipe now packages its binaries in a |
| ``wayland-tools`` package rather than putting them into |
| ``wayland-dev``. |
| |
| - Xwayland has been split out of the xserver-xorg tree and thus is now |
| in its own ``xwayland`` recipe. If you need Xwayland in your image |
| then you may now need to add it explicitly. |
| |
| - The ``rpm`` package no longer has ``rpm-build`` in its :term:`RRECOMMENDS`; |
| if by chance you still need rpm package building functionality in |
| your image and you have not already done so then you should add |
| ``rpm-build`` to your image explicitly. |
| |
| - The Python ``statistics`` standard module is now packaged in its own |
| ``python3-statistics`` package instead of ``python3-misc`` as |
| previously. |
| |
| |
| Image / SDK generation changes |
| ------------------------------ |
| |
| - Recursive dependencies on the ``do_build`` task are now disabled when |
| building SDKs. These are generally not needed; in the unlikely event |
| that you do encounter problems then it will probably be as a result of |
| missing explicit dependencies that need to be added. |
| |
| - Errors during "complementary" package installation (e.g. for ``*-dbg`` |
| and ``*-dev`` packages) during image construction are no longer |
| ignored. Historically some of these packages had installation problems, |
| that is no longer the case. In the unlikely event that you see errors |
| as a result, you will need to fix the installation/packaging issues. |
| |
| - When building an image, only packages that will be used in building |
| the image (i.e. the first entry in :term:`PACKAGE_CLASSES`) will be |
| produced if multiple package types are enabled (which is not a typical |
| configuration). If in your CI system you need to have the original |
| behaviour, use ``bitbake --runall build <target>``. |
| |
| - The ``-lic`` package is no longer automatically added to |
| :term:`RRECOMMENDS` for every other package when |
| :term:`LICENSE_CREATE_PACKAGE` is set to "1". If you wish all license |
| packages to be installed corresponding to packages in your image, then |
| you should instead add the new ``lic-pkgs`` feature to |
| :term:`IMAGE_FEATURES`. |
| |
| |
| Miscellaneous |
| ------------- |
| |
| - Certificates are now properly checked when bitbake fetches sources |
| over HTTPS. If you receive errors as a result for your custom recipes, |
| you will need to use a mirror or address the issue with the operators |
| of the server in question. |
| |
| - ``avahi`` has had its GTK+ support disabled by default. If you wish to |
| re-enable it, set ``AVAHI_GTK = "gtk3"`` in a bbappend for the |
| ``avahi`` recipe or in your custom distro configuration file. |
| |
| - Setting the ``BUILD_REPRODUCIBLE_BINARIES`` variable to "0" no longer |
| uses a strangely old fallback date of April 2011, it instead disables |
| building reproducible binaries as you would logically expect. |
| |
| - Setting noexec/nostamp/fakeroot varflags to any value besides "1" will |
| now trigger a warning. These should be either set to "1" to enable, or |
| not set at all to disable. |
| |
| - The previously deprecated ``COMPRESS_CMD`` and |
| ``CVE_CHECK_CVE_WHITELIST`` variables have been removed. Use |
| ``CONVERSION_CMD`` and :term:`CVE_CHECK_WHITELIST` respectively |
| instead. |
| |
| - The obsolete ``oe_machinstall`` function previously provided in the |
| :ref:`utils <ref-classes-utils>` class has been removed. For |
| machine-specific installation it is recommended that you use the |
| built-in override support in the fetcher or overrides in general |
| instead. |