summaryrefslogtreecommitdiffstats
path: root/documentation/migration-guides/migration-2.4.rst
blob: 8904495022dd4d41934041415b171c787b85d981 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
Release 2.4 (rocko)
===================

This section provides migration information for moving to the Yocto
Project 2.4 Release (codename "rocko") from the prior release.

.. _migration-2.4-memory-resident-mode:

Memory Resident Mode
--------------------

A persistent mode is now available in BitBake's default operation,
replacing its previous "memory resident mode" (i.e.
``oe-init-build-env-memres``). Now you only need to set
:term:`BB_SERVER_TIMEOUT` to a timeout (in
seconds) and BitBake's server stays resident for that amount of time
between invocations. The ``oe-init-build-env-memres`` script has been
removed since a separate environment setup script is no longer needed.

.. _migration-2.4-packaging-changes:

Packaging Changes
-----------------

This section provides information about packaging changes that have
occurred:

-  ``python3`` Changes:

   -  The main "python3" package now brings in all of the standard
      Python 3 distribution rather than a subset. This behavior matches
      what is expected based on traditional Linux distributions. If you
      wish to install a subset of Python 3, specify ``python-core`` plus
      one or more of the individual packages that are still produced.

   -  ``python3``: The ``bz2.py``, ``lzma.py``, and
      ``_compression.py`` scripts have been moved from the
      ``python3-misc`` package to the ``python3-compression`` package.

-  ``binutils``: The ``libbfd`` library is now packaged in a separate
   "libbfd" package. This packaging saves space when certain tools (e.g.
   ``perf``) are installed. In such cases, the tools only need
   ``libbfd`` rather than all the packages in ``binutils``.

-  ``util-linux`` Changes:

   -  The ``su`` program is now packaged in a separate "util-linux-su"
      package, which is only built when "pam" is listed in the
      :term:`DISTRO_FEATURES` variable.
      ``util-linux`` should not be installed unless it is needed because
      ``su`` is normally provided through the shadow file format. The
      main ``util-linux`` package has runtime dependencies (i.e.
      :term:`RDEPENDS`) on the ``util-linux-su`` package
      when "pam" is in :term:`DISTRO_FEATURES`.

   -  The ``switch_root`` program is now packaged in a separate
      "util-linux-switch-root" package for small :term:`Initramfs` images that
      do not need the whole ``util-linux`` package or the busybox
      binary, which are both much larger than ``switch_root``. The main
      ``util-linux`` package has a recommended runtime dependency (i.e.
      :term:`RRECOMMENDS`) on the
      ``util-linux-switch-root`` package.

   -  The ``ionice`` program is now packaged in a separate
      "util-linux-ionice" package. The main ``util-linux`` package has a
      recommended runtime dependency (i.e. :term:`RRECOMMENDS`) on the
      ``util-linux-ionice`` package.

-  ``initscripts``: The ``sushell`` program is now packaged in a
   separate "initscripts-sushell" package. This packaging change allows
   systems to pull ``sushell`` in when ``selinux`` is enabled. The
   change also eliminates needing to pull in the entire ``initscripts``
   package. The main ``initscripts`` package has a runtime dependency
   (i.e. :term:`RDEPENDS`) on the ``sushell`` package when "selinux" is in
   :term:`DISTRO_FEATURES`.

-  ``glib-2.0``: The ``glib-2.0`` package now has a recommended
   runtime dependency (i.e. :term:`RRECOMMENDS`) on the ``shared-mime-info``
   package, since large portions of GIO are not useful without the MIME
   database. You can remove the dependency by using the
   :term:`BAD_RECOMMENDATIONS` variable if
   ``shared-mime-info`` is too large and is not required.

-  *Go Standard Runtime:* The Go standard runtime has been split out
   from the main ``go`` recipe into a separate ``go-runtime`` recipe.

.. _migration-2.4-removed-recipes:

Removed Recipes
---------------

The following recipes have been removed:

-  ``acpitests``: This recipe is not maintained.

-  ``autogen-native``: No longer required by Grub, oe-core, or
   meta-oe.

-  ``bdwgc``: Nothing in OpenEmbedded-Core requires this recipe. It
   has moved to meta-oe.

