Andrew Geissler | 3b8a17c | 2021-04-15 15:55:55 -0500 | [diff] [blame] | 1 | Moving to the Yocto Project 3.0 Release (zeus) |
| 2 | ============================================== |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 3 | |
| 4 | This section provides migration information for moving to the Yocto |
Andrew Geissler | 3b8a17c | 2021-04-15 15:55:55 -0500 | [diff] [blame] | 5 | Project 3.0 Release (codename "zeus") from the prior release. |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 6 | |
| 7 | .. _migration-3.0-init-system-selection: |
| 8 | |
| 9 | Init System Selection |
| 10 | --------------------- |
| 11 | |
| 12 | Changing the init system manager previously required setting a number of |
| 13 | different variables. You can now change the manager by setting the |
| 14 | ``INIT_MANAGER`` variable and the corresponding include files (i.e. |
| 15 | ``conf/distro/include/init-manager-*.conf``). Include files are provided |
| 16 | for four values: "none", "sysvinit", "systemd", and "mdev-busybox". The |
| 17 | default value, "none", for ``INIT_MANAGER`` should allow your current |
| 18 | settings to continue working. However, it is advisable to explicitly set |
| 19 | ``INIT_MANAGER``. |
| 20 | |
| 21 | .. _migration-3.0-lsb-support-removed: |
| 22 | |
| 23 | LSB Support Removed |
| 24 | ------------------- |
| 25 | |
| 26 | Linux Standard Base (LSB) as a standard is not current, and is not well |
| 27 | suited for embedded applications. Support can be continued in a separate |
| 28 | layer if needed. However, presently LSB support has been removed from |
| 29 | the core. |
| 30 | |
| 31 | As a result of this change, the ``poky-lsb`` derivative distribution |
| 32 | configuration that was also used for testing alternative configurations |
| 33 | has been replaced with a ``poky-altcfg`` distribution that has LSB parts |
| 34 | removed. |
| 35 | |
| 36 | .. _migration-3.0-removed-recipes: |
| 37 | |
| 38 | Removed Recipes |
| 39 | --------------- |
| 40 | |
| 41 | The following recipes have been removed. |
| 42 | |
| 43 | - ``core-image-lsb-dev``: Part of removed LSB support. |
| 44 | |
| 45 | - ``core-image-lsb``: Part of removed LSB support. |
| 46 | |
| 47 | - ``core-image-lsb-sdk``: Part of removed LSB support. |
| 48 | |
| 49 | - ``cve-check-tool``: Functionally replaced by the ``cve-update-db`` |
| 50 | recipe and ``cve-check`` class. |
| 51 | |
| 52 | - ``eglinfo``: No longer maintained. ``eglinfo`` from ``mesa-demos`` is |
| 53 | an adequate and maintained alternative. |
| 54 | |
| 55 | - ``gcc-8.3``: Version 8.3 removed. Replaced by 9.2. |
| 56 | |
| 57 | - ``gnome-themes-standard``: Only needed by gtk+ 2.x, which has been |
| 58 | removed. |
| 59 | |
| 60 | - ``gtk+``: GTK+ 2 is obsolete and has been replaced by gtk+3. |
| 61 | |
| 62 | - ``irda-utils``: Has become obsolete. IrDA support has been removed |
| 63 | from the Linux kernel in version 4.17 and later. |
| 64 | |
| 65 | - ``libnewt-python``: ``libnewt`` Python support merged into main |
| 66 | ``libnewt`` recipe. |
| 67 | |
| 68 | - ``libsdl``: Replaced by newer ``libsdl2``. |
| 69 | |
| 70 | - ``libx11-diet``: Became obsolete. |
| 71 | |
| 72 | - ``libxx86dga``: Removed obsolete client library. |
| 73 | |
| 74 | - ``libxx86misc``: Removed. Library is redundant. |
| 75 | |
| 76 | - ``linux-yocto``: Version 5.0 removed, which is now redundant (5.2 / |
| 77 | 4.19 present). |
| 78 | |
| 79 | - ``lsbinitscripts``: Part of removed LSB support. |
| 80 | |
| 81 | - ``lsb``: Part of removed LSB support. |
| 82 | |
| 83 | - ``lsbtest``: Part of removed LSB support. |
| 84 | |
| 85 | - ``openssl10``: Replaced by newer ``openssl`` version 1.1. |
| 86 | |
| 87 | - ``packagegroup-core-lsb``: Part of removed LSB support. |
| 88 | |
| 89 | - ``python-nose``: Removed the Python 2.x version of the recipe. |
| 90 | |
| 91 | - ``python-numpy``: Removed the Python 2.x version of the recipe. |
| 92 | |
| 93 | - ``python-scons``: Removed the Python 2.x version of the recipe. |
| 94 | |
| 95 | - ``source-highlight``: No longer needed. |
| 96 | |
| 97 | - ``stress``: Replaced by ``stress-ng``. |
| 98 | |
| 99 | - ``vulkan``: Split into ``vulkan-loader``, ``vulkan-headers``, and |
| 100 | ``vulkan-tools``. |
| 101 | |
| 102 | - ``weston-conf``: Functionality moved to ``weston-init``. |
| 103 | |
| 104 | .. _migration-3.0-packaging-changes: |
| 105 | |
| 106 | Packaging Changes |
| 107 | ----------------- |
| 108 | |
| 109 | The following packaging changes have occurred. |
| 110 | |
| 111 | - The `Epiphany <https://en.wikipedia.org/wiki/GNOME_Web>`__ browser |
| 112 | has been dropped from ``packagegroup-self-hosted`` as it has not been |
| 113 | needed inside ``build-appliance-image`` for quite some time and was |
| 114 | causing resource problems. |
| 115 | |
| 116 | - ``libcap-ng`` Python support has been moved to a separate |
| 117 | ``libcap-ng-python`` recipe to streamline the build process when the |
| 118 | Python bindings are not needed. |
| 119 | |
| 120 | - ``libdrm`` now packages the file ``amdgpu.ids`` into a separate |
| 121 | ``libdrm-amdgpu`` package. |
| 122 | |
| 123 | - ``python3``: The ``runpy`` module is now in the ``python3-core`` |
| 124 | package as it is required to support the common "python3 -m" command |
| 125 | usage. |
| 126 | |
| 127 | - ``distcc`` now provides separate ``distcc-client`` and |
| 128 | ``distcc-server`` packages as typically one or the other are needed, |
| 129 | rather than both. |
| 130 | |
| 131 | - ``python*-setuptools`` recipes now separately package the |
| 132 | ``pkg_resources`` module in a ``python-pkg-resources`` / |
| 133 | ``python3-pkg-resources`` package as the module is useful independent |
| 134 | of the rest of the setuptools package. The main ``python-setuptools`` |
| 135 | / ``python3-setuptools`` package depends on this new package so you |
| 136 | should only need to update dependencies unless you want to take |
| 137 | advantage of the increased granularity. |
| 138 | |
| 139 | .. _migration-3.0-cve-checking: |
| 140 | |
| 141 | CVE Checking |
| 142 | ------------ |
| 143 | |
| 144 | ``cve-check-tool`` has been functionally replaced by a new |
| 145 | ``cve-update-db`` recipe and functionality built into the ``cve-check`` |
| 146 | class. The result uses NVD JSON data feeds rather than the deprecated |
| 147 | XML feeds that ``cve-check-tool`` was using, supports CVSSv3 scoring, |
| 148 | and makes other improvements. |
| 149 | |
| 150 | Additionally, the ``CVE_CHECK_CVE_WHITELIST`` variable has been replaced |
| 151 | by ``CVE_CHECK_WHITELIST``. |
| 152 | |
| 153 | .. _migration-3.0-bitbake-changes: |
| 154 | |
| 155 | Bitbake Changes |
| 156 | --------------- |
| 157 | |
| 158 | The following BitBake changes have occurred. |
| 159 | |
| 160 | - ``addtask`` statements now properly validate dependent tasks. |
| 161 | Previously, an invalid task was silently ignored. With this change, |
| 162 | the invalid task generates a warning. |
| 163 | |
| 164 | - Other invalid ``addtask`` and ``deltask`` usages now trigger these |
| 165 | warnings: "multiple target tasks arguments with addtask / deltask", |
| 166 | and "multiple before/after clauses". |
| 167 | |
| 168 | - The "multiconfig" prefix is now shortened to "mc". "multiconfig" will |
| 169 | continue to work, however it may be removed in a future release. |
| 170 | |
| 171 | - The ``bitbake -g`` command no longer generates a |
| 172 | ``recipe-depends.dot`` file as the contents (i.e. a reprocessed |
| 173 | version of ``task-depends.dot``) were confusing. |
| 174 | |
| 175 | - The ``bb.build.FuncFailed`` exception, previously raised by |
| 176 | ``bb.build.exec_func()`` when certain other exceptions have occurred, |
| 177 | has been removed. The real underlying exceptions will be raised |
| 178 | instead. If you have calls to ``bb.build.exec_func()`` in custom |
| 179 | classes or ``tinfoil-using`` scripts, any references to |
| 180 | ``bb.build.FuncFailed`` should be cleaned up. |
| 181 | |
| 182 | - Additionally, the ``bb.build.exec_func()`` no longer accepts the |
| 183 | "pythonexception" parameter. The function now always raises |
| 184 | exceptions. Remove this argument in any calls to |
| 185 | ``bb.build.exec_func()`` in custom classes or scripts. |
| 186 | |
| 187 | - The |
| 188 | :term:`bitbake:BB_SETSCENE_VERIFY_FUNCTION2` |
| 189 | is no longer used. In the unlikely event that you have any references |
| 190 | to it, they should be removed. |
| 191 | |
| 192 | - The ``RunQueueExecuteScenequeue`` and ``RunQueueExecuteTasks`` events |
| 193 | have been removed since setscene tasks are now executed as part of |
| 194 | the normal runqueue. Any event handling code in custom classes or |
| 195 | scripts that handles these two events need to be updated. |
| 196 | |
| 197 | - The arguments passed to functions used with |
| 198 | :term:`bitbake:BB_HASHCHECK_FUNCTION` |
| 199 | have changed. If you are using your own custom hash check function, |
Andrew Geissler | 09209ee | 2020-12-13 08:44:15 -0600 | [diff] [blame] | 200 | see :yocto_git:`/poky/commit/?id=40a5e193c4ba45c928fccd899415ea56b5417725` |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 201 | for details. |
| 202 | |
| 203 | - Task specifications in ``BB_TASKDEPDATA`` and class implementations |
| 204 | used in signature generator classes now use "<fn>:<task>" everywhere |
| 205 | rather than the "." delimiter that was being used in some places. |
| 206 | This change makes it consistent with all areas in the code. Custom |
| 207 | signature generator classes and code that reads ``BB_TASKDEPDATA`` |
| 208 | need to be updated to use ':' as a separator rather than '.'. |
| 209 | |
| 210 | .. _migration-3.0-sanity-checks: |
| 211 | |
| 212 | Sanity Checks |
| 213 | ------------- |
| 214 | |
| 215 | The following sanity check changes occurred. |
| 216 | |
| 217 | - :term:`SRC_URI` is now checked for usage of two |
| 218 | problematic items: |
| 219 | |
| 220 | - "${PN}" prefix/suffix use - Warnings always appear if ${PN} is |
| 221 | used. You must fix the issue regardless of whether multiconfig or |
| 222 | anything else that would cause prefixing/suffixing to happen. |
| 223 | |
| 224 | - Github archive tarballs - these are not guaranteed to be stable. |
| 225 | Consequently, it is likely that the tarballs will be refreshed and |
| 226 | thus the SRC_URI checksums will fail to apply. It is recommended |
| 227 | that you fetch either an official release tarball or a specific |
| 228 | revision from the actual Git repository instead. |
| 229 | |
| 230 | Either one of these items now trigger a warning by default. If you |
| 231 | wish to disable this check, remove ``src-uri-bad`` from |
| 232 | :term:`WARN_QA`. |
| 233 | |
| 234 | - The ``file-rdeps`` runtime dependency check no longer expands |
| 235 | :term:`RDEPENDS` recursively as there is no mechanism |
| 236 | to ensure they can be fully computed, and thus races sometimes result |
| 237 | in errors either showing up or not. Thus, you might now see errors |
| 238 | for missing runtime dependencies that were previously satisfied |
| 239 | recursively. Here is an example: package A contains a shell script |
| 240 | starting with ``#!/bin/bash`` but has no dependency on bash. However, |
| 241 | package A depends on package B, which does depend on bash. You need |
| 242 | to add the missing dependency or dependencies to resolve the warning. |
| 243 | |
| 244 | - Setting ``DEPENDS_${PN}`` anywhere (i.e. typically in a recipe) now |
| 245 | triggers an error. The error is triggered because |
| 246 | :term:`DEPENDS` is not a package-specific variable |
| 247 | unlike RDEPENDS. You should set ``DEPENDS`` instead. |
| 248 | |
| 249 | - systemd currently does not work well with the musl C library because |
| 250 | only upstream officially supports linking the library with glibc. |
| 251 | Thus, a warning is shown when building systemd in conjunction with |
| 252 | musl. |
| 253 | |
| 254 | .. _migration-3.0-miscellaneous-changes: |
| 255 | |
| 256 | Miscellaneous Changes |
| 257 | --------------------- |
| 258 | |
| 259 | The following miscellaneous changes have occurred. |
| 260 | |
| 261 | - The ``gnome`` class has been removed because it now does very little. |
| 262 | You should update recipes that previously inherited this class to do |
| 263 | the following: inherit gnomebase gtk-icon-cache gconf mime |
| 264 | |
| 265 | - The ``meta/recipes-kernel/linux/linux-dtb.inc`` file has been |
| 266 | removed. This file was previously deprecated in favor of setting |
| 267 | :term:`KERNEL_DEVICETREE` in any kernel |
| 268 | recipe and only produced a warning. Remove any ``include`` or |
| 269 | ``require`` statements pointing to this file. |
| 270 | |
| 271 | - :term:`TARGET_CFLAGS`, |
| 272 | :term:`TARGET_CPPFLAGS`, |
| 273 | :term:`TARGET_CXXFLAGS`, and |
| 274 | :term:`TARGET_LDFLAGS` are no longer exported |
| 275 | to the external environment. This change did not require any changes |
| 276 | to core recipes, which is a good indicator that no changes will be |
| 277 | required. However, if for some reason the software being built by one |
| 278 | of your recipes is expecting these variables to be set, then building |
| 279 | the recipe will fail. In such cases, you must either export the |
| 280 | variable or variables in the recipe or change the scripts so that |
| 281 | exporting is not necessary. |
| 282 | |
| 283 | - You must change the host distro identifier used in |
| 284 | :term:`NATIVELSBSTRING` to use all lowercase |
| 285 | characters even if it does not contain a version number. This change |
| 286 | is necessary only if you are not using ``uninative`` and |
| 287 | :term:`SANITY_TESTED_DISTROS`. |
| 288 | |
| 289 | - In the ``base-files`` recipe, writing the hostname into |
| 290 | ``/etc/hosts`` and ``/etc/hostname`` is now done within the main |
| 291 | :ref:`ref-tasks-install` function rather than in the |
| 292 | ``do_install_basefilesissue`` function. The reason for the change is |
| 293 | because ``do_install_basefilesissue`` is more easily overridden |
| 294 | without having to duplicate the hostname functionality. If you have |
| 295 | done the latter (e.g. in a ``base-files`` bbappend), then you should |
| 296 | remove it from your customized ``do_install_basefilesissue`` |
| 297 | function. |
| 298 | |
| 299 | - The ``wic --expand`` command now uses commas to separate "key:value" |
| 300 | pairs rather than hyphens. |
| 301 | |
| 302 | .. note:: |
| 303 | |
| 304 | The wic command-line help is not updated. |
| 305 | |
| 306 | You must update any scripts or commands where you use |
| 307 | ``wic --expand`` with multiple "key:value" pairs. |
| 308 | |
| 309 | - UEFI image variable settings have been moved from various places to a |
| 310 | central ``conf/image-uefi.conf``. This change should not influence |
| 311 | any existing configuration as the ``meta/conf/image-uefi.conf`` in |
| 312 | the core metadata sets defaults that can be overridden in the same |
| 313 | manner as before. |
| 314 | |
| 315 | - ``conf/distro/include/world-broken.inc`` has been removed. For cases |
| 316 | where certain recipes need to be disabled when using the musl C |
| 317 | library, these recipes now have ``COMPATIBLE_HOST_libc-musl`` set |
| 318 | with a comment that explains why. |
| 319 | |
| 320 | |