xref: /OK3568_Linux_fs/yocto/poky/documentation/migration-guides/migration-2.4.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunRelease 2.4 (rocko)
2*4882a593Smuzhiyun===================
3*4882a593Smuzhiyun
4*4882a593SmuzhiyunThis section provides migration information for moving to the Yocto
5*4882a593SmuzhiyunProject 2.4 Release (codename "rocko") from the prior release.
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun.. _migration-2.4-memory-resident-mode:
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunMemory Resident Mode
10*4882a593Smuzhiyun--------------------
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunA persistent mode is now available in BitBake's default operation,
13*4882a593Smuzhiyunreplacing its previous "memory resident mode" (i.e.
14*4882a593Smuzhiyun``oe-init-build-env-memres``). Now you only need to set
15*4882a593Smuzhiyun:term:`BB_SERVER_TIMEOUT` to a timeout (in
16*4882a593Smuzhiyunseconds) and BitBake's server stays resident for that amount of time
17*4882a593Smuzhiyunbetween invocations. The ``oe-init-build-env-memres`` script has been
18*4882a593Smuzhiyunremoved since a separate environment setup script is no longer needed.
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun.. _migration-2.4-packaging-changes:
21*4882a593Smuzhiyun
22*4882a593SmuzhiyunPackaging Changes
23*4882a593Smuzhiyun-----------------
24*4882a593Smuzhiyun
25*4882a593SmuzhiyunThis section provides information about packaging changes that have
26*4882a593Smuzhiyunoccurred:
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun-  ``python3`` Changes:
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun   -  The main "python3" package now brings in all of the standard
31*4882a593Smuzhiyun      Python 3 distribution rather than a subset. This behavior matches
32*4882a593Smuzhiyun      what is expected based on traditional Linux distributions. If you
33*4882a593Smuzhiyun      wish to install a subset of Python 3, specify ``python-core`` plus
34*4882a593Smuzhiyun      one or more of the individual packages that are still produced.
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun   -  ``python3``: The ``bz2.py``, ``lzma.py``, and
37*4882a593Smuzhiyun      ``_compression.py`` scripts have been moved from the
38*4882a593Smuzhiyun      ``python3-misc`` package to the ``python3-compression`` package.
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun-  ``binutils``: The ``libbfd`` library is now packaged in a separate
41*4882a593Smuzhiyun   "libbfd" package. This packaging saves space when certain tools (e.g.
42*4882a593Smuzhiyun   ``perf``) are installed. In such cases, the tools only need
43*4882a593Smuzhiyun   ``libbfd`` rather than all the packages in ``binutils``.
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun-  ``util-linux`` Changes:
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun   -  The ``su`` program is now packaged in a separate "util-linux-su"
48*4882a593Smuzhiyun      package, which is only built when "pam" is listed in the
49*4882a593Smuzhiyun      :term:`DISTRO_FEATURES` variable.
50*4882a593Smuzhiyun      ``util-linux`` should not be installed unless it is needed because
51*4882a593Smuzhiyun      ``su`` is normally provided through the shadow file format. The
52*4882a593Smuzhiyun      main ``util-linux`` package has runtime dependencies (i.e.
53*4882a593Smuzhiyun      :term:`RDEPENDS`) on the ``util-linux-su`` package
54*4882a593Smuzhiyun      when "pam" is in :term:`DISTRO_FEATURES`.
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun   -  The ``switch_root`` program is now packaged in a separate
57*4882a593Smuzhiyun      "util-linux-switch-root" package for small initramfs images that
58*4882a593Smuzhiyun      do not need the whole ``util-linux`` package or the busybox
59*4882a593Smuzhiyun      binary, which are both much larger than ``switch_root``. The main
60*4882a593Smuzhiyun      ``util-linux`` package has a recommended runtime dependency (i.e.
61*4882a593Smuzhiyun      :term:`RRECOMMENDS`) on the
62*4882a593Smuzhiyun      ``util-linux-switch-root`` package.
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun   -  The ``ionice`` program is now packaged in a separate
65*4882a593Smuzhiyun      "util-linux-ionice" package. The main ``util-linux`` package has a
66*4882a593Smuzhiyun      recommended runtime dependency (i.e. :term:`RRECOMMENDS`) on the
67*4882a593Smuzhiyun      ``util-linux-ionice`` package.
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun-  ``initscripts``: The ``sushell`` program is now packaged in a
70*4882a593Smuzhiyun   separate "initscripts-sushell" package. This packaging change allows
71*4882a593Smuzhiyun   systems to pull ``sushell`` in when ``selinux`` is enabled. The
72*4882a593Smuzhiyun   change also eliminates needing to pull in the entire ``initscripts``
73*4882a593Smuzhiyun   package. The main ``initscripts`` package has a runtime dependency
74*4882a593Smuzhiyun   (i.e. :term:`RDEPENDS`) on the ``sushell`` package when "selinux" is in
75*4882a593Smuzhiyun   :term:`DISTRO_FEATURES`.
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun-  ``glib-2.0``: The ``glib-2.0`` package now has a recommended
78*4882a593Smuzhiyun   runtime dependency (i.e. :term:`RRECOMMENDS`) on the ``shared-mime-info``
79*4882a593Smuzhiyun   package, since large portions of GIO are not useful without the MIME
80*4882a593Smuzhiyun   database. You can remove the dependency by using the
81*4882a593Smuzhiyun   :term:`BAD_RECOMMENDATIONS` variable if
82*4882a593Smuzhiyun   ``shared-mime-info`` is too large and is not required.
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun-  *Go Standard Runtime:* The Go standard runtime has been split out
85*4882a593Smuzhiyun   from the main ``go`` recipe into a separate ``go-runtime`` recipe.
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun.. _migration-2.4-removed-recipes:
88*4882a593Smuzhiyun
89*4882a593SmuzhiyunRemoved Recipes
90*4882a593Smuzhiyun---------------
91*4882a593Smuzhiyun
92*4882a593SmuzhiyunThe following recipes have been removed:
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun-  ``acpitests``: This recipe is not maintained.
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun-  ``autogen-native``: No longer required by Grub, oe-core, or
97*4882a593Smuzhiyun   meta-oe.
98*4882a593Smuzhiyun
99*4882a593Smuzhiyun-  ``bdwgc``: Nothing in OpenEmbedded-Core requires this recipe. It
100*4882a593Smuzhiyun   has moved to meta-oe.
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun-  ``byacc``: This recipe was only needed by rpm 5.x and has moved to
103*4882a593Smuzhiyun   meta-oe.
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun-  ``gcc (5.4)``: The 5.4 series dropped the recipe in favor of 6.3 /
106*4882a593Smuzhiyun   7.2.
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun-  ``gnome-common``: Deprecated upstream and no longer needed.
109*4882a593Smuzhiyun
110*4882a593Smuzhiyun-  ``go-bootstrap-native``: Go 1.9 does its own bootstrapping so this
111*4882a593Smuzhiyun   recipe has been removed.
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun-  ``guile``: This recipe was only needed by ``autogen-native`` and
114*4882a593Smuzhiyun   ``remake``. The recipe is no longer needed by either of these
115*4882a593Smuzhiyun   programs.
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun-  ``libclass-isa-perl``: This recipe was previously needed for LSB 4,
118*4882a593Smuzhiyun   no longer needed.
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun-  ``libdumpvalue-perl``: This recipe was previously needed for LSB 4,
121*4882a593Smuzhiyun   no longer needed.
122*4882a593Smuzhiyun
123*4882a593Smuzhiyun-  ``libenv-perl``: This recipe was previously needed for LSB 4, no
124*4882a593Smuzhiyun   longer needed.
125*4882a593Smuzhiyun
126*4882a593Smuzhiyun-  ``libfile-checktree-perl``: This recipe was previously needed for
127*4882a593Smuzhiyun   LSB 4, no longer needed.
128*4882a593Smuzhiyun
129*4882a593Smuzhiyun-  ``libi18n-collate-perl``: This recipe was previously needed for LSB
130*4882a593Smuzhiyun   4, no longer needed.
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun-  ``libiconv``: This recipe was only needed for ``uclibc``, which was
133*4882a593Smuzhiyun   removed in the previous release. ``glibc`` and ``musl`` have their
134*4882a593Smuzhiyun   own implementations. ``meta-mingw`` still needs ``libiconv``, so it
135*4882a593Smuzhiyun   has been moved to ``meta-mingw``.
136*4882a593Smuzhiyun
137*4882a593Smuzhiyun-  ``libpng12``: This recipe was previously needed for LSB. The
138*4882a593Smuzhiyun   current ``libpng`` is 1.6.x.
139*4882a593Smuzhiyun
140*4882a593Smuzhiyun-  ``libpod-plainer-perl``: This recipe was previously needed for LSB
141*4882a593Smuzhiyun   4, no longer needed.
142*4882a593Smuzhiyun
143*4882a593Smuzhiyun-  ``linux-yocto (4.1)``: This recipe was removed in favor of 4.4,
144*4882a593Smuzhiyun   4.9, 4.10 and 4.12.
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun-  ``mailx``: This recipe was previously only needed for LSB
147*4882a593Smuzhiyun   compatibility, and upstream is defunct.
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun-  ``mesa (git version only)``: The git version recipe was stale with
150*4882a593Smuzhiyun   respect to the release version.
151*4882a593Smuzhiyun
152*4882a593Smuzhiyun-  ``ofono (git version only)``: The git version recipe was stale with
153*4882a593Smuzhiyun   respect to the release version.
154*4882a593Smuzhiyun
155*4882a593Smuzhiyun-  ``portmap``: This recipe is obsolete and is superseded by
156*4882a593Smuzhiyun   ``rpcbind``.
157*4882a593Smuzhiyun
158*4882a593Smuzhiyun-  ``python3-pygpgme``: This recipe is old and unmaintained. It was
159*4882a593Smuzhiyun   previously required by ``dnf``, which has switched to official
160*4882a593Smuzhiyun   ``gpgme`` Python bindings.
161*4882a593Smuzhiyun
162*4882a593Smuzhiyun-  ``python-async``: This recipe has been removed in favor of the
163*4882a593Smuzhiyun   Python 3 version.
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun-  ``python-gitdb``: This recipe has been removed in favor of the
166*4882a593Smuzhiyun   Python 3 version.
167*4882a593Smuzhiyun
168*4882a593Smuzhiyun-  ``python-git``: This recipe was removed in favor of the Python 3
169*4882a593Smuzhiyun   version.
170*4882a593Smuzhiyun
171*4882a593Smuzhiyun-  ``python-mako``: This recipe was removed in favor of the Python 3
172*4882a593Smuzhiyun   version.
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun-  ``python-pexpect``: This recipe was removed in favor of the Python
175*4882a593Smuzhiyun   3 version.
176*4882a593Smuzhiyun
177*4882a593Smuzhiyun-  ``python-ptyprocess``: This recipe was removed in favor of Python
178*4882a593Smuzhiyun   the 3 version.
179*4882a593Smuzhiyun
180*4882a593Smuzhiyun-  ``python-pycurl``: Nothing is using this recipe in
181*4882a593Smuzhiyun   OpenEmbedded-Core (i.e. ``meta-oe``).
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun-  ``python-six``: This recipe was removed in favor of the Python 3
184*4882a593Smuzhiyun   version.
185*4882a593Smuzhiyun
186*4882a593Smuzhiyun-  ``python-smmap``: This recipe was removed in favor of the Python 3
187*4882a593Smuzhiyun   version.
188*4882a593Smuzhiyun
189*4882a593Smuzhiyun-  ``remake``: Using ``remake`` as the provider of ``virtual/make`` is
190*4882a593Smuzhiyun   broken. Consequently, this recipe is not needed in OpenEmbedded-Core.
191*4882a593Smuzhiyun
192*4882a593Smuzhiyun.. _migration-2.4-kernel-device-tree-move:
193*4882a593Smuzhiyun
194*4882a593SmuzhiyunKernel Device Tree Move
195*4882a593Smuzhiyun-----------------------
196*4882a593Smuzhiyun
197*4882a593SmuzhiyunKernel Device Tree support is now easier to enable in a kernel recipe.
198*4882a593SmuzhiyunThe Device Tree code has moved to a
199*4882a593Smuzhiyun:ref:`kernel-devicetree <ref-classes-kernel-devicetree>` class.
200*4882a593SmuzhiyunFunctionality is automatically enabled for any recipe that inherits the
201*4882a593Smuzhiyun:ref:`kernel <ref-classes-kernel>` class and sets the
202*4882a593Smuzhiyun:term:`KERNEL_DEVICETREE` variable. The
203*4882a593Smuzhiyunprevious mechanism for doing this,
204*4882a593Smuzhiyun``meta/recipes-kernel/linux/linux-dtb.inc``, is still available to avoid
205*4882a593Smuzhiyunbreakage, but triggers a deprecation warning. Future releases of the
206*4882a593SmuzhiyunYocto Project will remove ``meta/recipes-kernel/linux/linux-dtb.inc``.
207*4882a593SmuzhiyunIt is advisable to remove any ``require`` statements that request
208*4882a593Smuzhiyun``meta/recipes-kernel/linux/linux-dtb.inc`` from any custom kernel
209*4882a593Smuzhiyunrecipes you might have. This will avoid breakage in post 2.4 releases.
210*4882a593Smuzhiyun
211*4882a593Smuzhiyun.. _migration-2.4-package-qa-changes:
212*4882a593Smuzhiyun
213*4882a593SmuzhiyunPackage QA Changes
214*4882a593Smuzhiyun------------------
215*4882a593Smuzhiyun
216*4882a593SmuzhiyunThe following package QA changes took place:
217*4882a593Smuzhiyun
218*4882a593Smuzhiyun-  The "unsafe-references-in-scripts" QA check has been removed.
219*4882a593Smuzhiyun
220*4882a593Smuzhiyun-  If you refer to ``${COREBASE}/LICENSE`` within
221*4882a593Smuzhiyun   :term:`LIC_FILES_CHKSUM` you receive a
222*4882a593Smuzhiyun   warning because this file is a description of the license for
223*4882a593Smuzhiyun   OE-Core. Use ``${COMMON_LICENSE_DIR}/MIT`` if your recipe is
224*4882a593Smuzhiyun   MIT-licensed and you cannot use the preferred method of referring to
225*4882a593Smuzhiyun   a file within the source tree.
226*4882a593Smuzhiyun
227*4882a593Smuzhiyun.. _migration-2.4-readme-changes:
228*4882a593Smuzhiyun
229*4882a593Smuzhiyun``README`` File Changes
230*4882a593Smuzhiyun-----------------------
231*4882a593Smuzhiyun
232*4882a593SmuzhiyunThe following are changes to ``README`` files:
233*4882a593Smuzhiyun
234*4882a593Smuzhiyun-  The main Poky ``README`` file has been moved to the ``meta-poky``
235*4882a593Smuzhiyun   layer and has been renamed ``README.poky``. A symlink has been
236*4882a593Smuzhiyun   created so that references to the old location work.
237*4882a593Smuzhiyun
238*4882a593Smuzhiyun-  The ``README.hardware`` file has been moved to ``meta-yocto-bsp``. A
239*4882a593Smuzhiyun   symlink has been created so that references to the old location work.
240*4882a593Smuzhiyun
241*4882a593Smuzhiyun-  A ``README.qemu`` file has been created with coverage of the
242*4882a593Smuzhiyun   ``qemu*`` machines.
243*4882a593Smuzhiyun
244*4882a593Smuzhiyun.. _migration-2.4-miscellaneous-changes:
245*4882a593Smuzhiyun
246*4882a593SmuzhiyunMiscellaneous Changes
247*4882a593Smuzhiyun---------------------
248*4882a593Smuzhiyun
249*4882a593SmuzhiyunThe following are additional changes:
250*4882a593Smuzhiyun
251*4882a593Smuzhiyun-  The ``ROOTFS_PKGMANAGE_BOOTSTRAP`` variable and any references to it
252*4882a593Smuzhiyun   have been removed. You should remove this variable from any custom
253*4882a593Smuzhiyun   recipes.
254*4882a593Smuzhiyun
255*4882a593Smuzhiyun-  The ``meta-yocto`` directory has been removed.
256*4882a593Smuzhiyun
257*4882a593Smuzhiyun   .. note::
258*4882a593Smuzhiyun
259*4882a593Smuzhiyun      In the Yocto Project 2.1 release
260*4882a593Smuzhiyun      meta-yocto
261*4882a593Smuzhiyun      was renamed to
262*4882a593Smuzhiyun      meta-poky
263*4882a593Smuzhiyun      and the
264*4882a593Smuzhiyun      meta-yocto
265*4882a593Smuzhiyun      subdirectory remained to avoid breaking existing configurations.
266*4882a593Smuzhiyun
267*4882a593Smuzhiyun-  The ``maintainers.inc`` file, which tracks maintainers by listing a
268*4882a593Smuzhiyun   primary person responsible for each recipe in OE-Core, has been moved
269*4882a593Smuzhiyun   from ``meta-poky`` to OE-Core (i.e. from
270*4882a593Smuzhiyun   ``meta-poky/conf/distro/include`` to ``meta/conf/distro/include``).
271*4882a593Smuzhiyun
272*4882a593Smuzhiyun-  The :ref:`buildhistory <ref-classes-buildhistory>` class now makes
273*4882a593Smuzhiyun   a single commit per build rather than one commit per subdirectory in
274*4882a593Smuzhiyun   the repository. This behavior assumes the commits are enabled with
275*4882a593Smuzhiyun   :term:`BUILDHISTORY_COMMIT` = "1", which
276*4882a593Smuzhiyun   is typical. Previously, the :ref:`buildhistory <ref-classes-buildhistory>` class made one commit
277*4882a593Smuzhiyun   per subdirectory in the repository in order to make it easier to see
278*4882a593Smuzhiyun   the changes for a particular subdirectory. To view a particular
279*4882a593Smuzhiyun   change, specify that subdirectory as the last parameter on the
280*4882a593Smuzhiyun   ``git show`` or ``git diff`` commands.
281*4882a593Smuzhiyun
282*4882a593Smuzhiyun-  The ``x86-base.inc`` file, which is included by all x86-based machine
283*4882a593Smuzhiyun   configurations, now sets :term:`IMAGE_FSTYPES`
284*4882a593Smuzhiyun   using ``?=`` to "live" rather than appending with ``+=``. This change
285*4882a593Smuzhiyun   makes the default easier to override.
286*4882a593Smuzhiyun
287*4882a593Smuzhiyun-  BitBake fires multiple "BuildStarted" events when multiconfig is
288*4882a593Smuzhiyun   enabled (one per configuration). For more information, see the
289*4882a593Smuzhiyun   ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:events`"
290*4882a593Smuzhiyun   section in the BitBake User Manual.
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun-  By default, the ``security_flags.inc`` file sets a
293*4882a593Smuzhiyun   :term:`GCCPIE` variable with an option to enable
294*4882a593Smuzhiyun   Position Independent Executables (PIE) within ``gcc``. Enabling PIE
295*4882a593Smuzhiyun   in the GNU C Compiler (GCC), makes Return Oriented Programming (ROP)
296*4882a593Smuzhiyun   attacks much more difficult to execute.
297*4882a593Smuzhiyun
298*4882a593Smuzhiyun-  OE-Core now provides a ``bitbake-layers`` plugin that implements a
299*4882a593Smuzhiyun   "create-layer" subcommand. The implementation of this subcommand has
300*4882a593Smuzhiyun   resulted in the ``yocto-layer`` script being deprecated and will
301*4882a593Smuzhiyun   likely be removed in the next Yocto Project release.
302*4882a593Smuzhiyun
303*4882a593Smuzhiyun-  The ``vmdk``, ``vdi``, and ``qcow2`` image file types are now used in
304*4882a593Smuzhiyun   conjunction with the "wic" image type through ``CONVERSION_CMD``.
305*4882a593Smuzhiyun   Consequently, the equivalent image types are now ``wic.vmdk``,
306*4882a593Smuzhiyun   ``wic.vdi``, and ``wic.qcow2``, respectively.
307*4882a593Smuzhiyun
308*4882a593Smuzhiyun-  ``do_image_<type>[depends]`` has replaced ``IMAGE_DEPENDS_<type>``.
309*4882a593Smuzhiyun   If you have your own classes that implement custom image types, then
310*4882a593Smuzhiyun   you need to update them.
311*4882a593Smuzhiyun
312*4882a593Smuzhiyun-  OpenSSL 1.1 has been introduced. However, the default is still 1.0.x
313*4882a593Smuzhiyun   through the :term:`PREFERRED_VERSION`
314*4882a593Smuzhiyun   variable. This preference is set is due to the remaining
315*4882a593Smuzhiyun   compatibility issues with other software. The
316*4882a593Smuzhiyun   :term:`PROVIDES` variable in the openssl 1.0 recipe
317*4882a593Smuzhiyun   now includes "openssl10" as a marker that can be used in
318*4882a593Smuzhiyun   :term:`DEPENDS` within recipes that build software
319*4882a593Smuzhiyun   that still depend on OpenSSL 1.0.
320*4882a593Smuzhiyun
321*4882a593Smuzhiyun-  To ensure consistent behavior, BitBake's "-r" and "-R" options (i.e.
322*4882a593Smuzhiyun   prefile and postfile), which are used to read or post-read additional
323*4882a593Smuzhiyun   configuration files from the command line, now only affect the
324*4882a593Smuzhiyun   current BitBake command. Before these BitBake changes, these options
325*4882a593Smuzhiyun   would "stick" for future executions.
326*4882a593Smuzhiyun
327*4882a593Smuzhiyun
328