-  ``byacc``: This recipe was only needed by rpm 5.x and has moved to
   meta-oe.

-  ``gcc (5.4)``: The 5.4 series dropped the recipe in favor of 6.3 /
   7.2.

-  ``gnome-common``: Deprecated upstream and no longer needed.

-  ``go-bootstrap-native``: Go 1.9 does its own bootstrapping so this
   recipe has been removed.

-  ``guile``: This recipe was only needed by ``autogen-native`` and
   ``remake``. The recipe is no longer needed by either of these
   programs.

-  ``libclass-isa-perl``: This recipe was previously needed for LSB 4,
   no longer needed.

-  ``libdumpvalue-perl``: This recipe was previously needed for LSB 4,
   no longer needed.

-  ``libenv-perl``: This recipe was previously needed for LSB 4, no
   longer needed.

-  ``libfile-checktree-perl``: This recipe was previously needed for
   LSB 4, no longer needed.

-  ``libi18n-collate-perl``: This recipe was previously needed for LSB
   4, no longer needed.

-  ``libiconv``: This recipe was only needed for ``uclibc``, which was
   removed in the previous release. ``glibc`` and ``musl`` have their
   own implementations. ``meta-mingw`` still needs ``libiconv``, so it
   has been moved to ``meta-mingw``.

-  ``libpng12``: This recipe was previously needed for LSB. The
   current ``libpng`` is 1.6.x.

-  ``libpod-plainer-perl``: This recipe was previously needed for LSB
   4, no longer needed.

-  ``linux-yocto (4.1)``: This recipe was removed in favor of 4.4,
   4.9, 4.10 and 4.12.

-  ``mailx``: This recipe was previously only needed for LSB
   compatibility, and upstream is defunct.

-  ``mesa (git version only)``: The git version recipe was stale with
   respect to the release version.

-  ``ofono (git version only)``: The git version recipe was stale with
   respect to the release version.

-  ``portmap``: This recipe is obsolete and is superseded by
   ``rpcbind``.

-  ``python3-pygpgme``: This recipe is old and unmaintained. It was
   previously required by ``dnf``, which has switched to official
   ``gpgme`` Python bindings.

-  ``python-async``: This recipe has been removed in favor of the
   Python 3 version.

-  ``python-gitdb``: This recipe has been removed in favor of the
   Python 3 version.

-  ``python-git``: This recipe was removed in favor of the Python 3
   version.

-  ``python-mako``: This recipe was removed in favor of the Python 3
   version.

-  ``python-pexpect``: This recipe was removed in favor of the Python
   3 version.

-  ``python-ptyprocess``: This recipe was removed in favor of Python
   the 3 version.

-  ``python-pycurl``: Nothing is using this recipe in
   OpenEmbedded-Core (i.e. ``meta-oe``).

-  ``python-six``: This recipe was removed in favor of the Python 3
   version.

-  ``python-smmap``: This recipe was removed in favor of the Python 3
   version.

-  ``remake``: Using ``remake`` as the provider of ``virtual/make`` is
   broken. Consequently, this recipe is not needed in OpenEmbedded-Core.

.. _migration-2.4-kernel-device-tree-move:

Kernel Device Tree Move
-----------------------

Kernel Device Tree support is now easier to enable in a kernel recipe.
The Device Tree code has moved to a
:ref:`kernel-devicetree <ref-classes-kernel-devicetree>` class.
Functionality is automatically enabled for any recipe that inherits the
:ref:`kernel <ref-classes-kernel>` class and sets the
:term:`KERNEL_DEVICETREE` variable. The
previous mechanism for doing this,
``meta/recipes-kernel/linux/linux-dtb.inc``, is still available to avoid
breakage, but triggers a deprecation warning. Future releases of the
Yocto Project will remove ``meta/recipes-kernel/linux/linux-dtb.inc``.
It is advisable to remove any ``require`` statements that request
``meta/recipes-kernel/linux/linux-dtb.inc`` from any custom kernel
recipes you might have. This will avoid breakage in post 2.4 releases.

.. _migration-2.4-package-qa-changes:

Package QA Changes
------------------

The following package QA changes took place:

-  The "unsafe-references-in-scripts" QA check has been removed.

