xref: /OK3568_Linux_fs/yocto/poky/documentation/migration-guides/migration-3.1.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunRelease 3.1 (dunfell)
2*4882a593Smuzhiyun=====================
3*4882a593Smuzhiyun
4*4882a593SmuzhiyunThis section provides migration information for moving to the Yocto
5*4882a593SmuzhiyunProject 3.1 Release (codename "dunfell") from the prior release.
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun.. _migration-3.1-minimum-system-requirements:
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunMinimum system requirements
10*4882a593Smuzhiyun---------------------------
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunThe following versions / requirements of build host components have been
13*4882a593Smuzhiyunupdated:
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun-  gcc 5.0
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun-  python 3.5
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun-  tar 1.28
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun-  ``rpcgen`` is now required on the host (part of the ``libc-dev-bin``
22*4882a593Smuzhiyun   package on Ubuntu, Debian and related distributions, and the
23*4882a593Smuzhiyun   ``glibc`` package on RPM-based distributions).
24*4882a593Smuzhiyun
25*4882a593SmuzhiyunAdditionally, the ``makeinfo`` and ``pod2man`` tools are *no longer*
26*4882a593Smuzhiyunrequired on the host.
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun.. _migration-3.1-mpc8315e-rdb-removed:
29*4882a593Smuzhiyun
30*4882a593Smuzhiyunmpc8315e-rdb machine removed
31*4882a593Smuzhiyun----------------------------
32*4882a593Smuzhiyun
33*4882a593SmuzhiyunThe MPC8315E-RDB machine is old/obsolete and unobtainable, thus given
34*4882a593Smuzhiyunthe maintenance burden the ``mpc8315e-rdb`` machine configuration that
35*4882a593Smuzhiyunsupported it has been removed in this release. The removal does leave a
36*4882a593Smuzhiyungap in official PowerPC reference hardware support; this may change in
37*4882a593Smuzhiyunfuture if a suitable machine with accompanying support resources is
38*4882a593Smuzhiyunfound.
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun.. _migration-3.1-python-2-removed:
41*4882a593Smuzhiyun
42*4882a593SmuzhiyunPython 2 removed
43*4882a593Smuzhiyun----------------
44*4882a593Smuzhiyun
45*4882a593SmuzhiyunDue to the expiration of upstream support in January 2020, support for
46*4882a593SmuzhiyunPython 2 has now been removed; it is recommended that you use Python 3
47*4882a593Smuzhiyuninstead. If absolutely needed there is a meta-python2 community layer
48*4882a593Smuzhiyuncontaining Python 2, related classes and various Python 2-based modules,
49*4882a593Smuzhiyunhowever it should not be considered as supported.
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun.. _migration-3.1-reproducible-builds:
52*4882a593Smuzhiyun
53*4882a593SmuzhiyunReproducible builds now enabled by default
54*4882a593Smuzhiyun------------------------------------------
55*4882a593Smuzhiyun
56*4882a593SmuzhiyunIn order to avoid unnecessary differences in output files (aiding binary
57*4882a593Smuzhiyunreproducibility), the Poky distribution configuration
58*4882a593Smuzhiyun(``DISTRO = "poky"``) now inherits the ``reproducible_build`` class by
59*4882a593Smuzhiyundefault.
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun.. _migration-3.1-ptest-feature-impact:
62*4882a593Smuzhiyun
63*4882a593SmuzhiyunImpact of ptest feature is now more significant
64*4882a593Smuzhiyun-----------------------------------------------
65*4882a593Smuzhiyun
66*4882a593SmuzhiyunThe Poky distribution configuration (``DISTRO = "poky"``) enables ptests
67*4882a593Smuzhiyunby default to enable runtime testing of various components. In this
68*4882a593Smuzhiyunrelease, a dependency needed to be added that has resulted in a
69*4882a593Smuzhiyunsignificant increase in the number of components that will be built just
70*4882a593Smuzhiyunwhen building a simple image such as core-image-minimal. If you do not
71*4882a593Smuzhiyunneed runtime tests enabled for core components, then it is recommended
72*4882a593Smuzhiyunthat you remove "ptest" from
73*4882a593Smuzhiyun:term:`DISTRO_FEATURES` to save a significant
74*4882a593Smuzhiyunamount of build time e.g. by adding the following in your configuration::
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun   DISTRO_FEATURES_remove = "ptest"
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun.. _migration-3.1-removed-recipes:
79*4882a593Smuzhiyun
80*4882a593SmuzhiyunRemoved recipes
81*4882a593Smuzhiyun---------------
82*4882a593Smuzhiyun
83*4882a593SmuzhiyunThe following recipes have been removed:
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun-  ``chkconfig``: obsolete
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun-  ``console-tools``: obsolete
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun-  ``enchant``: replaced by ``enchant2``
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun-  ``foomatic-filters``: obsolete
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun-  ``libidn``: no longer needed, moved to meta-oe
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun-  ``libmodulemd``: replaced by ``libmodulemd-v1``
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun-  ``linux-yocto``: drop 4.19, 5.2 version recipes (5.4 now provided)
98*4882a593Smuzhiyun
99*4882a593Smuzhiyun-  ``nspr``: no longer needed, moved to meta-oe
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun-  ``nss``: no longer needed, moved to meta-oe
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun-  ``python``: Python 2 removed (Python 3 preferred)
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun-  ``python-setuptools``: Python 2 version removed (python3-setuptools
106*4882a593Smuzhiyun   preferred)
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun-  ``sysprof``: no longer needed, moved to meta-oe
109*4882a593Smuzhiyun
110*4882a593Smuzhiyun-  ``texi2html``: obsolete
111*4882a593Smuzhiyun
112*4882a593Smuzhiyun-  ``u-boot-fw-utils``: functionally replaced by ``libubootenv``
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun.. _migration-3.1-features-check:
115*4882a593Smuzhiyun
116*4882a593Smuzhiyunfeatures_check class replaces distro_features_check
117*4882a593Smuzhiyun---------------------------------------------------
118*4882a593Smuzhiyun
119*4882a593SmuzhiyunThe ``distro_features_check`` class has had its functionality expanded,
120*4882a593Smuzhiyunnow supporting ``ANY_OF_MACHINE_FEATURES``,
121*4882a593Smuzhiyun``REQUIRED_MACHINE_FEATURES``, ``CONFLICT_MACHINE_FEATURES``,
122*4882a593Smuzhiyun``ANY_OF_COMBINED_FEATURES``, ``REQUIRED_COMBINED_FEATURES``,
123*4882a593Smuzhiyun``CONFLICT_COMBINED_FEATURES``. As a result the class has now been
124*4882a593Smuzhiyunrenamed to ``features_check``; the ``distro_features_check`` class still
125*4882a593Smuzhiyunexists but generates a warning and redirects to the new class. In
126*4882a593Smuzhiyunpreparation for a future removal of the old class it is recommended that
127*4882a593Smuzhiyunyou update recipes currently inheriting ``distro_features_check`` to
128*4882a593Smuzhiyuninherit :ref:`features_check <ref-classes-features_check>` instead.
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun.. _migration-3.1-removed-classes:
131*4882a593Smuzhiyun
132*4882a593SmuzhiyunRemoved classes
133*4882a593Smuzhiyun---------------
134*4882a593Smuzhiyun
135*4882a593SmuzhiyunThe following classes have been removed:
136*4882a593Smuzhiyun
137*4882a593Smuzhiyun-  ``distutils-base``: moved to meta-python2
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun-  ``distutils``: moved to meta-python2
140*4882a593Smuzhiyun
141*4882a593Smuzhiyun-  ``libc-common``: merged into the glibc recipe as nothing else used
142*4882a593Smuzhiyun   it.
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun-  ``python-dir``: moved to meta-python2
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun-  ``pythonnative``: moved to meta-python2
147*4882a593Smuzhiyun
148*4882a593Smuzhiyun-  ``setuptools``: moved to meta-python2
149*4882a593Smuzhiyun
150*4882a593Smuzhiyun-  ``tinderclient``: dropped as it was obsolete.
151*4882a593Smuzhiyun
152*4882a593Smuzhiyun.. _migration-3.1-src-uri-checksums:
153*4882a593Smuzhiyun
154*4882a593SmuzhiyunSRC_URI checksum behaviour
155*4882a593Smuzhiyun--------------------------
156*4882a593Smuzhiyun
157*4882a593SmuzhiyunPreviously, recipes by tradition included both SHA256 and MD5 checksums
158*4882a593Smuzhiyunfor remotely fetched files in :term:`SRC_URI`, even
159*4882a593Smuzhiyunthough only one is actually mandated. However, the MD5 checksum does not
160*4882a593Smuzhiyunadd much given its inherent weakness; thus when a checksum fails only
161*4882a593Smuzhiyunthe SHA256 sum will now be printed. The md5sum will still be verified if
162*4882a593Smuzhiyunit is specified.
163*4882a593Smuzhiyun
164*4882a593Smuzhiyun.. _migration-3.1-npm:
165*4882a593Smuzhiyun
166*4882a593Smuzhiyunnpm fetcher changes
167*4882a593Smuzhiyun-------------------
168*4882a593Smuzhiyun
169*4882a593SmuzhiyunThe npm fetcher has been completely reworked in this release. The npm
170*4882a593Smuzhiyunfetcher now only fetches the package source itself and no longer the
171*4882a593Smuzhiyundependencies; there is now also an npmsw fetcher which explicitly
172*4882a593Smuzhiyunfetches the shrinkwrap file and the dependencies. This removes the
173*4882a593Smuzhiyunslightly awkward ``NPM_LOCKDOWN`` and ``NPM_SHRINKWRAP`` variables which
174*4882a593Smuzhiyunpointed to local files; the lockdown file is no longer needed at all.
175*4882a593SmuzhiyunAdditionally, the package name in ``npm://`` entries in
176*4882a593Smuzhiyun:term:`SRC_URI` is now specified using a ``package``
177*4882a593Smuzhiyunparameter instead of the earlier ``name`` which overlapped with the
178*4882a593Smuzhiyungeneric ``name`` parameter. All recipes using the npm fetcher will need
179*4882a593Smuzhiyunto be changed as a result.
180*4882a593Smuzhiyun
181*4882a593SmuzhiyunAn example of the new scheme::
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun   SRC_URI = "npm://registry.npmjs.org;package=array-flatten;version=1.1.1 \
184*4882a593Smuzhiyun              npmsw://${THISDIR}/npm-shrinkwrap.json"
185*4882a593Smuzhiyun
186*4882a593SmuzhiyunAnother example where the sources are fetched from git rather than an npm repository::
187*4882a593Smuzhiyun
188*4882a593Smuzhiyun   SRC_URI = "git://github.com/foo/bar.git;protocol=https \
189*4882a593Smuzhiyun              npmsw://${THISDIR}/npm-shrinkwrap.json"
190*4882a593Smuzhiyun
191*4882a593Smuzhiyundevtool and recipetool have also been updated to match with the npm
192*4882a593Smuzhiyunfetcher changes. Other than producing working and more complete recipes
193*4882a593Smuzhiyunfor npm sources, there is also a minor change to the command line for
194*4882a593Smuzhiyundevtool: the ``--fetch-dev`` option has been renamed to ``--npm-dev`` as
195*4882a593Smuzhiyunit is npm-specific.
196*4882a593Smuzhiyun
197*4882a593Smuzhiyun.. _migration-3.1-packaging-changes:
198*4882a593Smuzhiyun
199*4882a593SmuzhiyunPackaging changes
200*4882a593Smuzhiyun-----------------
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun-  ``intltool`` has been removed from ``packagegroup-core-sdk`` as it is
203*4882a593Smuzhiyun   rarely needed to build modern software - gettext can do most of the
204*4882a593Smuzhiyun   things it used to be needed for. ``intltool`` has also been removed
205*4882a593Smuzhiyun   from ``packagegroup-core-self-hosted`` as it is not needed to for
206*4882a593Smuzhiyun   standard builds.
207*4882a593Smuzhiyun
208*4882a593Smuzhiyun-  git: ``git-am``, ``git-difftool``, ``git-submodule``, and
209*4882a593Smuzhiyun   ``git-request-pull`` are no longer perl-based, so are now installed
210*4882a593Smuzhiyun   with the main ``git`` package instead of within ``git-perltools``.
211*4882a593Smuzhiyun
212*4882a593Smuzhiyun-  The ``ldconfig`` binary built as part of glibc has now been moved to
213*4882a593Smuzhiyun   its own ``ldconfig`` package (note no ``glibc-`` prefix). This
214*4882a593Smuzhiyun   package is in the :term:`RRECOMMENDS` of the main
215*4882a593Smuzhiyun   ``glibc`` package if ``ldconfig`` is present in
216*4882a593Smuzhiyun   :term:`DISTRO_FEATURES`.
217*4882a593Smuzhiyun
218*4882a593Smuzhiyun-  ``libevent`` now splits each shared library into its own package (as
219*4882a593Smuzhiyun   Debian does). Since these are shared libraries and will be pulled in
220*4882a593Smuzhiyun   through the normal shared library dependency handling, there should
221*4882a593Smuzhiyun   be no impact to existing configurations other than less unnecessary
222*4882a593Smuzhiyun   libraries being installed in some cases.
223*4882a593Smuzhiyun
224*4882a593Smuzhiyun-  linux-firmware now has a new package for ``bcm4366c`` and includes
225*4882a593Smuzhiyun   available NVRAM config files into the ``bcm43340``, ``bcm43362``,
226*4882a593Smuzhiyun   ``bcm43430`` and ``bcm4356-pcie`` packages.
227*4882a593Smuzhiyun
228*4882a593Smuzhiyun-  ``harfbuzz`` now splits the new ``libharfbuzz-subset.so`` library
229*4882a593Smuzhiyun   into its own package to reduce the main package size in cases where
230*4882a593Smuzhiyun   ``libharfbuzz-subset.so`` is not needed.
231*4882a593Smuzhiyun
232*4882a593Smuzhiyun.. _migration-3.1-package-qa-warnings:
233*4882a593Smuzhiyun
234*4882a593SmuzhiyunAdditional warnings
235*4882a593Smuzhiyun-------------------
236*4882a593Smuzhiyun
237*4882a593SmuzhiyunWarnings will now be shown at ``do_package_qa`` time in the following
238*4882a593Smuzhiyuncircumstances:
239*4882a593Smuzhiyun
240*4882a593Smuzhiyun-  A recipe installs ``.desktop`` files containing ``MimeType`` keys but
241*4882a593Smuzhiyun   does not inherit the new ``mime-xdg`` class
242*4882a593Smuzhiyun
243*4882a593Smuzhiyun-  A recipe installs ``.xml`` files into ``${datadir}/mime/packages``
244*4882a593Smuzhiyun   but does not inherit the :ref:`mime <ref-classes-mime>` class
245*4882a593Smuzhiyun
246*4882a593Smuzhiyun.. _migration-3.1-x86-live-wic:
247*4882a593Smuzhiyun
248*4882a593Smuzhiyun``wic`` image type now used instead of ``live`` by default for x86
249*4882a593Smuzhiyun------------------------------------------------------------------
250*4882a593Smuzhiyun
251*4882a593Smuzhiyun``conf/machine/include/x86-base.inc`` (inherited by most x86 machine
252*4882a593Smuzhiyunconfigurations) now specifies ``wic`` instead of ``live`` by default in
253*4882a593Smuzhiyun:term:`IMAGE_FSTYPES`. The ``live`` image type will
254*4882a593Smuzhiyunlikely be removed in a future release so it is recommended that you use
255*4882a593Smuzhiyun``wic`` instead.
256*4882a593Smuzhiyun
257*4882a593Smuzhiyun.. _migration-3.1-misc:
258*4882a593Smuzhiyun
259*4882a593SmuzhiyunMiscellaneous changes
260*4882a593Smuzhiyun---------------------
261*4882a593Smuzhiyun
262*4882a593Smuzhiyun-  The undocumented ``SRC_DISTRIBUTE_LICENSES`` variable has now been
263*4882a593Smuzhiyun   removed in favour of a new ``AVAILABLE_LICENSES`` variable which is
264*4882a593Smuzhiyun   dynamically set based upon license files found in
265*4882a593Smuzhiyun   ``${COMMON_LICENSE_DIR}`` and ``${LICENSE_PATH}``.
266*4882a593Smuzhiyun
267*4882a593Smuzhiyun-  The tune definition for big-endian microblaze machines is now
268*4882a593Smuzhiyun   ``microblaze`` instead of ``microblazeeb``.
269*4882a593Smuzhiyun
270*4882a593Smuzhiyun-  ``newlib`` no longer has built-in syscalls. ``libgloss`` should then
271*4882a593Smuzhiyun   provide the syscalls, ``crt0.o`` and other functions that are no
272*4882a593Smuzhiyun   longer part of ``newlib`` itself. If you are using
273*4882a593Smuzhiyun   ``TCLIBC = "newlib"`` this now means that you must link applications
274*4882a593Smuzhiyun   with both ``newlib`` and ``libgloss``, whereas before ``newlib``
275*4882a593Smuzhiyun   would run in many configurations by itself.
276