Andrew Geissler | 3b8a17c | 2021-04-15 15:55:55 -0500 | [diff] [blame] | 1 | Moving to the Yocto Project 2.0 Release (jethro) |
| 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 2.0 Release (codename "jethro") from the prior release. |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 6 | |
| 7 | .. _migration-2.0-gcc-5: |
| 8 | |
| 9 | GCC 5 |
| 10 | ----- |
| 11 | |
| 12 | The default compiler is now GCC 5.2. This change has required fixes for |
| 13 | compilation errors in a number of other recipes. |
| 14 | |
| 15 | One important example is a fix for when the Linux kernel freezes at boot |
| 16 | time on ARM when built with GCC 5. If you are using your own kernel |
| 17 | recipe or source tree and building for ARM, you will likely need to |
| 18 | apply this |
| 19 | `patch <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=a077224fd35b2f7fbc93f14cf67074fc792fbac2>`__. |
| 20 | The standard ``linux-yocto`` kernel source tree already has a workaround |
| 21 | for the same issue. |
| 22 | |
| 23 | For further details, see https://gcc.gnu.org/gcc-5/changes.html |
| 24 | and the porting guide at |
| 25 | https://gcc.gnu.org/gcc-5/porting_to.html. |
| 26 | |
| 27 | Alternatively, you can switch back to GCC 4.9 or 4.8 by setting |
Andrew Geissler | c926e17 | 2021-05-07 16:11:35 -0500 | [diff] [blame^] | 28 | ``GCCVERSION`` in your configuration, as follows:: |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 29 | |
| 30 | GCCVERSION = "4.9%" |
| 31 | |
| 32 | .. _migration-2.0-Gstreamer-0.10-removed: |
| 33 | |
| 34 | Gstreamer 0.10 Removed |
| 35 | ---------------------- |
| 36 | |
| 37 | Gstreamer 0.10 has been removed in favor of Gstreamer 1.x. As part of |
| 38 | the change, recipes for Gstreamer 0.10 and related software are now |
| 39 | located in ``meta-multimedia``. This change results in Qt4 having Phonon |
| 40 | and Gstreamer support in QtWebkit disabled by default. |
| 41 | |
| 42 | .. _migration-2.0-removed-recipes: |
| 43 | |
| 44 | Removed Recipes |
| 45 | --------------- |
| 46 | |
| 47 | The following recipes have been moved or removed: |
| 48 | |
| 49 | - ``bluez4``: The recipe is obsolete and has been moved due to |
| 50 | ``bluez5`` becoming fully integrated. The ``bluez4`` recipe now |
| 51 | resides in ``meta-oe``. |
| 52 | |
| 53 | - ``gamin``: The recipe is obsolete and has been removed. |
| 54 | |
| 55 | - ``gnome-icon-theme``: The recipe's functionally has been replaced by |
| 56 | ``adwaita-icon-theme``. |
| 57 | |
| 58 | - Gstreamer 0.10 Recipes: Recipes for Gstreamer 0.10 have been removed |
| 59 | in favor of the recipes for Gstreamer 1.x. |
| 60 | |
| 61 | - ``insserv``: The recipe is obsolete and has been removed. |
| 62 | |
| 63 | - ``libunique``: The recipe is no longer used and has been moved to |
| 64 | ``meta-oe``. |
| 65 | |
| 66 | - ``midori``: The recipe's functionally has been replaced by |
| 67 | ``epiphany``. |
| 68 | |
| 69 | - ``python-gst``: The recipe is obsolete and has been removed since it |
| 70 | only contains bindings for Gstreamer 0.10. |
| 71 | |
| 72 | - ``qt-mobility``: The recipe is obsolete and has been removed since it |
| 73 | requires ``Gstreamer 0.10``, which has been replaced. |
| 74 | |
| 75 | - ``subversion``: All 1.6.x versions of this recipe have been removed. |
| 76 | |
| 77 | - ``webkit-gtk``: The older 1.8.3 version of this recipe has been |
| 78 | removed in favor of ``webkitgtk``. |
| 79 | |
| 80 | .. _migration-2.0-bitbake-datastore-improvements: |
| 81 | |
| 82 | BitBake datastore improvements |
| 83 | ------------------------------ |
| 84 | |
| 85 | The method by which BitBake's datastore handles overrides has changed. |
| 86 | Overrides are now applied dynamically and ``bb.data.update_data()`` is |
| 87 | now a no-op. Thus, ``bb.data.update_data()`` is no longer required in |
| 88 | order to apply the correct overrides. In practice, this change is |
| 89 | unlikely to require any changes to Metadata. However, these minor |
| 90 | changes in behavior exist: |
| 91 | |
| 92 | - All potential overrides are now visible in the variable history as |
Andrew Geissler | c926e17 | 2021-05-07 16:11:35 -0500 | [diff] [blame^] | 93 | seen when you run the following:: |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 94 | |
| 95 | $ bitbake -e |
| 96 | |
Andrew Geissler | 4c19ea1 | 2020-10-27 13:52:24 -0500 | [diff] [blame] | 97 | - ``d.delVar('VARNAME')`` and |
| 98 | ``d.setVar('VARNAME', None)`` result in the variable and all |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 99 | of its overrides being cleared out. Before the change, only the |
| 100 | non-overridden values were cleared. |
| 101 | |
| 102 | .. _migration-2.0-shell-message-function-changes: |
| 103 | |
| 104 | Shell Message Function Changes |
| 105 | ------------------------------ |
| 106 | |
| 107 | The shell versions of the BitBake message functions (i.e. ``bbdebug``, |
| 108 | ``bbnote``, ``bbwarn``, ``bbplain``, ``bberror``, and ``bbfatal``) are |
| 109 | now connected through to their BitBake equivalents ``bb.debug()``, |
| 110 | ``bb.note()``, ``bb.warn()``, ``bb.plain()``, ``bb.error()``, and |
| 111 | ``bb.fatal()``, respectively. Thus, those message functions that you |
| 112 | would expect to be printed by the BitBake UI are now actually printed. |
| 113 | In practice, this change means two things: |
| 114 | |
| 115 | - If you now see messages on the console that you did not previously |
| 116 | see as a result of this change, you might need to clean up the calls |
| 117 | to ``bbwarn``, ``bberror``, and so forth. Or, you might want to |
| 118 | simply remove the calls. |
| 119 | |
| 120 | - The ``bbfatal`` message function now suppresses the full error log in |
| 121 | the UI, which means any calls to ``bbfatal`` where you still wish to |
| 122 | see the full error log should be replaced by ``die`` or |
| 123 | ``bbfatal_log``. |
| 124 | |
| 125 | .. _migration-2.0-extra-development-debug-package-cleanup: |
| 126 | |
| 127 | Extra Development/Debug Package Cleanup |
| 128 | --------------------------------------- |
| 129 | |
| 130 | The following recipes have had extra ``dev/dbg`` packages removed: |
| 131 | |
| 132 | - ``acl`` |
| 133 | |
| 134 | - ``apmd`` |
| 135 | |
| 136 | - ``aspell`` |
| 137 | |
| 138 | - ``attr`` |
| 139 | |
| 140 | - ``augeas`` |
| 141 | |
| 142 | - ``bzip2`` |
| 143 | |
| 144 | - ``cogl`` |
| 145 | |
| 146 | - ``curl`` |
| 147 | |
| 148 | - ``elfutils`` |
| 149 | |
| 150 | - ``gcc-target`` |
| 151 | |
| 152 | - ``libgcc`` |
| 153 | |
| 154 | - ``libtool`` |
| 155 | |
| 156 | - ``libxmu`` |
| 157 | |
| 158 | - ``opkg`` |
| 159 | |
| 160 | - ``pciutils`` |
| 161 | |
| 162 | - ``rpm`` |
| 163 | |
| 164 | - ``sysfsutils`` |
| 165 | |
| 166 | - ``tiff`` |
| 167 | |
| 168 | - ``xz`` |
| 169 | |
| 170 | All of the above recipes now conform to the standard packaging scheme |
| 171 | where a single ``-dev``, ``-dbg``, and ``-staticdev`` package exists per |
| 172 | recipe. |
| 173 | |
| 174 | .. _migration-2.0-recipe-maintenance-tracking-data-moved-to-oe-core: |
| 175 | |
| 176 | Recipe Maintenance Tracking Data Moved to OE-Core |
| 177 | ------------------------------------------------- |
| 178 | |
| 179 | Maintenance tracking data for recipes that was previously part of |
| 180 | ``meta-yocto`` has been moved to :term:`OpenEmbedded-Core (OE-Core)`. The change |
| 181 | includes ``package_regex.inc`` and ``distro_alias.inc``, which are |
| 182 | typically enabled when using the ``distrodata`` class. Additionally, the |
| 183 | contents of ``upstream_tracking.inc`` has now been split out to the |
| 184 | relevant recipes. |
| 185 | |
| 186 | .. _migration-2.0-automatic-stale-sysroot-file-cleanup: |
| 187 | |
| 188 | Automatic Stale Sysroot File Cleanup |
| 189 | ------------------------------------ |
| 190 | |
| 191 | Stale files from recipes that no longer exist in the current |
| 192 | configuration are now automatically removed from sysroot as well as |
| 193 | removed from any other place managed by shared state. This automatic |
| 194 | cleanup means that the build system now properly handles situations such |
| 195 | as renaming the build system side of recipes, removal of layers from |
| 196 | ``bblayers.conf``, and :term:`DISTRO_FEATURES` |
| 197 | changes. |
| 198 | |
| 199 | Additionally, work directories for old versions of recipes are now |
| 200 | pruned. If you wish to disable pruning old work directories, you can set |
Andrew Geissler | c926e17 | 2021-05-07 16:11:35 -0500 | [diff] [blame^] | 201 | the following variable in your configuration:: |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 202 | |
| 203 | SSTATE_PRUNE_OBSOLETEWORKDIR = "0" |
| 204 | |
| 205 | .. _migration-2.0-linux-yocto-kernel-metadata-repository-now-split-from-source: |
| 206 | |
| 207 | ``linux-yocto`` Kernel Metadata Repository Now Split from Source |
| 208 | ---------------------------------------------------------------- |
| 209 | |
| 210 | The ``linux-yocto`` tree has up to now been a combined set of kernel |
| 211 | changes and configuration (meta) data carried in a single tree. While |
| 212 | this format is effective at keeping kernel configuration and source |
| 213 | modifications synchronized, it is not always obvious to developers how |
| 214 | to manipulate the Metadata as compared to the source. |
| 215 | |
| 216 | Metadata processing has now been removed from the |
| 217 | :ref:`kernel-yocto <ref-classes-kernel-yocto>` class and the external |
| 218 | Metadata repository ``yocto-kernel-cache``, which has always been used |
| 219 | to seed the ``linux-yocto`` "meta" branch. This separate ``linux-yocto`` |
| 220 | cache repository is now the primary location for this data. Due to this |
| 221 | change, ``linux-yocto`` is no longer able to process combined trees. |
| 222 | Thus, if you need to have your own combined kernel repository, you must |
| 223 | do the split there as well and update your recipes accordingly. See the |
| 224 | ``meta/recipes-kernel/linux/linux-yocto_4.1.bb`` recipe for an example. |
| 225 | |
| 226 | .. _migration-2.0-additional-qa-checks: |
| 227 | |
| 228 | Additional QA checks |
| 229 | -------------------- |
| 230 | |
| 231 | The following QA checks have been added: |
| 232 | |
| 233 | - Added a "host-user-contaminated" check for ownership issues for |
| 234 | packaged files outside of ``/home``. The check looks for files that |
| 235 | are incorrectly owned by the user that ran BitBake instead of owned |
| 236 | by a valid user in the target system. |
| 237 | |
| 238 | - Added an "invalid-chars" check for invalid (non-UTF8) characters in |
| 239 | recipe metadata variable values (i.e. |
| 240 | :term:`DESCRIPTION`, |
| 241 | :term:`SUMMARY`, :term:`LICENSE`, and |
| 242 | :term:`SECTION`). Some package managers do not support |
| 243 | these characters. |
| 244 | |
| 245 | - Added an "invalid-packageconfig" check for any options specified in |
| 246 | :term:`PACKAGECONFIG` that do not match any |
| 247 | ``PACKAGECONFIG`` option defined for the recipe. |
| 248 | |
| 249 | .. _migration-2.0-miscellaneous: |
| 250 | |
| 251 | Miscellaneous Changes |
| 252 | --------------------- |
| 253 | |
| 254 | These additional changes exist: |
| 255 | |
| 256 | - ``gtk-update-icon-cache`` has been renamed to ``gtk-icon-utils``. |
| 257 | |
| 258 | - The ``tools-profile`` :term:`IMAGE_FEATURES` |
| 259 | item as well as its corresponding packagegroup and |
| 260 | ``packagegroup-core-tools-profile`` no longer bring in ``oprofile``. |
| 261 | Bringing in ``oprofile`` was originally added to aid compilation on |
| 262 | resource-constrained targets. However, this aid has not been widely |
| 263 | used and is not likely to be used going forward due to the more |
| 264 | powerful target platforms and the existence of better |
| 265 | cross-compilation tools. |
| 266 | |
| 267 | - The :term:`IMAGE_FSTYPES` variable's default |
| 268 | value now specifies ``ext4`` instead of ``ext3``. |
| 269 | |
| 270 | - All support for the ``PRINC`` variable has been removed. |
| 271 | |
| 272 | - The ``packagegroup-core-full-cmdline`` packagegroup no longer brings |
| 273 | in ``lighttpd`` due to the fact that bringing in ``lighttpd`` is not |
| 274 | really in line with the packagegroup's purpose, which is to add full |
| 275 | versions of command-line tools that by default are provided by |
| 276 | ``busybox``. |
| 277 | |
| 278 | |