-  If you refer to ``${COREBASE}/LICENSE`` within
   :term:`LIC_FILES_CHKSUM` you receive a
   warning because this file is a description of the license for
   OE-Core. Use ``${COMMON_LICENSE_DIR}/MIT`` if your recipe is
   MIT-licensed and you cannot use the preferred method of referring to
   a file within the source tree.

.. _migration-2.4-readme-changes:

``README`` File Changes
-----------------------

The following are changes to ``README`` files:

-  The main Poky ``README`` file has been moved to the ``meta-poky``
   layer and has been renamed ``README.poky``. A symlink has been
   created so that references to the old location work.

-  The ``README.hardware`` file has been moved to ``meta-yocto-bsp``. A
   symlink has been created so that references to the old location work.

-  A ``README.qemu`` file has been created with coverage of the
   ``qemu*`` machines.

.. _migration-2.4-miscellaneous-changes:

Miscellaneous Changes
---------------------

The following are additional changes:

-  The ``ROOTFS_PKGMANAGE_BOOTSTRAP`` variable and any references to it
   have been removed. You should remove this variable from any custom
   recipes.

-  The ``meta-yocto`` directory has been removed.

   .. note::

      In the Yocto Project 2.1 release
      meta-yocto
      was renamed to
      meta-poky
      and the
      meta-yocto
      subdirectory remained to avoid breaking existing configurations.

-  The ``maintainers.inc`` file, which tracks maintainers by listing a
   primary person responsible for each recipe in OE-Core, has been moved
   from ``meta-poky`` to OE-Core (i.e. from
   ``meta-poky/conf/distro/include`` to ``meta/conf/distro/include``).

-  The :ref:`buildhistory <ref-classes-buildhistory>` class now makes
   a single commit per build rather than one commit per subdirectory in
   the repository. This behavior assumes the commits are enabled with
   :term:`BUILDHISTORY_COMMIT` = "1", which
   is typical. Previously, the :ref:`buildhistory <ref-classes-buildhistory>` class made one commit
   per subdirectory in the repository in order to make it easier to see
   the changes for a particular subdirectory. To view a particular
   change, specify that subdirectory as the last parameter on the
   ``git show`` or ``git diff`` commands.

-  The ``x86-base.inc`` file, which is included by all x86-based machine
   configurations, now sets :term:`IMAGE_FSTYPES`
   using ``?=`` to "live" rather than appending with ``+=``. This change
   makes the default easier to override.

-  BitBake fires multiple "BuildStarted" events when multiconfig is
   enabled (one per configuration). For more information, see the
   ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:events`"
   section in the BitBake User Manual.

-  By default, the ``security_flags.inc`` file sets a
   :term:`GCCPIE` variable with an option to enable
   Position Independent Executables (PIE) within ``gcc``. Enabling PIE
   in the GNU C Compiler (GCC), makes Return Oriented Programming (ROP)
   attacks much more difficult to execute.

-  OE-Core now provides a ``bitbake-layers`` plugin that implements a
   "create-layer" subcommand. The implementation of this subcommand has
   resulted in the ``yocto-layer`` script being deprecated and will
   likely be removed in the next Yocto Project release.

-  The ``vmdk``, ``vdi``, and ``qcow2`` image file types are now used in
   conjunction with the "wic" image type through :term:`CONVERSION_CMD`.
   Consequently, the equivalent image types are now ``wic.vmdk``,
   ``wic.vdi``, and ``wic.qcow2``, respectively.

-  ``do_image_<type>[depends]`` has replaced ``IMAGE_DEPENDS_<type>``.
   If you have your own classes that implement custom image types, then
   you need to update them.

-  OpenSSL 1.1 has been introduced. However, the default is still 1.0.x
   through the :term:`PREFERRED_VERSION`
   variable. This preference is set is due to the remaining
   compatibility issues with other software. The
   :term:`PROVIDES` variable in the openssl 1.0 recipe
   now includes "openssl10" as a marker that can be used in
   :term:`DEPENDS` within recipes that build software
   that still depend on OpenSSL 1.0.

-  To ensure consistent behavior, BitBake's "-r" and "-R" options (i.e.
   prefile and postfile), which are used to read or post-read additional
   configuration files from the command line, now only affect the
   current BitBake command. Before these BitBake changes, these options
   would "stick" for future executions.