Andrew Geissler | 3b8a17c | 2021-04-15 15:55:55 -0500 | [diff] [blame] | 1 | Moving to the Yocto Project 1.7 Release (dizzy) |
| 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 1.7 Release (codename "dizzy") from the prior release. |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 6 | |
| 7 | .. _migration-1.7-changes-to-setting-qemu-packageconfig-options: |
| 8 | |
| 9 | Changes to Setting QEMU ``PACKAGECONFIG`` Options in ``local.conf`` |
| 10 | ------------------------------------------------------------------- |
| 11 | |
| 12 | The QEMU recipe now uses a number of |
| 13 | :term:`PACKAGECONFIG` options to enable various |
| 14 | optional features. The method used to set defaults for these options |
Andrew Geissler | 3b8a17c | 2021-04-15 15:55:55 -0500 | [diff] [blame] | 15 | means that existing ``local.conf`` files will need to be modified to |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 16 | append to ``PACKAGECONFIG`` for ``qemu-native`` and ``nativesdk-qemu`` |
| 17 | instead of setting it. In other words, to enable graphical output for |
Andrew Geissler | c926e17 | 2021-05-07 16:11:35 -0500 | [diff] [blame^] | 18 | QEMU, you should now have these lines in ``local.conf``:: |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 19 | |
| 20 | PACKAGECONFIG_append_pn-qemu-native = " sdl" |
| 21 | PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl" |
| 22 | |
| 23 | .. _migration-1.7-minimum-git-version: |
| 24 | |
| 25 | Minimum Git version |
| 26 | ------------------- |
| 27 | |
Andrew Geissler | 09209ee | 2020-12-13 08:44:15 -0600 | [diff] [blame] | 28 | The minimum :ref:`overview-manual/development-environment:git` |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 29 | version required on the |
| 30 | build host is now 1.7.8 because the ``--list`` option is now required by |
| 31 | BitBake's Git fetcher. As always, if your host distribution does not |
| 32 | provide a version of Git that meets this requirement, you can use the |
Andrew Geissler | 4c19ea1 | 2020-10-27 13:52:24 -0500 | [diff] [blame] | 33 | ``buildtools-tarball`` that does. See the |
Andrew Geissler | 09209ee | 2020-12-13 08:44:15 -0600 | [diff] [blame] | 34 | ":ref:`ref-manual/system-requirements:required git, tar, python and gcc versions`" |
Andrew Geissler | 4c19ea1 | 2020-10-27 13:52:24 -0500 | [diff] [blame] | 35 | section for more information. |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 36 | |
| 37 | .. _migration-1.7-autotools-class-changes: |
| 38 | |
| 39 | Autotools Class Changes |
| 40 | ----------------------- |
| 41 | |
| 42 | The following :ref:`autotools <ref-classes-autotools>` class changes |
| 43 | occurred: |
| 44 | |
| 45 | - *A separate build directory is now used by default:* The |
| 46 | ``autotools`` class has been changed to use a directory for building |
| 47 | (:term:`B`), which is separate from the source directory |
| 48 | (:term:`S`). This is commonly referred to as ``B != S``, or |
| 49 | an out-of-tree build. |
| 50 | |
| 51 | If the software being built is already capable of building in a |
| 52 | directory separate from the source, you do not need to do anything. |
| 53 | However, if the software is not capable of being built in this |
| 54 | manner, you will need to either patch the software so that it can |
| 55 | build separately, or you will need to change the recipe to inherit |
| 56 | the :ref:`autotools-brokensep <ref-classes-autotools>` class |
| 57 | instead of the ``autotools`` or ``autotools_stage`` classes. |
| 58 | |
| 59 | - The ``--foreign`` option is no longer passed to ``automake`` when |
| 60 | running ``autoconf``: This option tells ``automake`` that a |
| 61 | particular software package does not follow the GNU standards and |
| 62 | therefore should not be expected to distribute certain files such as |
| 63 | ``ChangeLog``, ``AUTHORS``, and so forth. Because the majority of |
| 64 | upstream software packages already tell ``automake`` to enable |
| 65 | foreign mode themselves, the option is mostly superfluous. However, |
| 66 | some recipes will need patches for this change. You can easily make |
| 67 | the change by patching ``configure.ac`` so that it passes "foreign" |
Andrew Geissler | 09209ee | 2020-12-13 08:44:15 -0600 | [diff] [blame] | 68 | to ``AM_INIT_AUTOMAKE()``. See :oe_git:`this |
| 69 | commit </openembedded-core/commit/?id=01943188f85ce6411717fb5bf702d609f55813f2>` |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 70 | for an example showing how to make the patch. |
| 71 | |
| 72 | .. _migration-1.7-binary-configuration-scripts-disabled: |
| 73 | |
| 74 | Binary Configuration Scripts Disabled |
| 75 | ------------------------------------- |
| 76 | |
| 77 | Some of the core recipes that package binary configuration scripts now |
| 78 | disable the scripts due to the scripts previously requiring error-prone |
| 79 | path substitution. Software that links against these libraries using |
| 80 | these scripts should use the much more robust ``pkg-config`` instead. |
| 81 | The list of recipes changed in this version (and their configuration |
Andrew Geissler | c926e17 | 2021-05-07 16:11:35 -0500 | [diff] [blame^] | 82 | scripts) is as follows:: |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 83 | |
| 84 | directfb (directfb-config) |
| 85 | freetype (freetype-config) |
| 86 | gpgme (gpgme-config) |
| 87 | libassuan (libassuan-config) |
| 88 | libcroco (croco-6.0-config) |
| 89 | libgcrypt (libgcrypt-config) |
| 90 | libgpg-error (gpg-error-config) |
| 91 | libksba (ksba-config) |
| 92 | libpcap (pcap-config) |
| 93 | libpcre (pcre-config) |
| 94 | libpng (libpng-config, libpng16-config) |
| 95 | libsdl (sdl-config) |
| 96 | libusb-compat (libusb-config) |
| 97 | libxml2 (xml2-config) |
| 98 | libxslt (xslt-config) |
| 99 | ncurses (ncurses-config) |
| 100 | neon (neon-config) |
| 101 | npth (npth-config) |
| 102 | pth (pth-config) |
| 103 | taglib (taglib-config) |
| 104 | |
| 105 | Additionally, support for ``pkg-config`` has been added to some recipes in the |
| 106 | previous list in the rare cases where the upstream software package does |
| 107 | not already provide it. |
| 108 | |
| 109 | .. _migration-1.7-glibc-replaces-eglibc: |
| 110 | |
| 111 | ``eglibc 2.19`` Replaced with ``glibc 2.20`` |
| 112 | -------------------------------------------- |
| 113 | |
| 114 | Because ``eglibc`` and ``glibc`` were already fairly close, this |
| 115 | replacement should not require any significant changes to other software |
| 116 | that links to ``eglibc``. However, there were a number of minor changes |
| 117 | in ``glibc 2.20`` upstream that could require patching some software |
| 118 | (e.g. the removal of the ``_BSD_SOURCE`` feature test macro). |
| 119 | |
| 120 | ``glibc 2.20`` requires version 2.6.32 or greater of the Linux kernel. |
| 121 | Thus, older kernels will no longer be usable in conjunction with it. |
| 122 | |
| 123 | For full details on the changes in ``glibc 2.20``, see the upstream |
| 124 | release notes |
| 125 | `here <https://sourceware.org/ml/libc-alpha/2014-09/msg00088.html>`__. |
| 126 | |
| 127 | .. _migration-1.7-kernel-module-autoloading: |
| 128 | |
| 129 | Kernel Module Autoloading |
| 130 | ------------------------- |
| 131 | |
| 132 | The :term:`module_autoload_* <module_autoload>` variable is now |
| 133 | deprecated and a new |
| 134 | :term:`KERNEL_MODULE_AUTOLOAD` variable |
| 135 | should be used instead. Also, :term:`module_conf_* <module_conf>` |
| 136 | must now be used in conjunction with a new |
| 137 | :term:`KERNEL_MODULE_PROBECONF` variable. |
| 138 | The new variables no longer require you to specify the module name as |
| 139 | part of the variable name. This change not only simplifies usage but |
| 140 | also allows the values of these variables to be appropriately |
| 141 | incorporated into task signatures and thus trigger the appropriate tasks |
| 142 | to re-execute when changed. You should replace any references to |
| 143 | ``module_autoload_*`` with ``KERNEL_MODULE_AUTOLOAD``, and add any |
| 144 | modules for which ``module_conf_*`` is specified to |
| 145 | ``KERNEL_MODULE_PROBECONF``. |
| 146 | |
| 147 | .. _migration-1.7-qa-check-changes: |
| 148 | |
| 149 | QA Check Changes |
| 150 | ---------------- |
| 151 | |
| 152 | The following changes have occurred to the QA check process: |
| 153 | |
| 154 | - Additional QA checks ``file-rdeps`` and ``build-deps`` have been |
| 155 | added in order to verify that file dependencies are satisfied (e.g. |
| 156 | package contains a script requiring ``/bin/bash``) and build-time |
| 157 | dependencies are declared, respectively. For more information, please |
Andrew Geissler | 09209ee | 2020-12-13 08:44:15 -0600 | [diff] [blame] | 158 | see the ":doc:`/ref-manual/qa-checks`" chapter. |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 159 | |
| 160 | - Package QA checks are now performed during a new |
| 161 | :ref:`ref-tasks-package_qa` task rather than being |
| 162 | part of the :ref:`ref-tasks-package` task. This allows |
| 163 | more parallel execution. This change is unlikely to be an issue |
| 164 | except for highly customized recipes that disable packaging tasks |
| 165 | themselves by marking them as ``noexec``. For those packages, you |
| 166 | will need to disable the ``do_package_qa`` task as well. |
| 167 | |
| 168 | - Files being overwritten during the |
| 169 | :ref:`ref-tasks-populate_sysroot` task now |
| 170 | trigger an error instead of a warning. Recipes should not be |
| 171 | overwriting files written to the sysroot by other recipes. If you |
| 172 | have these types of recipes, you need to alter them so that they do |
| 173 | not overwrite these files. |
| 174 | |
| 175 | You might now receive this error after changes in configuration or |
| 176 | metadata resulting in orphaned files being left in the sysroot. If |
| 177 | you do receive this error, the way to resolve the issue is to delete |
| 178 | your :term:`TMPDIR` or to move it out of the way and |
| 179 | then re-start the build. Anything that has been fully built up to |
| 180 | that point and does not need rebuilding will be restored from the |
| 181 | shared state cache and the rest of the build will be able to proceed |
| 182 | as normal. |
| 183 | |
| 184 | .. _migration-1.7-removed-recipes: |
| 185 | |
| 186 | Removed Recipes |
| 187 | --------------- |
| 188 | |
| 189 | The following recipes have been removed: |
| 190 | |
Andrew Geissler | d1e8949 | 2021-02-12 15:35:20 -0600 | [diff] [blame] | 191 | - ``x-load``: This recipe has been superseded by U-Boot SPL for all |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 192 | Cortex-based TI SoCs. For legacy boards, the ``meta-ti`` layer, which |
| 193 | contains a maintained recipe, should be used instead. |
| 194 | |
| 195 | - ``ubootchart``: This recipe is obsolete. A ``bootchart2`` recipe has |
| 196 | been added to functionally replace it. |
| 197 | |
| 198 | - ``linux-yocto 3.4``: Support for the linux-yocto 3.4 kernel has been |
| 199 | dropped. Support for the 3.10 and 3.14 kernels remains, while support |
| 200 | for version 3.17 has been added. |
| 201 | |
| 202 | - ``eglibc`` has been removed in favor of ``glibc``. See the |
Andrew Geissler | 4c19ea1 | 2020-10-27 13:52:24 -0500 | [diff] [blame] | 203 | ":ref:`migration-1.7-glibc-replaces-eglibc`" section for more information. |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 204 | |
| 205 | .. _migration-1.7-miscellaneous-changes: |
| 206 | |
| 207 | Miscellaneous Changes |
| 208 | --------------------- |
| 209 | |
| 210 | The following miscellaneous change occurred: |
| 211 | |
| 212 | - The build history feature now writes ``build-id.txt`` instead of |
| 213 | ``build-id``. Additionally, ``build-id.txt`` now contains the full |
| 214 | build header as printed by BitBake upon starting the build. You |
| 215 | should manually remove old "build-id" files from your existing build |
| 216 | history repositories to avoid confusion. For information on the build |
| 217 | history feature, see the |
Andrew Geissler | 09209ee | 2020-12-13 08:44:15 -0600 | [diff] [blame] | 218 | ":ref:`dev-manual/common-tasks:maintaining build output quality`" |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 219 | section in the Yocto Project Development Tasks Manual. |
| 220 | |
| 221 | |