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