Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 1 | Moving to the Yocto Project 2.4 Release |
| 2 | ======================================= |
| 3 | |
| 4 | This section provides migration information for moving to the Yocto |
| 5 | Project 2.4 Release from the prior release. |
| 6 | |
| 7 | .. _migration-2.4-memory-resident-mode: |
| 8 | |
| 9 | Memory Resident Mode |
| 10 | -------------------- |
| 11 | |
| 12 | A persistent mode is now available in BitBake's default operation, |
| 13 | replacing its previous "memory resident mode" (i.e. |
| 14 | ``oe-init-build-env-memres``). Now you only need to set |
| 15 | :term:`BB_SERVER_TIMEOUT` to a timeout (in |
| 16 | seconds) and BitBake's server stays resident for that amount of time |
| 17 | between invocations. The ``oe-init-build-env-memres`` script has been |
| 18 | removed since a separate environment setup script is no longer needed. |
| 19 | |
| 20 | .. _migration-2.4-packaging-changes: |
| 21 | |
| 22 | Packaging Changes |
| 23 | ----------------- |
| 24 | |
| 25 | This section provides information about packaging changes that have |
| 26 | occurred: |
| 27 | |
| 28 | - ``python3`` Changes: |
| 29 | |
| 30 | - The main "python3" package now brings in all of the standard |
| 31 | Python 3 distribution rather than a subset. This behavior matches |
| 32 | what is expected based on traditional Linux distributions. If you |
| 33 | wish to install a subset of Python 3, specify ``python-core`` plus |
| 34 | one or more of the individual packages that are still produced. |
| 35 | |
| 36 | - ``python3``: The ``bz2.py``, ``lzma.py``, and |
| 37 | ``_compression.py`` scripts have been moved from the |
| 38 | ``python3-misc`` package to the ``python3-compression`` package. |
| 39 | |
| 40 | - ``binutils``: The ``libbfd`` library is now packaged in a separate |
| 41 | "libbfd" package. This packaging saves space when certain tools (e.g. |
| 42 | ``perf``) are installed. In such cases, the tools only need |
| 43 | ``libbfd`` rather than all the packages in ``binutils``. |
| 44 | |
| 45 | - ``util-linux`` Changes: |
| 46 | |
| 47 | - The ``su`` program is now packaged in a separate "util-linux-su" |
| 48 | package, which is only built when "pam" is listed in the |
| 49 | :term:`DISTRO_FEATURES` variable. |
| 50 | ``util-linux`` should not be installed unless it is needed because |
| 51 | ``su`` is normally provided through the shadow file format. The |
| 52 | main ``util-linux`` package has runtime dependencies (i.e. |
| 53 | :term:`RDEPENDS`) on the ``util-linux-su`` package |
| 54 | when "pam" is in ``DISTRO_FEATURES``. |
| 55 | |
| 56 | - The ``switch_root`` program is now packaged in a separate |
| 57 | "util-linux-switch-root" package for small initramfs images that |
| 58 | do not need the whole ``util-linux`` package or the busybox |
| 59 | binary, which are both much larger than ``switch_root``. The main |
| 60 | ``util-linux`` package has a recommended runtime dependency (i.e. |
| 61 | :term:`RRECOMMENDS`) on the |
| 62 | ``util-linux-switch-root`` package. |
| 63 | |
| 64 | - The ``ionice`` program is now packaged in a separate |
| 65 | "util-linux-ionice" package. The main ``util-linux`` package has a |
| 66 | recommended runtime dependency (i.e. ``RRECOMMENDS``) on the |
| 67 | ``util-linux-ionice`` package. |
| 68 | |
| 69 | - ``initscripts``: The ``sushell`` program is now packaged in a |
| 70 | separate "initscripts-sushell" package. This packaging change allows |
| 71 | systems to pull ``sushell`` in when ``selinux`` is enabled. The |
| 72 | change also eliminates needing to pull in the entire ``initscripts`` |
| 73 | package. The main ``initscripts`` package has a runtime dependency |
| 74 | (i.e. ``RDEPENDS``) on the ``sushell`` package when "selinux" is in |
| 75 | ``DISTRO_FEATURES``. |
| 76 | |
| 77 | - ``glib-2.0``: The ``glib-2.0`` package now has a recommended |
| 78 | runtime dependency (i.e. ``RRECOMMENDS``) on the ``shared-mime-info`` |
| 79 | package, since large portions of GIO are not useful without the MIME |
| 80 | database. You can remove the dependency by using the |
| 81 | :term:`BAD_RECOMMENDATIONS` variable if |
| 82 | ``shared-mime-info`` is too large and is not required. |
| 83 | |
| 84 | - *Go Standard Runtime:* The Go standard runtime has been split out |
| 85 | from the main ``go`` recipe into a separate ``go-runtime`` recipe. |
| 86 | |
| 87 | .. _migration-2.4-removed-recipes: |
| 88 | |
| 89 | Removed Recipes |
| 90 | --------------- |
| 91 | |
| 92 | The following recipes have been removed: |
| 93 | |
| 94 | - ``acpitests``: This recipe is not maintained. |
| 95 | |
| 96 | - ``autogen-native``: No longer required by Grub, oe-core, or |
| 97 | meta-oe. |
| 98 | |
| 99 | - ``bdwgc``: Nothing in OpenEmbedded-Core requires this recipe. It |
| 100 | has moved to meta-oe. |
| 101 | |
| 102 | - ``byacc``: This recipe was only needed by rpm 5.x and has moved to |
| 103 | meta-oe. |
| 104 | |
| 105 | - ``gcc (5.4)``: The 5.4 series dropped the recipe in favor of 6.3 / |
| 106 | 7.2. |
| 107 | |
| 108 | - ``gnome-common``: Deprecated upstream and no longer needed. |
| 109 | |
| 110 | - ``go-bootstrap-native``: Go 1.9 does its own bootstrapping so this |
| 111 | recipe has been removed. |
| 112 | |
| 113 | - ``guile``: This recipe was only needed by ``autogen-native`` and |
| 114 | ``remake``. The recipe is no longer needed by either of these |
| 115 | programs. |
| 116 | |
| 117 | - ``libclass-isa-perl``: This recipe was previously needed for LSB 4, |
| 118 | no longer needed. |
| 119 | |
| 120 | - ``libdumpvalue-perl``: This recipe was previously needed for LSB 4, |
| 121 | no longer needed. |
| 122 | |
| 123 | - ``libenv-perl``: This recipe was previously needed for LSB 4, no |
| 124 | longer needed. |
| 125 | |
| 126 | - ``libfile-checktree-perl``: This recipe was previously needed for |
| 127 | LSB 4, no longer needed. |
| 128 | |
| 129 | - ``libi18n-collate-perl``: This recipe was previously needed for LSB |
| 130 | 4, no longer needed. |
| 131 | |
| 132 | - ``libiconv``: This recipe was only needed for ``uclibc``, which was |
| 133 | removed in the previous release. ``glibc`` and ``musl`` have their |
| 134 | own implementations. ``meta-mingw`` still needs ``libiconv``, so it |
| 135 | has been moved to ``meta-mingw``. |
| 136 | |
| 137 | - ``libpng12``: This recipe was previously needed for LSB. The |
| 138 | current ``libpng`` is 1.6.x. |
| 139 | |
| 140 | - ``libpod-plainer-perl``: This recipe was previously needed for LSB |
| 141 | 4, no longer needed. |
| 142 | |
| 143 | - ``linux-yocto (4.1)``: This recipe was removed in favor of 4.4, |
| 144 | 4.9, 4.10 and 4.12. |
| 145 | |
| 146 | - ``mailx``: This recipe was previously only needed for LSB |
| 147 | compatibility, and upstream is defunct. |
| 148 | |
| 149 | - ``mesa (git version only)``: The git version recipe was stale with |
| 150 | respect to the release version. |
| 151 | |
| 152 | - ``ofono (git version only)``: The git version recipe was stale with |
| 153 | respect to the release version. |
| 154 | |
| 155 | - ``portmap``: This recipe is obsolete and is superseded by |
| 156 | ``rpcbind``. |
| 157 | |
| 158 | - ``python3-pygpgme``: This recipe is old and unmaintained. It was |
| 159 | previously required by ``dnf``, which has switched to official |
| 160 | ``gpgme`` Python bindings. |
| 161 | |
| 162 | - ``python-async``: This recipe has been removed in favor of the |
| 163 | Python 3 version. |
| 164 | |
| 165 | - ``python-gitdb``: This recipe has been removed in favor of the |
| 166 | Python 3 version. |
| 167 | |
| 168 | - ``python-git``: This recipe was removed in favor of the Python 3 |
| 169 | version. |
| 170 | |
| 171 | - ``python-mako``: This recipe was removed in favor of the Python 3 |
| 172 | version. |
| 173 | |
| 174 | - ``python-pexpect``: This recipe was removed in favor of the Python |
| 175 | 3 version. |
| 176 | |
| 177 | - ``python-ptyprocess``: This recipe was removed in favor of Python |
| 178 | the 3 version. |
| 179 | |
| 180 | - ``python-pycurl``: Nothing is using this recipe in |
| 181 | OpenEmbedded-Core (i.e. ``meta-oe``). |
| 182 | |
| 183 | - ``python-six``: This recipe was removed in favor of the Python 3 |
| 184 | version. |
| 185 | |
| 186 | - ``python-smmap``: This recipe was removed in favor of the Python 3 |
| 187 | version. |
| 188 | |
| 189 | - ``remake``: Using ``remake`` as the provider of ``virtual/make`` is |
| 190 | broken. Consequently, this recipe is not needed in OpenEmbedded-Core. |
| 191 | |
| 192 | .. _migration-2.4-kernel-device-tree-move: |
| 193 | |
| 194 | Kernel Device Tree Move |
| 195 | ----------------------- |
| 196 | |
| 197 | Kernel Device Tree support is now easier to enable in a kernel recipe. |
| 198 | The Device Tree code has moved to a |
| 199 | :ref:`kernel-devicetree <ref-classes-kernel-devicetree>` class. |
| 200 | Functionality is automatically enabled for any recipe that inherits the |
| 201 | :ref:`kernel <ref-classes-kernel>` class and sets the |
| 202 | :term:`KERNEL_DEVICETREE` variable. The |
| 203 | previous mechanism for doing this, |
| 204 | ``meta/recipes-kernel/linux/linux-dtb.inc``, is still available to avoid |
| 205 | breakage, but triggers a deprecation warning. Future releases of the |
| 206 | Yocto Project will remove ``meta/recipes-kernel/linux/linux-dtb.inc``. |
| 207 | It is advisable to remove any ``require`` statements that request |
| 208 | ``meta/recipes-kernel/linux/linux-dtb.inc`` from any custom kernel |
| 209 | recipes you might have. This will avoid breakage in post 2.4 releases. |
| 210 | |
| 211 | .. _migration-2.4-package-qa-changes: |
| 212 | |
| 213 | Package QA Changes |
| 214 | ------------------ |
| 215 | |
| 216 | The following package QA changes took place: |
| 217 | |
| 218 | - The "unsafe-references-in-scripts" QA check has been removed. |
| 219 | |
| 220 | - If you refer to ``${COREBASE}/LICENSE`` within |
| 221 | :term:`LIC_FILES_CHKSUM` you receive a |
| 222 | warning because this file is a description of the license for |
| 223 | OE-Core. Use ``${COMMON_LICENSE_DIR}/MIT`` if your recipe is |
| 224 | MIT-licensed and you cannot use the preferred method of referring to |
| 225 | a file within the source tree. |
| 226 | |
| 227 | .. _migration-2.4-readme-changes: |
| 228 | |
| 229 | ``README`` File Changes |
| 230 | ----------------------- |
| 231 | |
| 232 | The following are changes to ``README`` files: |
| 233 | |
| 234 | - The main Poky ``README`` file has been moved to the ``meta-poky`` |
| 235 | layer and has been renamed ``README.poky``. A symlink has been |
| 236 | created so that references to the old location work. |
| 237 | |
| 238 | - The ``README.hardware`` file has been moved to ``meta-yocto-bsp``. A |
| 239 | symlink has been created so that references to the old location work. |
| 240 | |
| 241 | - A ``README.qemu`` file has been created with coverage of the |
| 242 | ``qemu*`` machines. |
| 243 | |
| 244 | .. _migration-2.4-miscellaneous-changes: |
| 245 | |
| 246 | Miscellaneous Changes |
| 247 | --------------------- |
| 248 | |
| 249 | The following are additional changes: |
| 250 | |
| 251 | - The ``ROOTFS_PKGMANAGE_BOOTSTRAP`` variable and any references to it |
| 252 | have been removed. You should remove this variable from any custom |
| 253 | recipes. |
| 254 | |
| 255 | - The ``meta-yocto`` directory has been removed. |
| 256 | |
| 257 | .. note:: |
| 258 | |
| 259 | In the Yocto Project 2.1 release |
| 260 | meta-yocto |
| 261 | was renamed to |
| 262 | meta-poky |
| 263 | and the |
| 264 | meta-yocto |
| 265 | subdirectory remained to avoid breaking existing configurations. |
| 266 | |
| 267 | - The ``maintainers.inc`` file, which tracks maintainers by listing a |
| 268 | primary person responsible for each recipe in OE-Core, has been moved |
| 269 | from ``meta-poky`` to OE-Core (i.e. from |
| 270 | ``meta-poky/conf/distro/include`` to ``meta/conf/distro/include``). |
| 271 | |
| 272 | - The :ref:`buildhistory <ref-classes-buildhistory>` class now makes |
| 273 | a single commit per build rather than one commit per subdirectory in |
| 274 | the repository. This behavior assumes the commits are enabled with |
| 275 | :term:`BUILDHISTORY_COMMIT` = "1", which |
| 276 | is typical. Previously, the ``buildhistory`` class made one commit |
| 277 | per subdirectory in the repository in order to make it easier to see |
| 278 | the changes for a particular subdirectory. To view a particular |
| 279 | change, specify that subdirectory as the last parameter on the |
| 280 | ``git show`` or ``git diff`` commands. |
| 281 | |
| 282 | - The ``x86-base.inc`` file, which is included by all x86-based machine |
| 283 | configurations, now sets :term:`IMAGE_FSTYPES` |
| 284 | using ``?=`` to "live" rather than appending with ``+=``. This change |
| 285 | makes the default easier to override. |
| 286 | |
| 287 | - BitBake fires multiple "BuildStarted" events when multiconfig is |
| 288 | enabled (one per configuration). For more information, see the |
| 289 | ":ref:`Events <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:events>`" section in the BitBake User |
| 290 | Manual. |
| 291 | |
| 292 | - By default, the ``security_flags.inc`` file sets a |
| 293 | :term:`GCCPIE` variable with an option to enable |
| 294 | Position Independent Executables (PIE) within ``gcc``. Enabling PIE |
| 295 | in the GNU C Compiler (GCC), makes Return Oriented Programming (ROP) |
| 296 | attacks much more difficult to execute. |
| 297 | |
| 298 | - OE-Core now provides a ``bitbake-layers`` plugin that implements a |
| 299 | "create-layer" subcommand. The implementation of this subcommand has |
| 300 | resulted in the ``yocto-layer`` script being deprecated and will |
| 301 | likely be removed in the next Yocto Project release. |
| 302 | |
| 303 | - The ``vmdk``, ``vdi``, and ``qcow2`` image file types are now used in |
| 304 | conjunction with the "wic" image type through ``CONVERSION_CMD``. |
| 305 | Consequently, the equivalent image types are now ``wic.vmdk``, |
| 306 | ``wic.vdi``, and ``wic.qcow2``, respectively. |
| 307 | |
| 308 | - ``do_image_<type>[depends]`` has replaced ``IMAGE_DEPENDS_<type>``. |
| 309 | If you have your own classes that implement custom image types, then |
| 310 | you need to update them. |
| 311 | |
| 312 | - OpenSSL 1.1 has been introduced. However, the default is still 1.0.x |
| 313 | through the :term:`PREFERRED_VERSION` |
| 314 | variable. This preference is set is due to the remaining |
| 315 | compatibility issues with other software. The |
| 316 | :term:`PROVIDES` variable in the openssl 1.0 recipe |
| 317 | now includes "openssl10" as a marker that can be used in |
| 318 | :term:`DEPENDS` within recipes that build software |
| 319 | that still depend on OpenSSL 1.0. |
| 320 | |
| 321 | - To ensure consistent behavior, BitBake's "-r" and "-R" options (i.e. |
| 322 | prefile and postfile), which are used to read or post-read additional |
| 323 | configuration files from the command line, now only affect the |
| 324 | current BitBake command. Before these BitBake changes, these options |
| 325 | would "stick" for future executions. |
| 326 | |
| 327 | |