1Release 2.4 (rocko)
2===================
3
4This section provides migration information for moving to the Yocto
5Project 2.4 Release (codename "rocko") from the prior release.
6
7.. _migration-2.4-memory-resident-mode:
8
9Memory Resident Mode
10--------------------
11
12A persistent mode is now available in BitBake's default operation,
13replacing 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
16seconds) and BitBake's server stays resident for that amount of time
17between invocations. The ``oe-init-build-env-memres`` script has been
18removed since a separate environment setup script is no longer needed.
19
20.. _migration-2.4-packaging-changes:
21
22Packaging Changes
23-----------------
24
25This section provides information about packaging changes that have
26occurred:
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 :term:`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. :term:`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. :term:`RDEPENDS`) on the ``sushell`` package when "selinux" is in
75   :term:`DISTRO_FEATURES`.
76
77-  ``glib-2.0``: The ``glib-2.0`` package now has a recommended
78   runtime dependency (i.e. :term:`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
89Removed Recipes
90---------------
91
92The 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
194Kernel Device Tree Move
195-----------------------
196
197Kernel Device Tree support is now easier to enable in a kernel recipe.
198The Device Tree code has moved to a
199:ref:`kernel-devicetree <ref-classes-kernel-devicetree>` class.
200Functionality 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
203previous mechanism for doing this,
204``meta/recipes-kernel/linux/linux-dtb.inc``, is still available to avoid
205breakage, but triggers a deprecation warning. Future releases of the
206Yocto Project will remove ``meta/recipes-kernel/linux/linux-dtb.inc``.
207It is advisable to remove any ``require`` statements that request
208``meta/recipes-kernel/linux/linux-dtb.inc`` from any custom kernel
209recipes you might have. This will avoid breakage in post 2.4 releases.
210
211.. _migration-2.4-package-qa-changes:
212
213Package QA Changes
214------------------
215
216The 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
232The 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
246Miscellaneous Changes
247---------------------
248
249The 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:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:events`"
290   section in the BitBake User 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
328