blob: 8d50ab9133ecbf2474d6621593868050b4172b2f [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
2"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
3[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
4
5<chapter id='migration'>
6<title>Migrating to a Newer Yocto Project Release</title>
7
8 <para>
9 This chapter provides information you can use to migrate work to a
10 newer Yocto Project release. You can find the same information in the
11 release notes for a given release.
12 </para>
13
14<section id='general-migration-considerations'>
15 <title>General Migration Considerations</title>
16
17 <para>
18 Some considerations are not tied to a specific Yocto Project
19 release.
20 This section presents information you should consider when
21 migrating to any new Yocto Project release.
22 <itemizedlist>
23 <listitem><para><emphasis>Dealing with Customized Recipes</emphasis>:
24 Issues could arise if you take older recipes that contain
25 customizations and simply copy them forward expecting them
26 to work after you migrate to new Yocto Project metadata.
27 For example, suppose you have a recipe in your layer that is
28 a customized version of a core recipe copied from the earlier
29 release, rather than through the use of an append file.
30 When you migrate to a newer version of Yocto Project, the
31 metadata (e.g. perhaps an include file used by the recipe)
32 could have changed in a way that would break the build.
33 Say, for example, a function is removed from an include file
34 and the customized recipe tries to call that function.
35 </para>
36
37 <para>You could "forward-port" all your customizations in your
38 recipe so that everything works for the new release.
39 However, this is not the optimal solution as you would have
40 to repeat this process with each new release if changes
41 occur that give rise to problems.</para>
42
43 <para>The better solution (where practical) is to use append
44 files (<filename>*.bbappend</filename>) to capture any
45 customizations you want to make to a recipe.
46 Doing so, isolates your changes from the main recipe making
47 them much more manageable.
48 However, sometimes it is not practical to use an append
49 file.
50 A good example of this is when introducing a newer or older
51 version of a recipe in another layer.</para>
52 </listitem>
53 <listitem><para><emphasis>Updating Append Files</emphasis>:
54 Since append files generally only contain your customizations,
55 they often do not need to be adjusted for new releases.
56 However, if the <filename>.bbappend</filename> file is
57 specific to a particular version of the recipe (i.e. its
58 name does not use the % wildcard) and the version of the
59 recipe to which it is appending has changed, then you will
60 at a minimum need to rename the append file to match the
61 name of the recipe file.
62 A mismatch between an append file and its corresponding
63 recipe file (<filename>.bb</filename>) will
64 trigger an error during parsing.</para>
65 <para>Depending on the type of customization the append file
66 applies, other incompatibilities might occur when you
67 upgrade.
68 For example, if your append file applies a patch and the
69 recipe to which it is appending is updated to a newer
70 version, the patch might no longer apply.
71 If this is the case and assuming the patch is still needed,
72 you must modify the patch file so that it does apply.
73 </para></listitem>
74 </itemizedlist>
75 </para>
76</section>
77
78<section id='moving-to-the-yocto-project-1.3-release'>
79 <title>Moving to the Yocto Project 1.3 Release</title>
80
81 <para>
82 This section provides migration information for moving to the
83 Yocto Project 1.3 Release from the prior release.
84 </para>
85
86 <section id='1.3-local-configuration'>
87 <title>Local Configuration</title>
88
89 <para>
90 Differences include changes for
91 <link linkend='var-SSTATE_MIRRORS'><filename>SSTATE_MIRRORS</filename></link>
92 and <filename>bblayers.conf</filename>.
93 </para>
94
95 <section id='migration-1.3-sstate-mirrors'>
96 <title>SSTATE_MIRRORS</title>
97
98 <para>
99 The shared state cache (sstate-cache), as pointed to by
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500100 <link linkend='var-SSTATE_DIR'><filename>SSTATE_DIR</filename></link>,
101 by default now has two-character subdirectories to prevent
102 issues arising from too many files in the same directory.
103 Also, native sstate-cache packages, which are built to run
104 on the host system, will go into a subdirectory named using
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500105 the distro ID string.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500106 If you copy the newly structured sstate-cache to a mirror
107 location (either local or remote) and then point to it in
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500108 <link linkend='var-SSTATE_MIRRORS'><filename>SSTATE_MIRRORS</filename></link>,
109 you need to append "PATH" to the end of the mirror URL so that
110 the path used by BitBake before the mirror substitution is
111 appended to the path used to access the mirror.
112 Here is an example:
113 <literallayout class='monospaced'>
114 SSTATE_MIRRORS = "file://.* http://<replaceable>someserver</replaceable>.tld/share/sstate/PATH"
115 </literallayout>
116 </para>
117 </section>
118
119 <section id='migration-1.3-bblayers-conf'>
120 <title>bblayers.conf</title>
121
122 <para>
123 The <filename>meta-yocto</filename> layer consists of two parts
124 that correspond to the Poky reference distribution and the
125 reference hardware Board Support Packages (BSPs), respectively:
126 <filename>meta-yocto</filename> and
127 <filename>meta-yocto-bsp</filename>.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500128 When running BitBake for the first time after upgrading,
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500129 your <filename>conf/bblayers.conf</filename> file will be
130 updated to handle this change and you will be asked to
131 re-run or restart for the changes to take effect.
132 </para>
133 </section>
134 </section>
135
136 <section id='1.3-recipes'>
137 <title>Recipes</title>
138
139 <para>
140 Differences include changes for the following:
141 <itemizedlist>
142 <listitem><para>Python function whitespace</para></listitem>
143 <listitem><para><filename>proto=</filename> in <filename>SRC_URI</filename></para></listitem>
144 <listitem><para><filename>nativesdk</filename></para></listitem>
145 <listitem><para>Task recipes</para></listitem>
146 <listitem><para><filename>IMAGE_FEATURES</filename></para></listitem>
147 <listitem><para>Removed recipes</para></listitem>
148 </itemizedlist>
149 </para>
150
151 <section id='migration-1.3-python-function-whitespace'>
152 <title>Python Function Whitespace</title>
153
154 <para>
155 All Python functions must now use four spaces for indentation.
156 Previously, an inconsistent mix of spaces and tabs existed,
157 which made extending these functions using
158 <filename>_append</filename> or <filename>_prepend</filename>
159 complicated given that Python treats whitespace as
160 syntactically significant.
161 If you are defining or extending any Python functions (e.g.
162 <filename>populate_packages</filename>, <filename>do_unpack</filename>,
163 <filename>do_patch</filename> and so forth) in custom recipes
164 or classes, you need to ensure you are using consistent
165 four-space indentation.
166 </para>
167 </section>
168
169 <section id='migration-1.3-proto=-in-src-uri'>
170 <title>proto= in SRC_URI</title>
171
172 <para>
173 Any use of <filename>proto=</filename> in
174 <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
175 needs to be changed to <filename>protocol=</filename>.
176 In particular, this applies to the following URIs:
177 <itemizedlist>
178 <listitem><para><filename>svn://</filename></para></listitem>
179 <listitem><para><filename>bzr://</filename></para></listitem>
180 <listitem><para><filename>hg://</filename></para></listitem>
181 <listitem><para><filename>osc://</filename></para></listitem>
182 </itemizedlist>
183 Other URIs were already using <filename>protocol=</filename>.
184 This change improves consistency.
185 </para>
186 </section>
187
188 <section id='migration-1.3-nativesdk'>
189 <title>nativesdk</title>
190
191 <para>
192 The suffix <filename>nativesdk</filename> is now implemented
193 as a prefix, which simplifies a lot of the packaging code for
194 <filename>nativesdk</filename> recipes.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500195 All custom <filename>nativesdk</filename> recipes, which are
196 relocatable packages that are native to
197 <link linkend='var-SDK_ARCH'><filename>SDK_ARCH</filename></link>,
198 and any references need to be updated to use
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500199 <filename>nativesdk-*</filename> instead of
200 <filename>*-nativesdk</filename>.
201 </para>
202 </section>
203
204 <section id='migration-1.3-task-recipes'>
205 <title>Task Recipes</title>
206
207 <para>
208 "Task" recipes are now known as "Package groups" and have
209 been renamed from <filename>task-*.bb</filename> to
210 <filename>packagegroup-*.bb</filename>.
211 Existing references to the previous <filename>task-*</filename>
212 names should work in most cases as there is an automatic
213 upgrade path for most packages.
214 However, you should update references in your own recipes and
215 configurations as they could be removed in future releases.
216 You should also rename any custom <filename>task-*</filename>
217 recipes to <filename>packagegroup-*</filename>, and change
218 them to inherit <filename>packagegroup</filename> instead of
219 <filename>task</filename>, as well as taking the opportunity
220 to remove anything now handled by
221 <filename>packagegroup.bbclass</filename>, such as providing
222 <filename>-dev</filename> and <filename>-dbg</filename>
223 packages, setting
224 <link linkend='var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></link>,
225 and so forth.
226 See the
227 "<link linkend='ref-classes-packagegroup'><filename>packagegroup.bbclass</filename></link>"
228 section for further details.
229 </para>
230 </section>
231
232 <section id='migration-1.3-image-features'>
233 <title>IMAGE_FEATURES</title>
234
235 <para>
236 Image recipes that previously included "apps-console-core"
237 in <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
238 should now include "splash" instead to enable the boot-up
239 splash screen.
240 Retaining "apps-console-core" will still include the splash
241 screen but generates a warning.
242 The "apps-x11-core" and "apps-x11-games"
243 <filename>IMAGE_FEATURES</filename> features have been removed.
244 </para>
245 </section>
246
247 <section id='migration-1.3-removed-recipes'>
248 <title>Removed Recipes</title>
249
250 <para>
251 The following recipes have been removed.
252 For most of them, it is unlikely that you would have any
253 references to them in your own
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500254 <link linkend='metadata'>Metadata</link>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500255 However, you should check your metadata against this list to be sure:
256 <itemizedlist>
257 <listitem><para><emphasis><filename>libx11-trim</filename></emphasis>:
258 Replaced by <filename>libx11</filename>, which has a negligible
259 size difference with modern Xorg.</para></listitem>
260 <listitem><para><emphasis><filename>xserver-xorg-lite</filename></emphasis>:
261 Use <filename>xserver-xorg</filename>, which has a negligible
262 size difference when DRI and GLX modules are not installed.</para></listitem>
263 <listitem><para><emphasis><filename>xserver-kdrive</filename></emphasis>:
264 Effectively unmaintained for many years.</para></listitem>
265 <listitem><para><emphasis><filename>mesa-xlib</filename></emphasis>:
266 No longer serves any purpose.</para></listitem>
267 <listitem><para><emphasis><filename>galago</filename></emphasis>:
268 Replaced by telepathy.</para></listitem>
269 <listitem><para><emphasis><filename>gail</filename></emphasis>:
270 Functionality was integrated into GTK+ 2.13.</para></listitem>
271 <listitem><para><emphasis><filename>eggdbus</filename></emphasis>:
272 No longer needed.</para></listitem>
273 <listitem><para><emphasis><filename>gcc-*-intermediate</filename></emphasis>:
274 The build has been restructured to avoid the need for
275 this step.</para></listitem>
276 <listitem><para><emphasis><filename>libgsmd</filename></emphasis>:
277 Unmaintained for many years.
278 Functionality now provided by
279 <filename>ofono</filename> instead.</para></listitem>
280 <listitem><para><emphasis>contacts, dates, tasks, eds-tools</emphasis>:
281 Largely unmaintained PIM application suite.
282 It has been moved to <filename>meta-gnome</filename>
283 in <filename>meta-openembedded</filename>.</para></listitem>
284 </itemizedlist>
285 In addition to the previously listed changes, the
286 <filename>meta-demoapps</filename> directory has also been removed
287 because the recipes in it were not being maintained and many
288 had become obsolete or broken.
289 Additionally, these recipes were not parsed in the default configuration.
290 Many of these recipes are already provided in an updated and
291 maintained form within the OpenEmbedded community layers such as
292 <filename>meta-oe</filename> and <filename>meta-gnome</filename>.
293 For the remainder, you can now find them in the
294 <filename>meta-extras</filename> repository, which is in the
295 Yocto Project
Brad Bishop316dfdd2018-06-25 12:45:53 -0400296 <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500297 </para>
298 </section>
299 </section>
300
301 <section id='1.3-linux-kernel-naming'>
302 <title>Linux Kernel Naming</title>
303
304 <para>
305 The naming scheme for kernel output binaries has been changed to
306 now include
307 <link linkend='var-PE'><filename>PE</filename></link> as part of the
308 filename:
309 <literallayout class='monospaced'>
310 KERNEL_IMAGE_BASE_NAME ?= "${KERNEL_IMAGETYPE}-${PE}-${PV}-${PR}-${MACHINE}-${DATETIME}"
311 </literallayout>
312 </para>
313
314 <para>
315 Because the <filename>PE</filename> variable is not set by default,
316 these binary files could result with names that include two dash
317 characters.
318 Here is an example:
319 <literallayout class='monospaced'>
320 bzImage--3.10.9+git0+cd502a8814_7144bcc4b8-r0-qemux86-64-20130830085431.bin
321 </literallayout>
322 </para>
323 </section>
324</section>
325
326<section id='moving-to-the-yocto-project-1.4-release'>
327 <title>Moving to the Yocto Project 1.4 Release</title>
328
329 <para>
330 This section provides migration information for moving to the
331 Yocto Project 1.4 Release from the prior release.
332 </para>
333
334 <section id='migration-1.4-bitbake'>
335 <title>BitBake</title>
336
337 <para>
338 Differences include the following:
339 <itemizedlist>
340 <listitem><para><emphasis>Comment Continuation:</emphasis>
341 If a comment ends with a line continuation (\) character,
342 then the next line must also be a comment.
343 Any instance where this is not the case, now triggers
344 a warning.
345 You must either remove the continuation character, or be
346 sure the next line is a comment.
347 </para></listitem>
348 <listitem><para><emphasis>Package Name Overrides:</emphasis>
349 The runtime package specific variables
350 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>,
351 <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>,
352 <link linkend='var-RSUGGESTS'><filename>RSUGGESTS</filename></link>,
353 <link linkend='var-RPROVIDES'><filename>RPROVIDES</filename></link>,
354 <link linkend='var-RCONFLICTS'><filename>RCONFLICTS</filename></link>,
355 <link linkend='var-RREPLACES'><filename>RREPLACES</filename></link>,
356 <link linkend='var-FILES'><filename>FILES</filename></link>,
357 <link linkend='var-ALLOW_EMPTY'><filename>ALLOW_EMPTY</filename></link>,
358 and the pre, post, install, and uninstall script functions
359 <filename>pkg_preinst</filename>,
360 <filename>pkg_postinst</filename>,
361 <filename>pkg_prerm</filename>, and
362 <filename>pkg_postrm</filename> should always have a
363 package name override.
364 For example, use <filename>RDEPENDS_${PN}</filename> for
365 the main package instead of <filename>RDEPENDS</filename>.
366 BitBake uses more strict checks when it parses recipes.
367 </para></listitem>
368 </itemizedlist>
369 </para>
370 </section>
371
372 <section id='migration-1.4-build-behavior'>
373 <title>Build Behavior</title>
374
375 <para>
376 Differences include the following:
377 <itemizedlist>
378 <listitem><para><emphasis>Shared State Code:</emphasis>
379 The shared state code has been optimized to avoid running
380 unnecessary tasks.
381 For example, the following no longer populates the target
382 sysroot since that is not necessary:
383 <literallayout class='monospaced'>
384 $ bitbake -c rootfs <replaceable>some-image</replaceable>
385 </literallayout>
386 Instead, the system just needs to extract the output
387 package contents, re-create the packages, and construct
388 the root filesystem.
389 This change is unlikely to cause any problems unless
390 you have missing declared dependencies.
391 </para></listitem>
392 <listitem><para><emphasis>Scanning Directory Names:</emphasis>
393 When scanning for files in
394 <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>,
395 the build system now uses
396 <link linkend='var-FILESOVERRIDES'><filename>FILESOVERRIDES</filename></link>
397 instead of <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
398 for the directory names.
399 In general, the values previously in
400 <filename>OVERRIDES</filename> are now in
401 <filename>FILESOVERRIDES</filename> as well.
402 However, if you relied upon an additional value
403 you previously added to <filename>OVERRIDES</filename>,
404 you might now need to add it to
405 <filename>FILESOVERRIDES</filename> unless you are already
406 adding it through the
407 <link linkend='var-MACHINEOVERRIDES'><filename>MACHINEOVERRIDES</filename></link>
408 or <link linkend='var-DISTROOVERRIDES'><filename>DISTROOVERRIDES</filename></link>
409 variables, as appropriate.
410 For more related changes, see the
411 "<link linkend='migration-1.4-variables'>Variables</link>"
412 section.
413 </para></listitem>
414 </itemizedlist>
415 </para>
416 </section>
417
418
419 <section id='migration-1.4-proxies-and-fetching-source'>
420 <title>Proxies and Fetching Source</title>
421
422 <para>
423 A new <filename>oe-git-proxy</filename> script has been added to
424 replace previous methods of handling proxies and fetching source
425 from Git.
426 See the <filename>meta-yocto/conf/site.conf.sample</filename> file
427 for information on how to use this script.
428 </para>
429 </section>
430
431 <section id='migration-1.4-custom-interfaces-file-netbase-change'>
432 <title>Custom Interfaces File (netbase change)</title>
433
434 <para>
435 If you have created your own custom
436 <filename>etc/network/interfaces</filename> file by creating
437 an append file for the <filename>netbase</filename> recipe,
438 you now need to create an append file for the
439 <filename>init-ifupdown</filename> recipe instead, which you can
440 find in the
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500441 <link linkend='source-directory'>Source Directory</link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500442 at <filename>meta/recipes-core/init-ifupdown</filename>.
443 For information on how to use append files, see the
444 "<ulink url='&YOCTO_DOCS_DEV_URL;#using-bbappend-files'>Using .bbappend Files</ulink>"
Brad Bishop316dfdd2018-06-25 12:45:53 -0400445 section in the Yocto Project Development Tasks Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500446 </para>
447 </section>
448
449 <section id='migration-1.4-remote-debugging'>
450 <title>Remote Debugging</title>
451
452 <para>
453 Support for remote debugging with the Eclipse IDE is now
454 separated into an image feature
455 (<filename>eclipse-debug</filename>) that corresponds to the
456 <filename>packagegroup-core-eclipse-debug</filename> package group.
457 Previously, the debugging feature was included through the
458 <filename>tools-debug</filename> image feature, which corresponds
459 to the <filename>packagegroup-core-tools-debug</filename>
460 package group.
461 </para>
462 </section>
463
464 <section id='migration-1.4-variables'>
465 <title>Variables</title>
466
467 <para>
468 The following variables have changed:
469 <itemizedlist>
470 <listitem><para><emphasis><filename>SANITY_TESTED_DISTROS</filename>:</emphasis>
471 This variable now uses a distribution ID, which is composed
472 of the host distributor ID followed by the release.
473 Previously,
474 <link linkend='var-SANITY_TESTED_DISTROS'><filename>SANITY_TESTED_DISTROS</filename></link>
475 was composed of the description field.
476 For example, "Ubuntu 12.10" becomes "Ubuntu-12.10".
477 You do not need to worry about this change if you are not
478 specifically setting this variable, or if you are
479 specifically setting it to "".
480 </para></listitem>
481 <listitem><para><emphasis><filename>SRC_URI</filename>:</emphasis>
482 The <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>,
483 <filename>${</filename><link linkend='var-PF'><filename>PF</filename></link><filename>}</filename>,
484 <filename>${</filename><link linkend='var-P'><filename>P</filename></link><filename>}</filename>,
485 and <filename>FILE_DIRNAME</filename> directories have been
486 dropped from the default value of the
487 <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>
488 variable, which is used as the search path for finding files
489 referred to in
490 <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>.
491 If you have a recipe that relied upon these directories,
492 which would be unusual, then you will need to add the
493 appropriate paths within the recipe or, alternatively,
494 rearrange the files.
495 The most common locations are still covered by
496 <filename>${BP}</filename>, <filename>${BPN}</filename>,
497 and "files", which all remain in the default value of
498 <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>.
499 </para></listitem>
500 </itemizedlist>
501 </para>
502 </section>
503
504 <section id='migration-target-package-management-with-rpm'>
505 <title>Target Package Management with RPM</title>
506
507 <para>
508 If runtime package management is enabled and the RPM backend
509 is selected, Smart is now installed for package download, dependency
510 resolution, and upgrades instead of Zypper.
511 For more information on how to use Smart, run the following command
512 on the target:
513 <literallayout class='monospaced'>
514 smart --help
515 </literallayout>
516 </para>
517 </section>
518
519 <section id='migration-1.4-recipes-moved'>
520 <title>Recipes Moved</title>
521
522 <para>
523 The following recipes were moved from their previous locations
524 because they are no longer used by anything in
525 the OpenEmbedded-Core:
526 <itemizedlist>
527 <listitem><para><emphasis><filename>clutter-box2d</filename>:</emphasis>
528 Now resides in the <filename>meta-oe</filename> layer.
529 </para></listitem>
530 <listitem><para><emphasis><filename>evolution-data-server</filename>:</emphasis>
531 Now resides in the <filename>meta-gnome</filename> layer.
532 </para></listitem>
533 <listitem><para><emphasis><filename>gthumb</filename>:</emphasis>
534 Now resides in the <filename>meta-gnome</filename> layer.
535 </para></listitem>
536 <listitem><para><emphasis><filename>gtkhtml2</filename>:</emphasis>
537 Now resides in the <filename>meta-oe</filename> layer.
538 </para></listitem>
539 <listitem><para><emphasis><filename>gupnp</filename>:</emphasis>
540 Now resides in the <filename>meta-multimedia</filename> layer.
541 </para></listitem>
542 <listitem><para><emphasis><filename>gypsy</filename>:</emphasis>
543 Now resides in the <filename>meta-oe</filename> layer.
544 </para></listitem>
545 <listitem><para><emphasis><filename>libcanberra</filename>:</emphasis>
546 Now resides in the <filename>meta-gnome</filename> layer.
547 </para></listitem>
548 <listitem><para><emphasis><filename>libgdata</filename>:</emphasis>
549 Now resides in the <filename>meta-gnome</filename> layer.
550 </para></listitem>
551 <listitem><para><emphasis><filename>libmusicbrainz</filename>:</emphasis>
552 Now resides in the <filename>meta-multimedia</filename> layer.
553 </para></listitem>
554 <listitem><para><emphasis><filename>metacity</filename>:</emphasis>
555 Now resides in the <filename>meta-gnome</filename> layer.
556 </para></listitem>
557 <listitem><para><emphasis><filename>polkit</filename>:</emphasis>
558 Now resides in the <filename>meta-oe</filename> layer.
559 </para></listitem>
560 <listitem><para><emphasis><filename>zeroconf</filename>:</emphasis>
561 Now resides in the <filename>meta-networking</filename> layer.
562 </para></listitem>
563 </itemizedlist>
564 </para>
565 </section>
566
567 <section id='migration-1.4-removals-and-renames'>
568 <title>Removals and Renames</title>
569
570 <para>
571 The following list shows what has been removed or renamed:
572 <itemizedlist>
573 <listitem><para><emphasis><filename>evieext</filename>:</emphasis>
574 Removed because it has been removed from
575 <filename>xserver</filename> since 2008.
576 </para></listitem>
577 <listitem><para><emphasis>Gtk+ DirectFB:</emphasis>
578 Removed support because upstream Gtk+ no longer supports it
579 as of version 2.18.
580 </para></listitem>
581 <listitem><para><emphasis><filename>libxfontcache / xfontcacheproto</filename>:</emphasis>
582 Removed because they were removed from the Xorg server in 2008.
583 </para></listitem>
584 <listitem><para><emphasis><filename>libxp / libxprintapputil / libxprintutil / printproto</filename>:</emphasis>
585 Removed because the XPrint server was removed from
586 Xorg in 2008.
587 </para></listitem>
588 <listitem><para><emphasis><filename>libxtrap / xtrapproto</filename>:</emphasis>
589 Removed because their functionality was broken upstream.
590 </para></listitem>
591 <listitem><para><emphasis>linux-yocto 3.0 kernel:</emphasis>
592 Removed with linux-yocto 3.8 kernel being added.
593 The linux-yocto 3.2 and linux-yocto 3.4 kernels remain
594 as part of the release.
595 </para></listitem>
596 <listitem><para><emphasis><filename>lsbsetup</filename>:</emphasis>
597 Removed with functionality now provided by
598 <filename>lsbtest</filename>.
599 </para></listitem>
600 <listitem><para><emphasis><filename>matchbox-stroke</filename>:</emphasis>
601 Removed because it was never more than a proof-of-concept.
602 </para></listitem>
603 <listitem><para><emphasis><filename>matchbox-wm-2 / matchbox-theme-sato-2</filename>:</emphasis>
604 Removed because they are not maintained.
605 However, <filename>matchbox-wm</filename> and
606 <filename>matchbox-theme-sato</filename> are still
607 provided.
608 </para></listitem>
609 <listitem><para><emphasis><filename>mesa-dri</filename>:</emphasis>
610 Renamed to <filename>mesa</filename>.
611 </para></listitem>
612 <listitem><para><emphasis><filename>mesa-xlib</filename>:</emphasis>
613 Removed because it was no longer useful.
614 </para></listitem>
615 <listitem><para><emphasis><filename>mutter</filename>:</emphasis>
616 Removed because nothing ever uses it and the recipe is
617 very old.
618 </para></listitem>
619 <listitem><para><emphasis><filename>orinoco-conf</filename>:</emphasis>
620 Removed because it has become obsolete.
621 </para></listitem>
622 <listitem><para><emphasis><filename>update-modules</filename>:</emphasis>
623 Removed because it is no longer used.
624 The kernel module <filename>postinstall</filename> and
625 <filename>postrm</filename> scripts can now do the same
626 task without the use of this script.
627 </para></listitem>
628 <listitem><para><emphasis><filename>web</filename>:</emphasis>
629 Removed because it is not maintained. Superseded by
630 <filename>web-webkit</filename>.
631 </para></listitem>
632 <listitem><para><emphasis><filename>xf86bigfontproto</filename>:</emphasis>
633 Removed because upstream it has been disabled by default
634 since 2007.
635 Nothing uses <filename>xf86bigfontproto</filename>.
636 </para></listitem>
637 <listitem><para><emphasis><filename>xf86rushproto</filename>:</emphasis>
638 Removed because its dependency in
639 <filename>xserver</filename> was spurious and it was
640 removed in 2005.
641 </para></listitem>
642 <listitem><para><emphasis><filename>zypper / libzypp / sat-solver</filename>:</emphasis>
643 Removed and been functionally replaced with Smart
644 (<filename>python-smartpm</filename>) when RPM packaging
645 is used and package management is enabled on the target.
646 </para></listitem>
647 </itemizedlist>
648 </para>
649 </section>
650</section>
651
652<section id='moving-to-the-yocto-project-1.5-release'>
653 <title>Moving to the Yocto Project 1.5 Release</title>
654
655 <para>
656 This section provides migration information for moving to the
657 Yocto Project 1.5 Release from the prior release.
658 </para>
659
660 <section id='migration-1.5-host-dependency-changes'>
661 <title>Host Dependency Changes</title>
662
663 <para>
664 The OpenEmbedded build system now has some additional requirements
665 on the host system:
666 <itemizedlist>
667 <listitem><para>Python 2.7.3+</para></listitem>
668 <listitem><para>Tar 1.24+</para></listitem>
669 <listitem><para>Git 1.7.8+</para></listitem>
670 <listitem><para>Patched version of Make if you are using
671 3.82.
672 Most distributions that provide Make 3.82 use the patched
673 version.</para></listitem>
674 </itemizedlist>
675 If the Linux distribution you are using on your build host
676 does not provide packages for these, you can install and use
677 the Buildtools tarball, which provides an SDK-like environment
678 containing them.
679 </para>
680
681 <para>
682 For more information on this requirement, see the
683 "<link linkend='required-git-tar-and-python-versions'>Required Git, tar, and Python Versions</link>"
684 section.
685 </para>
686 </section>
687
688 <section id='migration-1.5-atom-pc-bsp'>
689 <title><filename>atom-pc</filename> Board Support Package (BSP)</title>
690
691 <para>
692 The <filename>atom-pc</filename> hardware reference BSP has been
693 replaced by a <filename>genericx86</filename> BSP.
694 This BSP is not necessarily guaranteed to work on all x86
695 hardware, but it will run on a wider range of systems than the
696 <filename>atom-pc</filename> did.
697 <note>
698 Additionally, a <filename>genericx86-64</filename> BSP has
699 been added for 64-bit Atom systems.
700 </note>
701 </para>
702 </section>
703
704 <section id='migration-1.5-bitbake'>
705 <title>BitBake</title>
706
707 <para>
708 The following changes have been made that relate to BitBake:
709 <itemizedlist>
710 <listitem><para>
711 BitBake now supports a <filename>_remove</filename>
712 operator.
713 The addition of this operator means you will have to
714 rename any items in recipe space (functions, variables)
715 whose names currently contain
716 <filename>_remove_</filename> or end with
717 <filename>_remove</filename> to avoid unexpected behavior.
718 </para></listitem>
719 <listitem><para>
720 BitBake's global method pool has been removed.
721 This method is not particularly useful and led to clashes
722 between recipes containing functions that had the
723 same name.</para></listitem>
724 <listitem><para>
725 The "none" server backend has been removed.
726 The "process" server backend has been serving well as the
727 default for a long time now.</para></listitem>
728 <listitem><para>
729 The <filename>bitbake-runtask</filename> script has been
730 removed.</para></listitem>
731 <listitem><para>
732 <filename>${</filename><link linkend='var-P'><filename>P</filename></link><filename>}</filename>
733 and
734 <filename>${</filename><link linkend='var-PF'><filename>PF</filename></link><filename>}</filename>
735 are no longer added to
736 <link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
737 by default in <filename>bitbake.conf</filename>.
738 These version-specific <filename>PROVIDES</filename>
739 items were seldom used.
740 Attempting to use them could result in two versions being
741 built simultaneously rather than just one version due to
742 the way BitBake resolves dependencies.</para></listitem>
743 </itemizedlist>
744 </para>
745 </section>
746
747 <section id='migration-1.5-qa-warnings'>
748 <title>QA Warnings</title>
749
750 <para>
751 The following changes have been made to the package QA checks:
752 <itemizedlist>
753 <listitem><para>
754 If you have customized
755 <link linkend='var-ERROR_QA'><filename>ERROR_QA</filename></link>
756 or <link linkend='var-WARN_QA'><filename>WARN_QA</filename></link>
757 values in your configuration, check that they contain all of
758 the issues that you wish to be reported.
759 Previous Yocto Project versions contained a bug that meant
760 that any item not mentioned in <filename>ERROR_QA</filename>
761 or <filename>WARN_QA</filename> would be treated as a
762 warning.
763 Consequently, several important items were not already in
764 the default value of <filename>WARN_QA</filename>.
765 All of the possible QA checks are now documented in the
766 "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>"
767 section.</para></listitem>
768 <listitem><para>
769 An additional QA check has been added to check if
770 <filename>/usr/share/info/dir</filename> is being installed.
771 Your recipe should delete this file within
772 <link linkend='ref-tasks-install'><filename>do_install</filename></link>
773 if "make install" is installing it.
774 </para></listitem>
775 <listitem><para>
776 If you are using the buildhistory class, the check for the
777 package version going backwards is now controlled using a
778 standard QA check.
779 Thus, if you have customized your
780 <filename>ERROR_QA</filename> or
781 <filename>WARN_QA</filename> values and still wish to have
782 this check performed, you should add
783 "version-going-backwards" to your value for one or the
784 other variables depending on how you wish it to be handled.
785 See the documented QA checks in the
786 "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>"
787 section.
788 </para></listitem>
789 </itemizedlist>
790 </para>
791 </section>
792
793 <section id='migration-1.5-directory-layout-changes'>
794 <title>Directory Layout Changes</title>
795
796 <para>
797 The following directory changes exist:
798 <itemizedlist>
799 <listitem><para>
800 Output SDK installer files are now named to include the
801 image name and tuning architecture through the
802 <link linkend='var-SDK_NAME'><filename>SDK_NAME</filename></link>
803 variable.</para></listitem>
804 <listitem><para>
805 Images and related files are now installed into a directory
806 that is specific to the machine, instead of a parent
807 directory containing output files for multiple machines.
808 The
809 <link linkend='var-DEPLOY_DIR_IMAGE'><filename>DEPLOY_DIR_IMAGE</filename></link>
810 variable continues to point to the directory containing
811 images for the current
812 <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
813 and should be used anywhere there is a need to refer to
814 this directory.
815 The <filename>runqemu</filename> script now uses this
816 variable to find images and kernel binaries and will use
817 BitBake to determine the directory.
818 Alternatively, you can set the
819 <filename>DEPLOY_DIR_IMAGE</filename> variable in the
820 external environment.</para></listitem>
821 <listitem><para>
822 When buildhistory is enabled, its output is now written
823 under the
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500824 <link linkend='build-directory'>Build Directory</link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500825 rather than
826 <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>.
827 Doing so makes it easier to delete
828 <filename>TMPDIR</filename> and preserve the build history.
829 Additionally, data for produced SDKs is now split by
830 <link linkend='var-IMAGE_NAME'><filename>IMAGE_NAME</filename></link>.
831 </para></listitem>
832 <listitem><para>
833 The <filename>pkgdata</filename> directory produced as
834 part of the packaging process has been collapsed into a
835 single machine-specific directory.
836 This directory is located under
837 <filename>sysroots</filename> and uses a machine-specific
838 name (i.e.
839 <filename>tmp/sysroots/<replaceable>machine</replaceable>/pkgdata</filename>).
840 </para></listitem>
841 </itemizedlist>
842 </para>
843 </section>
844
845 <section id='migration-1.5-shortened-git-srcrev-values'>
846 <title>Shortened Git <filename>SRCREV</filename> Values</title>
847
848 <para>
849 BitBake will now shorten revisions from Git repositories from the
850 normal 40 characters down to 10 characters within
851 <link linkend='var-SRCPV'><filename>SRCPV</filename></link>
852 for improved usability in path and file names.
853 This change should be safe within contexts where these revisions
854 are used because the chances of spatially close collisions
855 is very low.
856 Distant collisions are not a major issue in the way
857 the values are used.
858 </para>
859 </section>
860
861 <section id='migration-1.5-image-features'>
862 <title><filename>IMAGE_FEATURES</filename></title>
863
864 <para>
865 The following changes have been made that relate to
866 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>:
867 <itemizedlist>
868 <listitem><para>
Brad Bishop316dfdd2018-06-25 12:45:53 -0400869 The value of <filename>IMAGE_FEATURES</filename> is now
870 validated to ensure invalid feature items are not added.
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500871 Some users mistakenly add package names to this variable
872 instead of using
873 <link linkend='var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></link>
874 in order to have the package added to the image, which does
875 not work.
876 This change is intended to catch those kinds of situations.
877 Valid <filename>IMAGE_FEATURES</filename> are drawn from
878 <link linkend='var-PACKAGE_GROUP'><filename>PACKAGE_GROUP</filename></link>
879 definitions,
880 <link linkend='var-COMPLEMENTARY_GLOB'><filename>COMPLEMENTARY_GLOB</filename></link>
881 and a new "validitems" varflag on
882 <filename>IMAGE_FEATURES</filename>.
883 The "validitems" varflag change allows additional features
884 to be added if they are not provided using the previous
885 two mechanisms.
886 </para></listitem>
887 <listitem><para>
888 The previously deprecated "apps-console-core"
889 <filename>IMAGE_FEATURES</filename> item is no longer
890 supported.
891 Add "splash" to <filename>IMAGE_FEATURES</filename> if you
892 wish to have the splash screen enabled, since this is
893 all that apps-console-core was doing.</para></listitem>
894 </itemizedlist>
895 </para>
896 </section>
897
898 <section id='migration-1.5-run'>
899 <title><filename>/run</filename></title>
900
901 <para>
902 The <filename>/run</filename> directory from the Filesystem
903 Hierarchy Standard 3.0 has been introduced.
904 You can find some of the implications for this change
905 <ulink url='http://cgit.openembedded.org/openembedded-core/commit/?id=0e326280a15b0f2c4ef2ef4ec441f63f55b75873'>here</ulink>.
906 The change also means that recipes that install files to
907 <filename>/var/run</filename> must be changed.
908 You can find a guide on how to make these changes
909 <ulink url='http://permalink.gmane.org/gmane.comp.handhelds.openembedded/58530'>here</ulink>.
910 </para>
911 </section>
912
913 <section id='migration-1.5-removal-of-package-manager-database-within-image-recipes'>
914 <title>Removal of Package Manager Database Within Image Recipes</title>
915
916 <para>
917 The image <filename>core-image-minimal</filename> no longer adds
918 <filename>remove_packaging_data_files</filename> to
919 <link linkend='var-ROOTFS_POSTPROCESS_COMMAND'><filename>ROOTFS_POSTPROCESS_COMMAND</filename></link>.
920 This addition is now handled automatically when "package-management"
921 is not in
922 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>.
923 If you have custom image recipes that make this addition,
924 you should remove the lines, as they are not needed and might
925 interfere with correct operation of postinstall scripts.
926 </para>
927 </section>
928
929 <section id='migration-1.5-images-now-rebuild-only-on-changes-instead-of-every-time'>
930 <title>Images Now Rebuild Only on Changes Instead of Every Time</title>
931
932 <para>
933 The
934 <link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>
935 and other related image
936 construction tasks are no longer marked as "nostamp".
937 Consequently, they will only be re-executed when their inputs have
938 changed.
939 Previous versions of the OpenEmbedded build system always rebuilt
940 the image when requested rather when necessary.
941 </para>
942 </section>
943
944 <section id='migration-1.5-task-recipes'>
945 <title>Task Recipes</title>
946
947 <para>
948 The previously deprecated <filename>task.bbclass</filename> has
949 now been dropped.
950 For recipes that previously inherited from this class, you should
951 rename them from <filename>task-*</filename> to
952 <filename>packagegroup-*</filename> and inherit packagegroup
953 instead.
954 </para>
955
956 <para>
957 For more information, see the
958 "<link linkend='ref-classes-packagegroup'><filename>packagegroup.bbclass</filename></link>"
959 section.
960 </para>
961 </section>
962
963 <section id='migration-1.5-busybox'>
964 <title>BusyBox</title>
965
966 <para>
967 By default, we now split BusyBox into two binaries:
968 one that is suid root for those components that need it, and
969 another for the rest of the components.
970 Splitting BusyBox allows for optimization that eliminates the
971 <filename>tinylogin</filename> recipe as recommended by upstream.
972 You can disable this split by setting
973 <link linkend='var-BUSYBOX_SPLIT_SUID'><filename>BUSYBOX_SPLIT_SUID</filename></link>
974 to "0".
975 </para>
976 </section>
977
978 <section id='migration-1.5-automated-image-testing'>
979 <title>Automated Image Testing</title>
980
981 <para>
982 A new automated image testing framework has been added
983 through the
Patrick Williamsf1e5d692016-03-30 15:21:19 -0500984 <link linkend='ref-classes-testimage*'><filename>testimage.bbclass</filename></link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500985 class.
986 This framework replaces the older
987 <filename>imagetest-qemu</filename> framework.
988 </para>
989
990 <para>
991 You can learn more about performing automated image tests in the
992 "<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500993 section in the Yocto Project Development Tasks Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500994 </para>
995 </section>
996
997 <section id='migration-1.5-build-history'>
998 <title>Build History</title>
999
1000 <para>
1001 Following are changes to Build History:
1002 <itemizedlist>
1003 <listitem><para>
1004 Installed package sizes:
1005 <filename>installed-package-sizes.txt</filename> for an
1006 image now records the size of the files installed by each
1007 package instead of the size of each compressed package
1008 archive file.</para></listitem>
1009 <listitem><para>
1010 The dependency graphs (<filename>depends*.dot</filename>)
1011 now use the actual package names instead of replacing
1012 dashes, dots and plus signs with underscores.
1013 </para></listitem>
1014 <listitem><para>
1015 The <filename>buildhistory-diff</filename> and
1016 <filename>buildhistory-collect-srcrevs</filename>
1017 utilities have improved command-line handling.
1018 Use the <filename>--help</filename> option for
1019 each utility for more information on the new syntax.
1020 </para></listitem>
1021 </itemizedlist>
1022 For more information on Build History, see the
Brad Bishop316dfdd2018-06-25 12:45:53 -04001023 "<ulink url='&YOCTO_DOCS_DEV_URL;#maintaining-build-output-quality'>Maintaining Build Output Quality</ulink>"
1024 section in the Yocto Project Development Tasks Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001025 </para>
1026 </section>
1027
1028 <section id='migration-1.5-udev'>
1029 <title><filename>udev</filename></title>
1030
1031 <para>
1032 Following are changes to <filename>udev</filename>:
1033 <itemizedlist>
1034 <listitem><para>
1035 <filename>udev</filename> no longer brings in
1036 <filename>udev-extraconf</filename> automatically
1037 through
1038 <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>,
1039 since this was originally intended to be optional.
1040 If you need the extra rules, then add
1041 <filename>udev-extraconf</filename> to your image.
1042 </para></listitem>
1043 <listitem><para>
1044 <filename>udev</filename> no longer brings in
1045 <filename>pciutils-ids</filename> or
1046 <filename>usbutils-ids</filename> through
1047 <filename>RRECOMMENDS</filename>.
1048 These are not needed by <filename>udev</filename> itself
1049 and removing them saves around 350KB.
1050 </para></listitem>
1051 </itemizedlist>
1052 </para>
1053 </section>
1054
1055 <section id='migration-1.5-removed-renamed-recipes'>
1056 <title>Removed and Renamed Recipes</title>
1057
1058 <itemizedlist>
1059 <listitem><para>
1060 The <filename>linux-yocto</filename> 3.2 kernel has been
1061 removed.</para></listitem>
1062 <listitem><para>
1063 <filename>libtool-nativesdk</filename> has been renamed to
1064 <filename>nativesdk-libtool</filename>.</para></listitem>
1065 <listitem><para>
1066 <filename>tinylogin</filename> has been removed.
1067 It has been replaced by a suid portion of Busybox.
1068 See the
1069 "<link linkend='migration-1.5-busybox'>BusyBox</link>" section
1070 for more information.</para></listitem>
1071 <listitem><para>
1072 <filename>external-python-tarball</filename> has been renamed
1073 to <filename>buildtools-tarball</filename>.
1074 </para></listitem>
1075 <listitem><para>
1076 <filename>web-webkit</filename> has been removed.
1077 It has been functionally replaced by
1078 <filename>midori</filename>.</para></listitem>
1079 <listitem><para>
1080 <filename>imake</filename> has been removed.
1081 It is no longer needed by any other recipe.
1082 </para></listitem>
1083 <listitem><para>
1084 <filename>transfig-native</filename> has been removed.
1085 It is no longer needed by any other recipe.
1086 </para></listitem>
1087 <listitem><para>
1088 <filename>anjuta-remote-run</filename> has been removed.
1089 Anjuta IDE integration has not been officially supported for
1090 several releases.</para></listitem>
1091 </itemizedlist>
1092 </section>
1093
1094 <section id='migration-1.5-other-changes'>
1095 <title>Other Changes</title>
1096
1097 <para>
1098 Following is a list of short entries describing other changes:
1099 <itemizedlist>
1100 <listitem><para>
1101 <filename>run-postinsts</filename>: Make this generic.
1102 </para></listitem>
1103 <listitem><para>
1104 <filename>base-files</filename>: Remove the unnecessary
1105 <filename>media/</filename><replaceable>xxx</replaceable> directories.
1106 </para></listitem>
1107 <listitem><para>
1108 <filename>alsa-state</filename>: Provide an empty
1109 <filename>asound.conf</filename> by default.
1110 </para></listitem>
1111 <listitem><para>
1112 <filename>classes/image</filename>: Ensure
1113 <link linkend='var-BAD_RECOMMENDATIONS'><filename>BAD_RECOMMENDATIONS</filename></link>
1114 supports pre-renamed package names.</para></listitem>
1115 <listitem><para>
1116 <filename>classes/rootfs_rpm</filename>: Implement
Brad Bishop316dfdd2018-06-25 12:45:53 -04001117 <filename>BAD_RECOMMENDATIONS</filename> for RPM.
1118 </para></listitem>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001119 <listitem><para>
1120 <filename>systemd</filename>: Remove
1121 <filename>systemd_unitdir</filename> if
1122 <filename>systemd</filename> is not in
1123 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>.
1124 </para></listitem>
1125 <listitem><para>
1126 <filename>systemd</filename>: Remove
1127 <filename>init.d</filename> dir if
1128 <filename>systemd</filename> unit file is present and
1129 <filename>sysvinit</filename> is not a distro feature.
1130 </para></listitem>
1131 <listitem><para>
1132 <filename>libpam</filename>: Deny all services for the
1133 <filename>OTHER</filename> entries.
1134 </para></listitem>
1135 <listitem><para>
1136 <filename>image.bbclass</filename>: Move
1137 <filename>runtime_mapping_rename</filename> to avoid
1138 conflict with <filename>multilib</filename>.
1139 See
1140 <ulink url='https://bugzilla.yoctoproject.org/show_bug.cgi?id=4993'><filename>YOCTO #4993</filename></ulink>
1141 in Bugzilla for more information.
1142 </para></listitem>
1143 <listitem><para>
1144 <filename>linux-dtb</filename>: Use kernel build system
1145 to generate the <filename>dtb</filename> files.
1146 </para></listitem>
1147 <listitem><para>
1148 <filename>kern-tools</filename>: Switch from guilt to
1149 new <filename>kgit-s2q</filename> tool.
1150 </para></listitem>
1151 </itemizedlist>
1152 </para>
1153 </section>
1154</section>
1155
1156<section id='moving-to-the-yocto-project-1.6-release'>
1157 <title>Moving to the Yocto Project 1.6 Release</title>
1158
1159 <para>
1160 This section provides migration information for moving to the
1161 Yocto Project 1.6 Release from the prior release.
1162 </para>
1163
1164
1165 <section id='migration-1.6-archiver-class'>
1166 <title><filename>archiver</filename> Class</title>
1167
1168 <para>
1169 The
1170 <link linkend='ref-classes-archiver'><filename>archiver</filename></link>
1171 class has been rewritten and its configuration has been simplified.
1172 For more details on the source archiver, see the
1173 "<ulink url='&YOCTO_DOCS_DEV_URL;#maintaining-open-source-license-compliance-during-your-products-lifecycle'>Maintaining Open Source License Compliance During Your Product's Lifecycle</ulink>"
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001174 section in the Yocto Project Development Tasks Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001175 </para>
1176 </section>
1177
1178 <section id='migration-1.6-packaging-changes'>
1179 <title>Packaging Changes</title>
1180
1181 <para>
1182 The following packaging changes have been made:
1183 <itemizedlist>
1184 <listitem><para>
1185 The <filename>binutils</filename> recipe no longer produces
1186 a <filename>binutils-symlinks</filename> package.
1187 <filename>update-alternatives</filename> is now used to
1188 handle the preferred <filename>binutils</filename>
1189 variant on the target instead.
1190 </para></listitem>
1191 <listitem><para>
1192 The tc (traffic control) utilities have been split out of
1193 the main <filename>iproute2</filename> package and put
1194 into the <filename>iproute2-tc</filename> package.
1195 </para></listitem>
1196 <listitem><para>
1197 The <filename>gtk-engines</filename> schemas have been
1198 moved to a dedicated
1199 <filename>gtk-engines-schemas</filename> package.
1200 </para></listitem>
1201 <listitem><para>
1202 The <filename>armv7a</filename> with thumb package
1203 architecture suffix has changed.
1204 The suffix for these packages with the thumb
1205 optimization enabled is "t2" as it should be.
1206 Use of this suffix was not the case in the 1.5 release.
1207 Architecture names will change within package feeds as a
1208 result.
1209 </para></listitem>
1210 </itemizedlist>
1211 </para>
1212 </section>
1213
1214 <section id='migration-1.6-bitbake'>
1215 <title>BitBake</title>
1216
1217 <para>
1218 The following changes have been made to
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001219 <link linkend='bitbake-term'>BitBake</link>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001220 </para>
1221
1222 <section id='migration-1.6-matching-branch-requirement-for-git-fetching'>
1223 <title>Matching Branch Requirement for Git Fetching</title>
1224
1225 <para>
1226 When fetching source from a Git repository using
1227 <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>,
1228 BitBake will now validate the
1229 <link linkend='var-SRCREV'><filename>SRCREV</filename></link>
1230 value against the branch.
1231 You can specify the branch using the following form:
1232 <literallayout class='monospaced'>
1233 SRC_URI = "git://server.name/repository;branch=<replaceable>branchname</replaceable>"
1234 </literallayout>
1235 If you do not specify a branch, BitBake looks
1236 in the default "master" branch.
1237 </para>
1238
1239 <para>
1240 Alternatively, if you need to bypass this check (e.g.
1241 if you are fetching a revision corresponding to a tag that
1242 is not on any branch), you can add ";nobranch=1" to
1243 the end of the URL within <filename>SRC_URI</filename>.
1244 </para>
1245 </section>
1246
1247 <section id='migration-1.6-bitbake-deps'>
1248 <title>Python Definition substitutions</title>
1249
1250 <para>
1251 BitBake had some previously deprecated Python definitions
1252 within its <filename>bb</filename> module removed.
1253 You should use their sub-module counterparts instead:
1254 <itemizedlist>
1255 <listitem><para><filename>bb.MalformedUrl</filename>:
1256 Use <filename>bb.fetch.MalformedUrl</filename>.
1257 </para></listitem>
Patrick Williamsf1e5d692016-03-30 15:21:19 -05001258 <listitem><para><filename>bb.encodeurl</filename>:
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001259 Use <filename>bb.fetch.encodeurl</filename>.
1260 </para></listitem>
1261 <listitem><para><filename>bb.decodeurl</filename>:
1262 Use <filename>bb.fetch.decodeurl</filename>
1263 </para></listitem>
1264 <listitem><para><filename>bb.mkdirhier</filename>:
1265 Use <filename>bb.utils.mkdirhier</filename>.
1266 </para></listitem>
1267 <listitem><para><filename>bb.movefile</filename>:
1268 Use <filename>bb.utils.movefile</filename>.
1269 </para></listitem>
1270 <listitem><para><filename>bb.copyfile</filename>:
1271 Use <filename>bb.utils.copyfile</filename>.
1272 </para></listitem>
1273 <listitem><para><filename>bb.which</filename>:
1274 Use <filename>bb.utils.which</filename>.
1275 </para></listitem>
1276 <listitem><para><filename>bb.vercmp_string</filename>:
1277 Use <filename>bb.utils.vercmp_string</filename>.
1278 </para></listitem>
1279 <listitem><para><filename>bb.vercmp</filename>:
1280 Use <filename>bb.utils.vercmp</filename>.
1281 </para></listitem>
1282 </itemizedlist>
1283 </para>
1284 </section>
1285
1286 <section id='migration-1.6-bitbake-fetcher'>
1287 <title>SVK Fetcher</title>
1288
1289 <para>
1290 The SVK fetcher has been removed from BitBake.
1291 </para>
1292 </section>
1293
1294 <section id='migration-1.6-bitbake-console-output'>
1295 <title>Console Output Error Redirection</title>
1296
1297 <para>
1298 The BitBake console UI will now output errors to
1299 <filename>stderr</filename> instead of
1300 <filename>stdout</filename>.
1301 Consequently, if you are piping or redirecting the output of
1302 <filename>bitbake</filename> to somewhere else, and you wish
1303 to retain the errors, you will need to add
1304 <filename>2>&amp;1</filename> (or something similar) to the
1305 end of your <filename>bitbake</filename> command line.
1306 </para>
1307 </section>
1308
1309 <section id='migration-1.6-task-taskname-overrides'>
1310 <title><filename>task-</filename><replaceable>taskname</replaceable> Overrides</title>
1311
1312 <para>
1313 <filename>task-</filename><replaceable>taskname</replaceable> overrides have been
1314 adjusted so that tasks whose names contain underscores have the
1315 underscores replaced by hyphens for the override so that they
1316 now function properly.
1317 For example, the task override for
1318 <link linkend='ref-tasks-populate_sdk'><filename>do_populate_sdk</filename></link>
1319 is <filename>task-populate-sdk</filename>.
1320 </para>
1321 </section>
1322 </section>
1323
1324 <section id='migration-1.6-variable-changes'>
1325 <title>Changes to Variables</title>
1326
1327 <para>
1328 The following variables have changed.
1329 For information on the OpenEmbedded build system variables, see the
1330 "<link linkend='ref-variables-glos'>Variables Glossary</link>" Chapter.
1331 </para>
1332
1333 <section id='migration-1.6-variable-changes-TMPDIR'>
1334 <title><filename>TMPDIR</filename></title>
1335
1336 <para>
1337 <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
1338 can no longer be on an NFS mount.
1339 NFS does not offer full POSIX locking and inode consistency
1340 and can cause unexpected issues if used to store
1341 <filename>TMPDIR</filename>.
1342 </para>
1343
1344 <para>
1345 The check for this occurs on startup.
1346 If <filename>TMPDIR</filename> is detected on an NFS mount,
1347 an error occurs.
1348 </para>
1349 </section>
1350
1351 <section id='migration-1.6-variable-changes-PRINC'>
1352 <title><filename>PRINC</filename></title>
1353
1354 <para>
1355 The <filename>PRINC</filename>
1356 variable has been deprecated and triggers a warning if
1357 detected during a build.
1358 For
1359 <link linkend='var-PR'><filename>PR</filename></link>
1360 increments on changes, use the PR service instead.
1361 You can find out more about this service in the
1362 "<ulink url='&YOCTO_DOCS_DEV_URL;#working-with-a-pr-service'>Working With a PR Service</ulink>"
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001363 section in the Yocto Project Development Tasks Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001364 </para>
1365 </section>
1366
1367 <section id='migration-1.6-variable-changes-IMAGE_TYPES'>
1368 <title><filename>IMAGE_TYPES</filename></title>
1369
1370 <para>
1371 The "sum.jffs2" option for
1372 <link linkend='var-IMAGE_TYPES'><filename>IMAGE_TYPES</filename></link>
1373 has been replaced by the "jffs2.sum" option, which fits the
1374 processing order.
1375 </para>
1376 </section>
1377
1378 <section id='migration-1.6-variable-changes-COPY_LIC_MANIFEST'>
1379 <title><filename>COPY_LIC_MANIFEST</filename></title>
1380
1381 <para>
1382 The
1383 <link linkend='var-COPY_LIC_MANIFEST'><filename>COPY_LIC_MANIFEST</filename></link>
1384 variable must
1385 now be set to "1" rather than any value in order to enable
1386 it.
1387 </para>
1388 </section>
1389
1390 <section id='migration-1.6-variable-changes-COPY_LIC_DIRS'>
1391 <title><filename>COPY_LIC_DIRS</filename></title>
1392
1393 <para>
1394 The
1395 <link linkend='var-COPY_LIC_DIRS'><filename>COPY_LIC_DIRS</filename></link>
1396 variable must
1397 now be set to "1" rather than any value in order to enable
1398 it.
1399 </para>
1400 </section>
1401
1402 <section id='migration-1.6-variable-changes-PACKAGE_GROUP'>
1403 <title><filename>PACKAGE_GROUP</filename></title>
1404
1405 <para>
1406 The
1407 <link linkend='var-PACKAGE_GROUP'><filename>PACKAGE_GROUP</filename></link>
1408 variable has been renamed to
1409 <link linkend='var-FEATURE_PACKAGES'><filename>FEATURE_PACKAGES</filename></link>
1410 to more accurately reflect its purpose.
1411 You can still use <filename>PACKAGE_GROUP</filename> but
1412 the OpenEmbedded build system produces a warning message when
1413 it encounters the variable.
1414 </para>
1415 </section>
1416
1417 <section id='migration-1.6-variable-changes-variable-entry-behavior'>
1418 <title>Preprocess and Post Process Command Variable Behavior</title>
1419
1420 <para>
1421 The following variables now expect a semicolon separated
1422 list of functions to call and not arbitrary shell commands:
1423 <literallayout class='monospaced'>
1424 <link linkend='var-ROOTFS_PREPROCESS_COMMAND'>ROOTFS_PREPROCESS_COMMAND</link>
1425 <link linkend='var-ROOTFS_POSTPROCESS_COMMAND'>ROOTFS_POSTPROCESS_COMMAND</link>
1426 <link linkend='var-SDK_POSTPROCESS_COMMAND'>SDK_POSTPROCESS_COMMAND</link>
1427 <link linkend='var-POPULATE_SDK_POST_TARGET_COMMAND'>POPULATE_SDK_POST_TARGET_COMMAND</link>
1428 <link linkend='var-POPULATE_SDK_POST_HOST_COMMAND'>POPULATE_SDK_POST_HOST_COMMAND</link>
1429 <link linkend='var-IMAGE_POSTPROCESS_COMMAND'>IMAGE_POSTPROCESS_COMMAND</link>
1430 <link linkend='var-IMAGE_PREPROCESS_COMMAND'>IMAGE_PREPROCESS_COMMAND</link>
1431 <link linkend='var-ROOTFS_POSTUNINSTALL_COMMAND'>ROOTFS_POSTUNINSTALL_COMMAND</link>
1432 <link linkend='var-ROOTFS_POSTINSTALL_COMMAND'>ROOTFS_POSTINSTALL_COMMAND</link>
1433 </literallayout>
1434 For migration purposes, you can simply wrap shell commands in
1435 a shell function and then call the function.
1436 Here is an example:
1437 <literallayout class='monospaced'>
1438 my_postprocess_function() {
1439 echo "hello" > ${IMAGE_ROOTFS}/hello.txt
1440 }
1441 ROOTFS_POSTPROCESS_COMMAND += "my_postprocess_function; "
1442 </literallayout>
1443 </para>
1444 </section>
1445 </section>
1446
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001447 <section id='migration-1.6-package-test-ptest'>
1448 <title>Package Test (ptest)</title>
1449
1450 <para>
1451 Package Tests (ptest) are built but not installed by default.
1452 For information on using Package Tests, see the
Brad Bishop316dfdd2018-06-25 12:45:53 -04001453 "<ulink url='&YOCTO_DOCS_DEV_URL;#testing-packages-with-ptest'>Testing Packages with ptest</ulink>"
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001454 section in the Yocto Project Development Tasks Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001455 For information on the <filename>ptest</filename> class, see the
1456 "<link linkend='ref-classes-ptest'><filename>ptest.bbclass</filename></link>"
1457 section.
1458 </para>
1459 </section>
1460
1461 <section id='migration-1.6-build-changes'>
1462 <title>Build Changes</title>
1463
1464 <para>
1465 Separate build and source directories have been enabled
1466 by default for selected recipes where it is known to work
1467 (a whitelist) and for all recipes that inherit the
1468 <link linkend='ref-classes-cmake'><filename>cmake</filename></link>
1469 class.
1470 In future releases the
1471 <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
1472 class will enable a separate build directory by default as
1473 well.
1474 Recipes building Autotools-based
1475 software that fails to build with a separate build directory
1476 should be changed to inherit from the
Patrick Williamsf1e5d692016-03-30 15:21:19 -05001477 <link linkend='ref-classes-autotools'><filename>autotools-brokensep</filename></link>
1478 class instead of the <filename>autotools</filename> or
1479 <filename>autotools_stage</filename>classes.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001480 </para>
1481 </section>
1482
1483 <section id='migration-1.6-building-qemu-native'>
1484 <title><filename>qemu-native</filename></title>
1485
1486 <para>
1487 <filename>qemu-native</filename> now builds without
1488 SDL-based graphical output support by default.
1489 The following additional lines are needed in your
1490 <filename>local.conf</filename> to enable it:
1491 <literallayout class='monospaced'>
1492 PACKAGECONFIG_pn-qemu-native = "sdl"
1493 ASSUME_PROVIDED += "libsdl-native"
1494 </literallayout>
1495 <note>
1496 The default <filename>local.conf</filename>
1497 contains these statements.
1498 Consequently, if you are building a headless system and using
1499 a default <filename>local.conf</filename> file, you will need
1500 comment these two lines out.
1501 </note>
1502 </para>
1503 </section>
1504
1505 <section id='migration-1.6-core-image-basic'>
1506 <title><filename>core-image-basic</filename></title>
1507
1508 <para>
1509 <filename>core-image-basic</filename> has been renamed to
1510 <filename>core-image-full-cmdline</filename>.
1511 </para>
1512
1513 <para>
1514 In addition to <filename>core-image-basic</filename> being renamed,
1515 <filename>packagegroup-core-basic</filename> has been renamed to
1516 <filename>packagegroup-core-full-cmdline</filename> to match.
1517 </para>
1518 </section>
1519
1520 <section id='migration-1.6-licensing'>
1521 <title>Licensing</title>
1522
1523 <para>
1524 The top-level <filename>LICENSE</filename> file has been changed
1525 to better describe the license of the various components of
Brad Bishopd7bf8c12018-02-25 22:55:05 -05001526 <link linkend='oe-core'>OE-Core</link>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001527 However, the licensing itself remains unchanged.
1528 </para>
1529
1530 <para>
1531 Normally, this change would not cause any side-effects.
1532 However, some recipes point to this file within
1533 <link linkend='var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></link>
1534 (as <filename>${COREBASE}/LICENSE</filename>) and thus the
1535 accompanying checksum must be changed from
1536 3f40d7994397109285ec7b81fdeb3b58 to
1537 4d92cd373abda3937c2bc47fbc49d690.
1538 A better alternative is to have
1539 <filename>LIC_FILES_CHKSUM</filename> point to a file
1540 describing the license that is distributed with the source
1541 that the recipe is building, if possible, rather than pointing
1542 to <filename>${COREBASE}/LICENSE</filename>.
1543 </para>
1544 </section>
1545
1546 <section id='migration-1.6-cflags-options'>
1547 <title><filename>CFLAGS</filename> Options</title>
1548
1549 <para>
1550 The "-fpermissive" option has been removed from the default
1551 <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
1552 value.
1553 You need to take action on individual recipes that fail when
1554 building with this option.
1555 You need to either patch the recipes to fix the issues reported by
1556 the compiler, or you need to add "-fpermissive" to
1557 <filename>CFLAGS</filename> in the recipes.
1558 </para>
1559 </section>
1560
1561 <section id='migration-1.6-custom-images'>
1562 <title>Custom Image Output Types</title>
1563
1564 <para>
1565 Custom image output types, as selected using
1566 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>,
1567 must declare their dependencies on other image types (if any) using
1568 a new
1569 <link linkend='var-IMAGE_TYPEDEP'><filename>IMAGE_TYPEDEP</filename></link>
1570 variable.
1571 </para>
1572 </section>
1573
1574 <section id='migration-1.6-do-package-write-task'>
1575 <title>Tasks</title>
1576
1577 <para>
1578 The <filename>do_package_write</filename> task has been removed.
1579 The task is no longer needed.
1580 </para>
1581 </section>
1582
1583 <section id='migration-1.6-update-alternatives-provider'>
1584 <title><filename>update-alternative</filename> Provider</title>
1585
1586 <para>
1587 The default <filename>update-alternatives</filename> provider has
1588 been changed from <filename>opkg</filename> to
1589 <filename>opkg-utils</filename>.
1590 This change resolves some troublesome circular dependencies.
1591 The runtime package has also been renamed from
1592 <filename>update-alternatives-cworth</filename>
1593 to <filename>update-alternatives-opkg</filename>.
1594 </para>
1595 </section>
1596
1597 <section id='migration-1.6-virtclass-overrides'>
1598 <title><filename>virtclass</filename> Overrides</title>
1599
1600 <para>
1601 The <filename>virtclass</filename> overrides are now deprecated.
1602 Use the equivalent class overrides instead (e.g.
1603 <filename>virtclass-native</filename> becomes
1604 <filename>class-native</filename>.)
1605 </para>
1606 </section>
1607
1608 <section id='migration-1.6-removed-renamed-recipes'>
1609 <title>Removed and Renamed Recipes</title>
1610
1611 <para>
1612 The following recipes have been removed:
1613 <itemizedlist>
1614 <listitem><para><filename>packagegroup-toolset-native</filename> -
1615 This recipe is largely unused.
1616 </para></listitem>
1617 <listitem><para><filename>linux-yocto-3.8</filename> -
1618 Support for the Linux yocto 3.8 kernel has been dropped.
1619 Support for the 3.10 and 3.14 kernels have been added
1620 with the <filename>linux-yocto-3.10</filename> and
1621 <filename>linux-yocto-3.14</filename> recipes.
1622 </para></listitem>
1623 <listitem><para><filename>ocf-linux</filename> -
1624 This recipe has been functionally replaced using
1625 <filename>cryptodev-linux</filename>.
1626 </para></listitem>
1627 <listitem><para><filename>genext2fs</filename> -
1628 <filename>genext2fs</filename> is no longer used by the
1629 build system and is unmaintained upstream.
1630 </para></listitem>
1631 <listitem><para><filename>js</filename> -
1632 This provided an ancient version of Mozilla's javascript
1633 engine that is no longer needed.
1634 </para></listitem>
1635 <listitem><para><filename>zaurusd</filename> -
1636 The recipe has been moved to the
1637 <filename>meta-handheld</filename> layer.
1638 </para></listitem>
1639 <listitem><para><filename>eglibc 2.17</filename> -
1640 Replaced by the <filename>eglibc 2.19</filename>
1641 recipe.
1642 </para></listitem>
1643 <listitem><para><filename>gcc 4.7.2</filename> -
1644 Replaced by the now stable
1645 <filename>gcc 4.8.2</filename>.
1646 </para></listitem>
1647 <listitem><para><filename>external-sourcery-toolchain</filename> -
1648 this recipe is now maintained in the
1649 <filename>meta-sourcery</filename> layer.
1650 </para></listitem>
1651 <listitem><para><filename>linux-libc-headers-yocto 3.4+git</filename> -
1652 Now using version 3.10 of the
1653 <filename>linux-libc-headers</filename> by default.
1654 </para></listitem>
1655 <listitem><para><filename>meta-toolchain-gmae</filename> -
1656 This recipe is obsolete.
1657 </para></listitem>
1658 <listitem><para><filename>packagegroup-core-sdk-gmae</filename> -
1659 This recipe is obsolete.
1660 </para></listitem>
1661 <listitem><para><filename>packagegroup-core-standalone-gmae-sdk-target</filename> -
1662 This recipe is obsolete.
1663 </para></listitem>
1664 </itemizedlist>
1665 </para>
1666 </section>
1667
1668 <section id='migration-1.6-removed-classes'>
1669 <title>Removed Classes</title>
1670
1671 <para>
1672 The following classes have become obsolete and have been removed:
1673 <itemizedlist>
1674 <listitem><para><filename>module_strip</filename>
1675 </para></listitem>
1676 <listitem><para><filename>pkg_metainfo</filename>
1677 </para></listitem>
1678 <listitem><para><filename>pkg_distribute</filename>
1679 </para></listitem>
1680 <listitem><para><filename>image-empty</filename>
1681 </para></listitem>
1682 </itemizedlist>
1683 </para>
1684 </section>
1685
1686 <section id='migration-1.6-reference-bsps'>
1687 <title>Reference Board Support Packages (BSPs)</title>
1688
1689 <para>
1690 The following reference BSPs changes occurred:
1691 <itemizedlist>
1692 <listitem><para>The BeagleBoard
1693 (<filename>beagleboard</filename>) ARM reference hardware
1694 has been replaced by the BeagleBone
1695 (<filename>beaglebone</filename>) hardware.
1696 </para></listitem>
1697 <listitem><para>The RouterStation Pro
1698 (<filename>routerstationpro</filename>) MIPS reference
1699 hardware has been replaced by the EdgeRouter Lite
1700 (<filename>edgerouter</filename>) hardware.
1701 </para></listitem>
1702 </itemizedlist>
1703 The previous reference BSPs for the
1704 <filename>beagleboard</filename> and
1705 <filename>routerstationpro</filename> machines are still available
1706 in a new <filename>meta-yocto-bsp-old</filename> layer in the
1707 <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink>
1708 at
1709 <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/meta-yocto-bsp-old/'>http://git.yoctoproject.org/cgit/cgit.cgi/meta-yocto-bsp-old/</ulink>.
1710 </para>
1711 </section>
1712</section>
1713
1714<section id='moving-to-the-yocto-project-1.7-release'>
1715 <title>Moving to the Yocto Project 1.7 Release</title>
1716
1717 <para>
1718 This section provides migration information for moving to the
1719 Yocto Project 1.7 Release from the prior release.
1720 </para>
1721
1722 <section id='migration-1.7-changes-to-setting-qemu-packageconfig-options'>
1723 <title>Changes to Setting QEMU <filename>PACKAGECONFIG</filename> Options in <filename>local.conf</filename></title>
1724
1725 <para>
1726 The QEMU recipe now uses a number of
1727 <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
1728 options to enable various optional features.
1729 The method used to set defaults for these options means that
1730 existing
1731 <filename>local.conf</filename> files will need to be be
1732 modified to append to <filename>PACKAGECONFIG</filename> for
1733 <filename>qemu-native</filename> and
1734 <filename>nativesdk-qemu</filename> instead of setting it.
1735 In other words, to enable graphical output for QEMU, you should
1736 now have these lines in <filename>local.conf</filename>:
1737 <literallayout class='monospaced'>
1738 PACKAGECONFIG_append_pn-qemu-native = " sdl"
1739 PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
1740 </literallayout>
1741 </para>
1742 </section>
1743
1744 <section id='migration-1.7-minimum-git-version'>
1745 <title>Minimum Git version</title>
1746
1747 <para>
1748 The minimum
Brad Bishop316dfdd2018-06-25 12:45:53 -04001749 <ulink url='&YOCTO_DOCS_OM_URL;#git'>Git</ulink> version
1750 required on the build host is now 1.7.8 because the
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001751 <filename>--list</filename> option is now required by
1752 BitBake's Git fetcher.
1753 As always, if your host distribution does not provide a version of
1754 Git that meets this requirement, you can use the
1755 <filename>buildtools-tarball</filename> that does.
1756 See the
1757 "<link linkend='required-git-tar-and-python-versions'>Required Git, tar, and Python Versions</link>"
1758 section for more information.
1759 </para>
1760 </section>
1761
1762 <section id='migration-1.7-autotools-class-changes'>
1763 <title>Autotools Class Changes</title>
1764
1765 <para>
1766 The following
1767 <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
1768 class changes occurred:
1769 <itemizedlist>
1770 <listitem><para><emphasis>
1771 A separate build directory is now used by default:</emphasis>
1772 The <filename>autotools</filename> class has been changed
1773 to use a directory for building
1774 (<link linkend='var-B'><filename>B</filename></link>),
1775 which is separate from the source directory
1776 (<link linkend='var-S'><filename>S</filename></link>).
1777 This is commonly referred to as
1778 <filename>B != S</filename>, or an out-of-tree build.</para>
1779 <para>If the software being built is already capable of
1780 building in a directory separate from the source, you
1781 do not need to do anything.
1782 However, if the software is not capable of being built
1783 in this manner, you will
1784 need to either patch the software so that it can build
1785 separately, or you will need to change the recipe to
1786 inherit the
Patrick Williamsf1e5d692016-03-30 15:21:19 -05001787 <link linkend='ref-classes-autotools'><filename>autotools-brokensep</filename></link>
1788 class instead of the <filename>autotools</filename> or
1789 <filename>autotools_stage</filename> classes.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001790 </para></listitem>
1791 <listitem><para><emphasis>
1792 The <filename>--foreign</filename> option is
1793 no longer passed to <filename>automake</filename> when
1794 running <filename>autoconf</filename>:</emphasis>
1795 This option tells <filename>automake</filename> that a
1796 particular software package does not follow the GNU
1797 standards and therefore should not be expected
1798 to distribute certain files such as
1799 <filename>ChangeLog</filename>,
1800 <filename>AUTHORS</filename>, and so forth.
1801 Because the majority of upstream software packages already
1802 tell <filename>automake</filename> to enable foreign mode
1803 themselves, the option is mostly superfluous.
1804 However, some recipes will need patches for this change.
1805 You can easily make the change by patching
1806 <filename>configure.ac</filename> so that it passes
1807 "foreign" to <filename>AM_INIT_AUTOMAKE()</filename>.
1808 See
1809 <ulink url='http://cgit.openembedded.org/openembedded-core/commit/?id=01943188f85ce6411717fb5bf702d609f55813f2'>this commit</ulink>
1810 for an example showing how to make the patch.
1811 </para></listitem>
1812 </itemizedlist>
1813 </para>
1814 </section>
1815
1816 <section id='migration-1.7-binary-configuration-scripts-disabled'>
1817 <title>Binary Configuration Scripts Disabled</title>
1818
1819 <para>
1820 Some of the core recipes that package binary configuration scripts
1821 now disable the scripts due to the
1822 scripts previously requiring error-prone path substitution.
1823 Software that links against these libraries using these scripts
1824 should use the much more robust <filename>pkg-config</filename>
1825 instead.
1826 The list of recipes changed in this version (and their
1827 configuration scripts) is as follows:
1828 <literallayout class='monospaced'>
1829 directfb (directfb-config)
1830 freetype (freetype-config)
1831 gpgme (gpgme-config)
1832 libassuan (libassuan-config)
1833 libcroco (croco-6.0-config)
1834 libgcrypt (libgcrypt-config)
1835 libgpg-error (gpg-error-config)
1836 libksba (ksba-config)
1837 libpcap (pcap-config)
1838 libpcre (pcre-config)
1839 libpng (libpng-config, libpng16-config)
1840 libsdl (sdl-config)
1841 libusb-compat (libusb-config)
1842 libxml2 (xml2-config)
1843 libxslt (xslt-config)
1844 ncurses (ncurses-config)
1845 neon (neon-config)
1846 npth (npth-config)
1847 pth (pth-config)
1848 taglib (taglib-config)
1849 </literallayout>
1850 Additionally, support for <filename>pkg-config</filename> has been
1851 added to some recipes in the previous list in the rare cases
1852 where the upstream software package does not already provide
1853 it.
1854 </para>
1855 </section>
1856
1857 <section id='migration-1.7-glibc-replaces-eglibc'>
1858 <title><filename>eglibc 2.19</filename> Replaced with <filename>glibc 2.20</filename></title>
1859
1860 <para>
1861 Because <filename>eglibc</filename> and
1862 <filename>glibc</filename> were already fairly close, this
1863 replacement should not require any significant changes to other
1864 software that links to <filename>eglibc</filename>.
1865 However, there were a number of minor changes in
1866 <filename>glibc 2.20</filename> upstream that could require
1867 patching some software (e.g. the removal of the
1868 <filename>_BSD_SOURCE</filename> feature test macro).
1869 </para>
1870
1871 <para>
1872 <filename>glibc 2.20</filename> requires version 2.6.32 or greater
1873 of the Linux kernel.
1874 Thus, older kernels will no longer be usable in conjunction with it.
1875 </para>
1876
1877 <para>
1878 For full details on the changes in <filename>glibc 2.20</filename>,
1879 see the upstream release notes
1880 <ulink url='https://sourceware.org/ml/libc-alpha/2014-09/msg00088.html'>here</ulink>.
1881 </para>
1882 </section>
1883
1884 <section id='migration-1.7-kernel-module-autoloading'>
1885 <title>Kernel Module Autoloading</title>
1886
1887 <para>
1888 The
1889 <link linkend='var-module_autoload'><filename>module_autoload_*</filename></link>
1890 variable is now deprecated and a new
1891 <link linkend='var-KERNEL_MODULE_AUTOLOAD'><filename>KERNEL_MODULE_AUTOLOAD</filename></link>
1892 variable should be used instead.
1893 Also,
1894 <link linkend='var-module_conf'><filename>module_conf_*</filename></link>
1895 must now be used in conjunction with a new
1896 <link linkend='var-KERNEL_MODULE_PROBECONF'><filename>KERNEL_MODULE_PROBECONF</filename></link>
1897 variable.
1898 The new variables no longer require you to specify the module name
1899 as part of the variable name.
1900 This change not only simplifies usage but also allows the values
1901 of these variables to be appropriately incorporated into task
1902 signatures and thus trigger the appropriate tasks to re-execute
1903 when changed.
1904 You should replace any references to
1905 <filename>module_autoload_*</filename> with
1906 <filename>KERNEL_MODULE_AUTOLOAD</filename>, and add any modules
1907 for which <filename>module_conf_*</filename> is specified to
1908 <filename>KERNEL_MODULE_PROBECONF</filename>.
1909 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001910 </section>
1911
1912 <section id='migration-1.7-qa-check-changes'>
1913 <title>QA Check Changes</title>
1914
1915 <para>
1916 The following changes have occurred to the QA check process:
1917 <itemizedlist>
1918 <listitem><para>
1919 Additional QA checks <filename>file-rdeps</filename>
1920 and <filename>build-deps</filename> have been added in
1921 order to verify that file dependencies are satisfied
1922 (e.g. package contains a script requiring
1923 <filename>/bin/bash</filename>) and build-time dependencies
1924 are declared, respectively.
1925 For more information, please see the
1926 "<link linkend='ref-qa-checks'>QA Error and Warning Messages</link>"
1927 chapter.
1928 </para></listitem>
1929 <listitem><para>
1930 Package QA checks are now performed during a new
1931 <link linkend='ref-tasks-package_qa'><filename>do_package_qa</filename></link>
1932 task rather than being part of the
1933 <link linkend='ref-tasks-package'><filename>do_package</filename></link>
1934 task.
1935 This allows more parallel execution.
1936 This change is unlikely to be an issue except for highly
1937 customized recipes that disable packaging tasks themselves
1938 by marking them as <filename>noexec</filename>.
1939 For those packages, you will need to disable the
1940 <filename>do_package_qa</filename> task as well.
1941 </para></listitem>
1942 <listitem><para>
1943 Files being overwritten during the
1944 <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
1945 task now trigger an error instead of a warning.
1946 Recipes should not be overwriting files written to the
1947 sysroot by other recipes.
1948 If you have these types of recipes, you need to alter them
1949 so that they do not overwrite these files.</para>
1950 <para>You might now receive this error after changes in
1951 configuration or metadata resulting in orphaned files
1952 being left in the sysroot.
1953 If you do receive this error, the way to resolve the issue
1954 is to delete your
1955 <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
1956 or to move it out of the way and then re-start the build.
1957 Anything that has been fully built up to that point and
1958 does not need rebuilding will be restored from the shared
1959 state cache and the rest of the build will be able to
1960 proceed as normal.
1961 </para></listitem>
1962 </itemizedlist>
1963 </para>
1964 </section>
1965
1966 <section id='migration-1.7-removed-recipes'>
1967 <title>Removed Recipes</title>
1968
1969 <para>
1970 The following recipes have been removed:
1971 <itemizedlist>
1972 <listitem><para>
1973 <filename>x-load</filename>:
1974 This recipe has been superseded by
1975 U-boot SPL for all Cortex-based TI SoCs.
1976 For legacy boards, the <filename>meta-ti</filename>
1977 layer, which contains a maintained recipe, should be used
1978 instead.
1979 </para></listitem>
1980 <listitem><para>
1981 <filename>ubootchart</filename>:
1982 This recipe is obsolete.
1983 A <filename>bootchart2</filename> recipe has been added
1984 to functionally replace it.
1985 </para></listitem>
1986 <listitem><para>
1987 <filename>linux-yocto 3.4</filename>:
1988 Support for the linux-yocto 3.4 kernel has been dropped.
1989 Support for the 3.10 and 3.14 kernels remains, while
1990 support for version 3.17 has been added.
1991 </para></listitem>
1992 <listitem><para>
1993 <filename>eglibc</filename> has been removed in favor of
1994 <filename>glibc</filename>.
1995 See the
1996 "<link linkend='migration-1.7-glibc-replaces-eglibc'><filename>eglibc 2.19</filename> Replaced with <filename>glibc 2.20</filename></link>"
1997 section for more information.
1998 </para></listitem>
1999 </itemizedlist>
2000 </para>
2001 </section>
2002
2003 <section id='migration-1.7-miscellaneous-changes'>
2004 <title>Miscellaneous Changes</title>
2005
2006 <para>
2007 The following miscellaneous change occurred:
2008 <itemizedlist>
2009 <listitem><para>
2010 The build history feature now writes
2011 <filename>build-id.txt</filename> instead of
2012 <filename>build-id</filename>.
2013 Additionally, <filename>build-id.txt</filename>
2014 now contains the full build header as printed by
2015 BitBake upon starting the build.
2016 You should manually remove old "build-id" files from your
2017 existing build history repositories to avoid confusion.
2018 For information on the build history feature, see the
Brad Bishop316dfdd2018-06-25 12:45:53 -04002019 "<ulink url='&YOCTO_DOCS_DEV_URL;#maintaining-build-output-quality'>Maintaining Build Output Quality</ulink>"
2020 section in the Yocto Project Development Tasks Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002021 </para></listitem>
2022 </itemizedlist>
2023 </para>
2024 </section>
2025</section>
2026
2027<section id='moving-to-the-yocto-project-1.8-release'>
2028 <title>Moving to the Yocto Project 1.8 Release</title>
2029
2030 <para>
2031 This section provides migration information for moving to the
2032 Yocto Project 1.8 Release from the prior release.
2033 </para>
2034
2035 <section id='migration-1.8-removed-recipes'>
2036 <title>Removed Recipes</title>
2037
2038 <para>
2039 The following recipes have been removed:
2040 <itemizedlist>
2041 <listitem><para><filename>owl-video</filename>:
2042 Functionality replaced by <filename>gst-player</filename>.
2043 </para></listitem>
2044 <listitem><para><filename>gaku</filename>:
2045 Functionality replaced by <filename>gst-player</filename>.
2046 </para></listitem>
2047 <listitem><para><filename>gnome-desktop</filename>:
2048 This recipe is now available in
2049 <filename>meta-gnome</filename> and is no longer needed.
2050 </para></listitem>
2051 <listitem><para><filename>gsettings-desktop-schemas</filename>:
2052 This recipe is now available in
2053 <filename>meta-gnome</filename> and is no longer needed.
2054 </para></listitem>
2055 <listitem><para><filename>python-argparse</filename>:
2056 The <filename>argparse</filename> module is already
2057 provided in the default Python distribution in a
2058 package named <filename>python-argparse</filename>.
2059 Consequently, the separate
2060 <filename>python-argparse</filename> recipe is no
2061 longer needed.
2062 </para></listitem>
2063 <listitem><para><filename>telepathy-python, libtelepathy, telepathy-glib, telepathy-idle, telepathy-mission-control</filename>:
2064 All these recipes have moved to
2065 <filename>meta-oe</filename> and are consequently no
2066 longer needed by any recipes in OpenEmbedded-Core.
2067 </para></listitem>
2068 <listitem><para><filename>linux-yocto_3.10</filename> and <filename>linux-yocto_3.17</filename>:
2069 Support for the linux-yocto 3.10 and 3.17 kernels has been
2070 dropped.
2071 Support for the 3.14 kernel remains, while support for
2072 3.19 kernel has been added.
2073 </para></listitem>
2074 <listitem><para><filename>poky-feed-config-opkg</filename>:
2075 This recipe has become obsolete and is no longer needed.
2076 Use <filename>distro-feed-config</filename> from
2077 <filename>meta-oe</filename> instead.
2078 </para></listitem>
2079 <listitem><para><filename>libav 0.8.x</filename>:
2080 <filename>libav 9.x</filename> is now used.
2081 </para></listitem>
2082 <listitem><para><filename>sed-native</filename>:
2083 No longer needed.
2084 A working version of <filename>sed</filename> is expected
2085 to be provided by the host distribution.
2086 </para></listitem>
2087 </itemizedlist>
2088 </para>
2089 </section>
2090
2091 <section id='migration-1.8-bluez'>
2092 <title>BlueZ 4.x / 5.x Selection</title>
2093
2094 <para>
2095 Proper built-in support for selecting BlueZ 5.x in preference
2096 to the default of 4.x now exists.
2097 To use BlueZ 5.x, simply add "bluez5" to your
2098 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
2099 value.
2100 If you had previously added append files
2101 (<filename>*.bbappend</filename>) to make this selection, you can
2102 now remove them.
2103 </para>
2104
2105 <para>
Brad Bishop64c979e2019-11-04 13:55:29 -05002106 Additionally, a <filename>bluetooth</filename> class has been added
2107 to make selection of the appropriate bluetooth support within a
2108 recipe a little easier.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002109 If you wish to make use of this class in a recipe, add something
2110 such as the following:
2111 <literallayout class='monospaced'>
2112 inherit bluetooth
2113 PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '${BLUEZ}', '', d)}
2114 PACKAGECONFIG[bluez4] = "--enable-bluetooth,--disable-bluetooth,bluez4"
2115 PACKAGECONFIG[bluez5] = "--enable-bluez5,--disable-bluez5,bluez5"
2116 </literallayout>
2117 </para>
2118 </section>
2119
2120 <section id='migration-1.8-kernel-build-changes'>
2121 <title>Kernel Build Changes</title>
2122
2123 <para>
2124 The kernel build process was changed to place the source
2125 in a common shared work area and to place build artifacts
2126 separately in the source code tree.
2127 In theory, migration paths have been provided for most common
2128 usages in kernel recipes but this might not work in all cases.
2129 In particular, users need to ensure that
2130 <filename>${S}</filename> (source files) and
2131 <filename>${B}</filename> (build artifacts) are used
2132 correctly in functions such as
2133 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
2134 and
2135 <link linkend='ref-tasks-install'><filename>do_install</filename></link>.
2136 For kernel recipes that do not inherit from
2137 <filename>kernel-yocto</filename> or include
2138 <filename>linux-yocto.inc</filename>, you might wish to
2139 refer to the <filename>linux.inc</filename> file in the
2140 <filename>meta-oe</filename> layer for the kinds of changes you
2141 need to make.
2142 For reference, here is the
2143 <ulink url='http://cgit.openembedded.org/meta-openembedded/commit/meta-oe/recipes-kernel/linux/linux.inc?id=fc7132ede27ac67669448d3d2845ce7d46c6a1ee'>commit</ulink>
2144 where the <filename>linux.inc</filename> file in
2145 <filename>meta-oe</filename> was updated.
2146 </para>
2147
2148 <para>
2149 Recipes that rely on the kernel source code and do not inherit
2150 the module classes might need to add explicit dependencies on
2151 the <filename>do_shared_workdir</filename> kernel task, for example:
2152 <literallayout class='monospaced'>
2153 do_configure[depends] += "virtual/kernel:do_shared_workdir"
2154 </literallayout>
2155 </para>
2156 </section>
2157
2158 <section id='migration-1.8-ssl'>
2159 <title>SSL 3.0 is Now Disabled in OpenSSL</title>
2160
2161 <para>
2162 SSL 3.0 is now disabled when building OpenSSL.
2163 Disabling SSL 3.0 avoids any lingering instances of the POODLE
2164 vulnerability.
2165 If you feel you must re-enable SSL 3.0, then you can add an
2166 append file (<filename>*.bbappend</filename>) for the
2167 <filename>openssl</filename> recipe to remove "-no-ssl3"
2168 from
2169 <link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>.
2170 </para>
2171 </section>
2172
2173 <section id='migration-1.8-default-sysroot-poisoning'>
2174 <title>Default Sysroot Poisoning</title>
2175
2176 <para>
2177 <filename>gcc's</filename> default sysroot and include directories
2178 are now "poisoned".
2179 In other words, the sysroot and include directories are being
2180 redirected to a non-existent location in order to catch when
2181 host directories are being used due to the correct options not
2182 being passed.
2183 This poisoning applies both to the cross-compiler used within the
2184 build and to the cross-compiler produced in the SDK.
2185 </para>
2186
2187 <para>
2188 If this change causes something in the build to fail, it almost
2189 certainly means the various compiler flags and commands are not
2190 being passed correctly to the underlying piece of software.
2191 In such cases, you need to take corrective steps.
2192 </para>
2193 </section>
2194
2195 <section id='migration-1.8-rebuild-improvements'>
2196 <title>Rebuild Improvements</title>
2197
2198 <para>
2199 Changes have been made to the
2200 <link linkend='ref-classes-base'><filename>base</filename></link>,
2201 <link linkend='ref-classes-autotools'><filename>autotools</filename></link>,
2202 and
2203 <link linkend='ref-classes-cmake'><filename>cmake</filename></link>
2204 classes to clean out generated files when the
2205 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
2206 task needs to be re-executed.
2207 </para>
2208
2209 <para>
2210 One of the improvements is to attempt to run "make clean" during
2211 the <filename>do_configure</filename> task if a
2212 <filename>Makefile</filename> exists.
2213 Some software packages do not provide a working clean target
2214 within their make files.
2215 If you have such recipes, you need to set
2216 <link linkend='var-CLEANBROKEN'><filename>CLEANBROKEN</filename></link>
2217 to "1" within the recipe, for example:
2218 <literallayout class='monospaced'>
2219 CLEANBROKEN = "1"
2220 </literallayout>
2221 </para>
2222 </section>
2223
2224 <section id='migration-1.8-qa-check-and-validation-changes'>
2225 <title>QA Check and Validation Changes</title>
2226
2227 <para>
2228 The following QA Check and Validation Changes have occurred:
2229 <itemizedlist>
2230 <listitem><para>
2231 Usage of <filename>PRINC</filename>
2232 previously triggered a warning.
2233 It now triggers an error.
2234 You should remove any remaining usage of
2235 <filename>PRINC</filename> in any recipe or append file.
2236 </para></listitem>
2237 <listitem><para>
2238 An additional QA check has been added to detect usage of
2239 <filename>${D}</filename> in
2240 <link linkend='var-FILES'><filename>FILES</filename></link>
2241 values where
2242 <link linkend='var-D'><filename>D</filename></link> values
2243 should not be used at all.
2244 The same check ensures that <filename>$D</filename> is used
2245 in
2246 <filename>pkg_preinst/pkg_postinst/pkg_prerm/pkg_postrm</filename>
2247 functions instead of <filename>${D}</filename>.
2248 </para></listitem>
2249 <listitem><para>
2250 <link linkend='var-S'><filename>S</filename></link> now
2251 needs to be set to a valid value within a recipe.
2252 If <filename>S</filename> is not set in the recipe, the
2253 directory is not automatically created.
2254 If <filename>S</filename> does not point to a directory
2255 that exists at the time the
2256 <link linkend='ref-tasks-unpack'><filename>do_unpack</filename></link>
2257 task finishes, a warning will be shown.
2258 </para></listitem>
2259 <listitem><para>
2260 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
2261 is now validated for correct formatting of multiple
2262 licenses.
2263 If the format is invalid (e.g. multiple licenses are
2264 specified with no operators to specify how the multiple
2265 licenses interact), then a warning will be shown.
2266 </para></listitem>
2267 </itemizedlist>
2268 </para>
2269 </section>
2270
2271 <section id='migration-1.8-miscellaneous-changes'>
2272 <title>Miscellaneous Changes</title>
2273
2274 <para>
2275 The following miscellaneous changes have occurred:
2276 <itemizedlist>
2277 <listitem><para>
2278 The <filename>send-error-report</filename> script now
2279 expects a "-s" option to be specified before the server
2280 address.
2281 This assumes a server address is being specified.
2282 </para></listitem>
2283 <listitem><para>
2284 The <filename>oe-pkgdata-util</filename> script now
2285 expects a "-p" option to be specified before the
2286 <filename>pkgdata</filename> directory, which is now
2287 optional.
2288 If the <filename>pkgdata</filename> directory is not
2289 specified, the script will run BitBake to query
2290 <link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>
2291 from the build environment.
2292 </para></listitem>
2293 </itemizedlist>
2294 </para>
2295 </section>
2296</section>
2297
Patrick Williamsf1e5d692016-03-30 15:21:19 -05002298<section id='moving-to-the-yocto-project-2.0-release'>
2299 <title>Moving to the Yocto Project 2.0 Release</title>
2300
2301 <para>
2302 This section provides migration information for moving to the
2303 Yocto Project 2.0 Release from the prior release.
2304 </para>
2305
2306 <section id='migration-2.0-gcc-5'>
2307 <title>GCC 5</title>
2308
2309 <para>
2310 The default compiler is now GCC 5.2.
2311 This change has required fixes for compilation errors in a number
2312 of other recipes.
2313 </para>
2314
2315 <para>
2316 One important example is a fix for when the Linux kernel freezes at
2317 boot time on ARM when built with GCC 5.
2318 If you are using your own kernel recipe or source tree and
2319 building for ARM, you will likely need to apply this
2320 <ulink url='https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=a077224fd35b2f7fbc93f14cf67074fc792fbac2'>patch</ulink>.
2321 The standard <filename>linux-yocto</filename> kernel source tree
2322 already has a workaround for the same issue.
2323 </para>
2324
2325 <para>
2326 For further details, see
2327 <ulink url='https://gcc.gnu.org/gcc-5/changes.html'></ulink> and
2328 the porting guide at
2329 <ulink url='https://gcc.gnu.org/gcc-5/porting_to.html'></ulink>.
2330 </para>
2331
2332 <para>
2333 Alternatively, you can switch back to GCC 4.9 or 4.8 by
2334 setting <filename>GCCVERSION</filename> in your configuration,
2335 as follows:
2336 <literallayout class='monospaced'>
2337 GCCVERSION = "4.9%"
2338 </literallayout>
2339 </para>
2340 </section>
2341
2342 <section id='migration-2.0-Gstreamer-0.10-removed'>
2343 <title>Gstreamer 0.10 Removed</title>
2344
2345 <para>
2346 Gstreamer 0.10 has been removed in favor of Gstreamer 1.x.
2347 As part of the change, recipes for Gstreamer 0.10 and related
2348 software are now located
2349 in <filename>meta-multimedia</filename>.
2350 This change results in Qt4 having Phonon and Gstreamer
2351 support in QtWebkit disabled by default.
2352 </para>
2353 </section>
2354
2355 <section id='migration-2.0-removed-recipes'>
2356 <title>Removed Recipes</title>
2357
2358 <para>
2359 The following recipes have been moved or removed:
2360 <itemizedlist>
2361 <listitem><para>
2362 <filename>bluez4</filename>: The recipe is obsolete and
2363 has been moved due to <filename>bluez5</filename>
2364 becoming fully integrated.
2365 The <filename>bluez4</filename> recipe now resides in
2366 <filename>meta-oe</filename>.
2367 </para></listitem>
2368 <listitem><para>
2369 <filename>gamin</filename>: The recipe is obsolete and
2370 has been removed.
2371 </para></listitem>
2372 <listitem><para>
2373 <filename>gnome-icon-theme</filename>: The recipe's
2374 functionally has been replaced by
2375 <filename>adwaita-icon-theme</filename>.
2376 </para></listitem>
2377 <listitem><para>
2378 Gstreamer 0.10 Recipes: Recipes for Gstreamer 0.10 have
2379 been removed in favor of the recipes for Gstreamer 1.x.
2380 </para></listitem>
2381 <listitem><para>
2382 <filename>insserv</filename>: The recipe is obsolete and
2383 has been removed.
2384 </para></listitem>
2385 <listitem><para>
2386 <filename>libunique</filename>: The recipe is no longer
2387 used and has been moved to <filename>meta-oe</filename>.
2388 </para></listitem>
2389 <listitem><para>
2390 <filename>midori</filename>: The recipe's functionally
2391 has been replaced by <filename>epiphany</filename>.
2392 </para></listitem>
2393 <listitem><para>
2394 <filename>python-gst</filename>: The recipe is obsolete
2395 and has been removed since it only contains bindings for
2396 Gstreamer 0.10.
2397 </para></listitem>
2398 <listitem><para>
2399 <filename>qt-mobility</filename>: The recipe is obsolete and
2400 has been removed since it requires
2401 <filename>Gstreamer 0.10</filename>, which has been
2402 replaced.
2403 </para></listitem>
2404 <listitem><para>
2405 <filename>subversion</filename>: All 1.6.x versions of this
2406 recipe have been removed.
2407 </para></listitem>
2408 <listitem><para>
2409 <filename>webkit-gtk</filename>: The older 1.8.3 version
2410 of this recipe has been removed in favor of
2411 <filename>webkitgtk</filename>.
2412 </para></listitem>
2413 </itemizedlist>
2414 </para>
2415 </section>
2416
2417 <section id='migration-2.0-bitbake-datastore-improvements'>
2418 <title>BitBake datastore improvements</title>
2419
2420 <para>
2421 The method by which BitBake's datastore handles overrides has
2422 changed.
2423 Overrides are now applied dynamically and
2424 <filename>bb.data.update_data()</filename> is now a no-op.
2425 Thus, <filename>bb.data.update_data()</filename> is no longer
2426 required in order to apply the correct overrides.
2427 In practice, this change is unlikely to require any changes to
2428 Metadata.
2429 However, these minor changes in behavior exist:
2430 <itemizedlist>
2431 <listitem><para>
2432 All potential overrides are now visible in the variable
2433 history as seen when you run the following:
2434 <literallayout class='monospaced'>
2435 $ bitbake -e
2436 </literallayout>
2437 </para></listitem>
2438 <listitem><para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002439 <filename>d.delVar('</filename><replaceable>VARNAME</replaceable><filename>')</filename> and
2440 <filename>d.setVar('</filename><replaceable>VARNAME</replaceable><filename>', None)</filename>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002441 result in the variable and all of its overrides being
2442 cleared out.
Patrick Williamsf1e5d692016-03-30 15:21:19 -05002443 Before the change, only the non-overridden values
2444 were cleared.
2445 </para></listitem>
2446 </itemizedlist>
2447 </para>
2448 </section>
2449
2450 <section id='migration-2.0-shell-message-function-changes'>
2451 <title>Shell Message Function Changes</title>
2452
2453 <para>
2454 The shell versions of the BitBake message functions (i.e.
2455 <filename>bbdebug</filename>, <filename>bbnote</filename>,
2456 <filename>bbwarn</filename>, <filename>bbplain</filename>,
2457 <filename>bberror</filename>, and <filename>bbfatal</filename>)
2458 are now connected through to their BitBake equivalents
2459 <filename>bb.debug()</filename>, <filename>bb.note()</filename>,
2460 <filename>bb.warn()</filename>, <filename>bb.plain()</filename>,
2461 <filename>bb.error()</filename>, and
2462 <filename>bb.fatal()</filename>, respectively.
2463 Thus, those message functions that you would expect to be printed
2464 by the BitBake UI are now actually printed.
2465 In practice, this change means two things:
2466 <itemizedlist>
2467 <listitem><para>
2468 If you now see messages on the console that you did not
2469 previously see as a result of this change, you might
2470 need to clean up the calls to
2471 <filename>bbwarn</filename>, <filename>bberror</filename>,
2472 and so forth.
2473 Or, you might want to simply remove the calls.
2474 </para></listitem>
2475 <listitem><para>
2476 The <filename>bbfatal</filename> message function now
2477 suppresses the full error log in the UI, which means any
2478 calls to <filename>bbfatal</filename> where you still
2479 wish to see the full error log should be replaced by
2480 <filename>die</filename> or
2481 <filename>bbfatal_log</filename>.
2482 </para></listitem>
2483 </itemizedlist>
2484 </para>
2485 </section>
2486
2487 <section id='migration-2.0-extra-development-debug-package-cleanup'>
2488 <title>Extra Development/Debug Package Cleanup</title>
2489
2490 <para>
2491 The following recipes have had extra
2492 <filename>dev/dbg</filename> packages removed:
2493 <itemizedlist>
2494 <listitem><para>
2495 <filename>acl</filename>
2496 </para></listitem>
2497 <listitem><para>
2498 <filename>apmd</filename>
2499 </para></listitem>
2500 <listitem><para>
2501 <filename>aspell</filename>
2502 </para></listitem>
2503 <listitem><para>
2504 <filename>attr</filename>
2505 </para></listitem>
2506 <listitem><para>
2507 <filename>augeas</filename>
2508 </para></listitem>
2509 <listitem><para>
2510 <filename>bzip2</filename>
2511 </para></listitem>
2512 <listitem><para>
2513 <filename>cogl</filename>
2514 </para></listitem>
2515 <listitem><para>
2516 <filename>curl</filename>
2517 </para></listitem>
2518 <listitem><para>
2519 <filename>elfutils</filename>
2520 </para></listitem>
2521 <listitem><para>
2522 <filename>gcc-target</filename>
2523 </para></listitem>
2524 <listitem><para>
2525 <filename>libgcc</filename>
2526 </para></listitem>
2527 <listitem><para>
2528 <filename>libtool</filename>
2529 </para></listitem>
2530 <listitem><para>
2531 <filename>libxmu</filename>
2532 </para></listitem>
2533 <listitem><para>
2534 <filename>opkg</filename>
2535 </para></listitem>
2536 <listitem><para>
2537 <filename>pciutils</filename>
2538 </para></listitem>
2539 <listitem><para>
2540 <filename>rpm</filename>
2541 </para></listitem>
2542 <listitem><para>
2543 <filename>sysfsutils</filename>
2544 </para></listitem>
2545 <listitem><para>
2546 <filename>tiff</filename>
2547 </para></listitem>
2548 <listitem><para>
2549 <filename>xz</filename>
2550 </para></listitem>
2551 </itemizedlist>
2552 All of the above recipes now conform to the standard packaging
2553 scheme where a single <filename>-dev</filename>,
2554 <filename>-dbg</filename>, and <filename>-staticdev</filename>
2555 package exists per recipe.
2556 </para>
2557 </section>
2558
2559 <section id='migration-2.0-recipe-maintenance-tracking-data-moved-to-oe-core'>
2560 <title>Recipe Maintenance Tracking Data Moved to OE-Core</title>
2561
2562 <para>
2563 Maintenance tracking data for recipes that was previously part
Brad Bishopd7bf8c12018-02-25 22:55:05 -05002564 of <filename>meta-yocto</filename> has been moved to
2565 <link linkend='oe-core'>OE-Core</link>.
Patrick Williamsf1e5d692016-03-30 15:21:19 -05002566 The change includes <filename>package_regex.inc</filename> and
2567 <filename>distro_alias.inc</filename>, which are typically enabled
Brad Bishop15ae2502019-06-18 21:44:24 -04002568 when using the <filename>distrodata</filename> class.
Patrick Williamsf1e5d692016-03-30 15:21:19 -05002569 Additionally, the contents of
2570 <filename>upstream_tracking.inc</filename> has now been split out
2571 to the relevant recipes.
2572 </para>
2573 </section>
2574
2575 <section id='migration-2.0-automatic-stale-sysroot-file-cleanup'>
2576 <title>Automatic Stale Sysroot File Cleanup</title>
2577
2578 <para>
2579 Stale files from recipes that no longer exist in the current
2580 configuration are now automatically removed from
2581 sysroot as well as removed from
2582 any other place managed by shared state.
2583 This automatic cleanup means that the build system now properly
2584 handles situations such as renaming the build system side of
2585 recipes, removal of layers from
2586 <filename>bblayers.conf</filename>, and
2587 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
2588 changes.
2589 </para>
2590
2591 <para>
2592 Additionally, work directories for old versions of recipes are
2593 now pruned.
2594 If you wish to disable pruning old work directories, you can set
2595 the following variable in your configuration:
2596 <literallayout class='monospaced'>
2597 SSTATE_PRUNE_OBSOLETEWORKDIR = "0"
2598 </literallayout>
2599 </para>
2600 </section>
2601
2602 <section id='migration-2.0-linux-yocto-kernel-metadata-repository-now-split-from-source'>
2603 <title><filename>linux-yocto</filename> Kernel Metadata Repository Now Split from Source</title>
2604
2605 <para>
2606 The <filename>linux-yocto</filename> tree has up to now been a
2607 combined set of kernel changes and configuration (meta) data
2608 carried in a single tree.
2609 While this format is effective at keeping kernel configuration and
2610 source modifications synchronized, it is not always obvious to
2611 developers how to manipulate the Metadata as compared to the
2612 source.
2613 </para>
2614
2615 <para>
2616 Metadata processing has now been removed from the
2617 <link linkend='ref-classes-kernel-yocto'><filename>kernel-yocto</filename></link>
2618 class and the external Metadata repository
2619 <filename>yocto-kernel-cache</filename>, which has always been used
2620 to seed the <filename>linux-yocto</filename> "meta" branch.
2621 This separate <filename>linux-yocto</filename> cache repository
2622 is now the primary location for this data.
2623 Due to this change, <filename>linux-yocto</filename> is no longer
2624 able to process combined trees.
2625 Thus, if you need to have your own combined kernel repository,
2626 you must do the split there as well and update your recipes
2627 accordingly.
2628 See the <filename>meta/recipes-kernel/linux/linux-yocto_4.1.bb</filename>
2629 recipe for an example.
2630 </para>
2631 </section>
2632
2633 <section id='migration-2.0-additional-qa-checks'>
2634 <title>Additional QA checks</title>
2635
2636 <para>
2637 The following QA checks have been added:
2638 <itemizedlist>
2639 <listitem><para>
2640 Added a "host-user-contaminated" check for ownership
2641 issues for packaged files outside of
2642 <filename>/home</filename>.
2643 The check looks for files that are incorrectly owned by the
2644 user that ran BitBake instead of owned by a valid user in
2645 the target system.
2646 </para></listitem>
2647 <listitem><para>
2648 Added an "invalid-chars" check for invalid (non-UTF8)
2649 characters in recipe metadata variable values
2650 (i.e.
2651 <link linkend='var-DESCRIPTION'><filename>DESCRIPTION</filename></link>,
2652 <link linkend='var-SUMMARY'><filename>SUMMARY</filename></link>,
2653 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>,
2654 and
2655 <link linkend='var-SECTION'><filename>SECTION</filename></link>).
2656 Some package managers do not support these characters.
2657 </para></listitem>
2658 <listitem><para>
2659 Added an "invalid-packageconfig" check for any options
2660 specified in
2661 <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
2662 that do not match any <filename>PACKAGECONFIG</filename>
2663 option defined for the recipe.
2664 </para></listitem>
2665 </itemizedlist>
2666 </para>
2667 </section>
2668
2669 <section id='migration-2.0-miscellaneous'>
2670 <title>Miscellaneous Changes</title>
2671
2672 <para>
2673 These additional changes exist:
2674 <itemizedlist>
2675 <listitem><para>
2676 <filename>gtk-update-icon-cache</filename> has been
2677 renamed to <filename>gtk-icon-utils</filename>.
2678 </para></listitem>
2679 <listitem><para>
2680 The <filename>tools-profile</filename>
2681 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
2682 item as well as its corresponding packagegroup and
2683 <filename>packagegroup-core-tools-profile</filename> no
2684 longer bring in <filename>oprofile</filename>.
2685 Bringing in <filename>oprofile</filename> was originally
2686 added to aid compilation on resource-constrained
2687 targets.
2688 However, this aid has not been widely used and is not
2689 likely to be used going forward due to the more powerful
2690 target platforms and the existence of better
2691 cross-compilation tools.
2692 </para></listitem>
2693 <listitem><para>
2694 The
2695 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
2696 variable's default value now specifies
2697 <filename>ext4</filename> instead of
2698 <filename>ext3</filename>.
2699 </para></listitem>
2700 <listitem><para>
2701 All support for the <filename>PRINC</filename>
2702 variable has been removed.
2703 </para></listitem>
2704 <listitem><para>
2705 The <filename>packagegroup-core-full-cmdline</filename>
2706 packagegroup no longer brings in
2707 <filename>lighttpd</filename> due to the fact that
2708 bringing in <filename>lighttpd</filename> is not really in
2709 line with the packagegroup's purpose, which is to add full
2710 versions of command-line tools that by default are
2711 provided by <filename>busybox</filename>.
2712 </para></listitem>
2713 </itemizedlist>
2714 </para>
2715 </section>
2716</section>
2717
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002718<section id='moving-to-the-yocto-project-2.1-release'>
2719 <title>Moving to the Yocto Project 2.1 Release</title>
2720
2721 <para>
2722 This section provides migration information for moving to the
2723 Yocto Project 2.1 Release from the prior release.
2724 </para>
2725
2726 <section id='migration-2.1-variable-expansion-in-python-functions'>
2727 <title>Variable Expansion in Python Functions</title>
2728
2729 <para>
2730 Variable expressions, such as
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002731 <filename>${</filename><replaceable>VARNAME</replaceable><filename>}</filename>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002732 no longer expand automatically within Python functions.
2733 Suppressing expansion was done to allow Python functions to
2734 construct shell scripts or other code for situations in which you
2735 do not want such expressions expanded.
2736 For any existing code that relies on these expansions, you need to
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002737 change the expansions to expand the value of individual
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002738 variables through <filename>d.getVar()</filename>.
2739 To alternatively expand more complex expressions,
2740 use <filename>d.expand()</filename>.
2741 </para>
2742 </section>
2743
2744 <section id='migration-2.1-overrides-must-now-be-lower-case'>
2745 <title>Overrides Must Now be Lower-Case</title>
2746
2747 <para>
2748 The convention for overrides has always been for them to be
2749 lower-case characters.
2750 This practice is now a requirement as BitBake's datastore now
2751 assumes lower-case characters in order to give a slight performance
2752 boost during parsing.
2753 In practical terms, this requirement means that anything that ends
2754 up in
2755 <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
2756 must now appear in lower-case characters (e.g. values for
2757 <filename>MACHINE</filename>, <filename>TARGET_ARCH</filename>,
2758 <filename>DISTRO</filename>, and also recipe names if
2759 <filename>_pn-</filename><replaceable>recipename</replaceable>
2760 overrides are to be effective).
2761 </para>
2762 </section>
2763
2764 <section id='migration-2.1-expand-parameter-to-getvar-and-getvarflag-now-mandatory'>
2765 <title>Expand Parameter to <filename>getVar()</filename> and
2766 <filename>getVarFlag()</filename> is Now Mandatory</title>
2767
2768 <para>
2769 The expand parameter to <filename>getVar()</filename> and
2770 <filename>getVarFlag()</filename> previously defaulted to
2771 False if not specified.
2772 Now, however, no default exists so one must be specified.
2773 You must change any <filename>getVar()</filename> calls that
2774 do not specify the final expand parameter to calls that do specify
2775 the parameter.
2776 You can run the following <filename>sed</filename> command at the
2777 base of a layer to make this change:
2778 <literallayout class='monospaced'>
2779 sed -e 's:\(\.getVar([^,()]*\)):\1, False):g' -i `grep -ril getVar *`
2780 sed -e 's:\(\.getVarFlag([^,()]*, [^,()]*\)):\1, False):g' -i `grep -ril getVarFlag *`
2781 </literallayout>
2782 <note>
2783 The reason for this change is that it prepares the way for
2784 changing the default to True in a future Yocto Project release.
2785 This future change is a much more sensible default than False.
2786 However, the change needs to be made gradually as a sudden
2787 change of the default would potentially cause side-effects
2788 that would be difficult to detect.
2789 </note>
2790 </para>
2791 </section>
2792
2793 <section id='migration-2.1-makefile-environment-changes'>
2794 <title>Makefile Environment Changes</title>
2795
2796 <para>
2797 <link linkend='var-EXTRA_OEMAKE'><filename>EXTRA_OEMAKE</filename></link>
2798 now defaults to "" instead of "-e MAKEFLAGS=".
2799 Setting <filename>EXTRA_OEMAKE</filename> to "-e MAKEFLAGS=" by
2800 default was a historical accident that has required many classes
2801 (e.g. <filename>autotools</filename>, <filename>module</filename>)
2802 and recipes to override this default in order to work with
2803 sensible build systems.
2804 When upgrading to the release, you must edit any recipe that
2805 relies upon this old default by either setting
2806 <filename>EXTRA_OEMAKE</filename> back to "-e MAKEFLAGS=" or by
2807 explicitly setting any required variable value overrides using
2808 <filename>EXTRA_OEMAKE</filename>, which is typically only needed
2809 when a Makefile sets a default value for a variable that is
2810 inappropriate for cross-compilation using the "=" operator rather
2811 than the "?=" operator.
2812 </para>
2813 </section>
2814
2815 <section id='migration-2.1-libexecdir-reverted-to-prefix-libexec'>
2816 <title><filename>libexecdir</filename> Reverted to <filename>${prefix}/libexec</filename></title>
2817
2818 <para>
2819 The use of <filename>${libdir}/${BPN}</filename> as
2820 <filename>libexecdir</filename> is different as compared to all
2821 other mainstream distributions, which either uses
2822 <filename>${prefix}/libexec</filename> or
2823 <filename>${libdir}</filename>.
2824 The use is also contrary to the GNU Coding Standards
2825 (i.e. <ulink url='https://www.gnu.org/prep/standards/html_node/Directory-Variables.html'></ulink>)
2826 that suggest <filename>${prefix}/libexec</filename> and also
2827 notes that any package-specific nesting should be done by the
2828 package itself.
2829 Finally, having <filename>libexecdir</filename> change between
2830 recipes makes it very difficult for different recipes to invoke
2831 binaries that have been installed into
2832 <filename>libexecdir</filename>.
2833 The Filesystem Hierarchy Standard
2834 (i.e. <ulink url='http://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04s07.html'></ulink>)
2835 now recognizes the use of <filename>${prefix}/libexec/</filename>,
2836 giving distributions the choice between
2837 <filename>${prefix}/lib</filename> or
2838 <filename>${prefix}/libexec</filename> without breaking FHS.
2839 </para>
2840 </section>
2841
2842 <section id='migration-2.1-ac-cv-sizeof-off-t-no-longer-cached-in-site-files'>
2843 <title><filename>ac_cv_sizeof_off_t</filename> is No Longer Cached in Site Files</title>
2844
2845 <para>
2846 For recipes inheriting the
2847 <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
2848 class, <filename>ac_cv_sizeof_off_t</filename> is no longer cached
2849 in the site files for <filename>autoconf</filename>.
2850 The reason for this change is because the
2851 <filename>ac_cv_sizeof_off_t</filename> value is not necessarily
2852 static per architecture as was previously assumed.
2853 Rather, the value changes based on whether large file support is
2854 enabled.
2855 For most software that uses <filename>autoconf</filename>, this
2856 change should not be a problem.
2857 However, if you have a recipe that bypasses the standard
2858 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
2859 task from the <filename>autotools</filename> class and the software
2860 the recipe is building uses a very old version of
2861 <filename>autoconf</filename>, the recipe might be incapable of
2862 determining the correct size of <filename>off_t</filename> during
2863 <filename>do_configure</filename>.
2864 </para>
2865
2866 <para>
2867 The best course of action is to patch the software as necessary
2868 to allow the default implementation from the
2869 <filename>autotools</filename> class to work such that
2870 <filename>autoreconf</filename> succeeds and produces a working
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002871 configure script, and to remove the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002872 overridden <filename>do_configure</filename> task such that the
2873 default implementation does get used.
2874 </para>
2875 </section>
2876
2877 <section id='migration-2.1-image-generation-split-out-from-filesystem-generation'>
2878 <title>Image Generation is Now Split Out from Filesystem Generation</title>
2879
2880 <para>
2881 Previously, for image recipes the
2882 <link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>
2883 task assembled the filesystem and then from that filesystem
2884 generated images.
2885 With this Yocto Project release, image generation is split into
2886 separate
2887 <link linkend='ref-tasks-image'><filename>do_image_*</filename></link>
2888 tasks for clarity both in operation and in the code.
2889 </para>
2890
2891 <para>
2892 For most cases, this change does not present any problems.
2893 However, if you have made customizations that directly modify the
2894 <filename>do_rootfs</filename> task or that mention
2895 <filename>do_rootfs</filename>, you might need to update those
2896 changes.
2897 In particular, if you had added any tasks after
2898 <filename>do_rootfs</filename>, you should make edits so that
2899 those tasks are after the
2900 <link linkend='ref-tasks-image-complete'><filename>do_image_complete</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002901 task rather than after <filename>do_rootfs</filename>
2902 so that the your added tasks
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002903 run at the correct time.
2904 </para>
2905
2906 <para>
2907 A minor part of this restructuring is that the post-processing
2908 definitions and functions have been moved from the
2909 <link linkend='ref-classes-image'><filename>image</filename></link>
2910 class to the
2911 <link linkend='ref-classes-rootfs*'><filename>rootfs-postcommands</filename></link>
2912 class.
2913 Functionally, however, they remain unchanged.
2914 </para>
2915 </section>
2916
2917 <section id='migration-2.1-removed-recipes'>
2918 <title>Removed Recipes</title>
2919
2920 <para>
2921 The following recipes have been removed in the 2.1 release:
2922 <itemizedlist>
2923 <listitem><para><filename>gcc</filename> version 4.8:
2924 Versions 4.9 and 5.3 remain.
2925 </para></listitem>
2926 <listitem><para><filename>qt4</filename>:
2927 All support for Qt 4.x has been moved out to a separate
2928 <filename>meta-qt4</filename> layer because Qt 4 is no
2929 longer supported upstream.
2930 </para></listitem>
2931 <listitem><para><filename>x11vnc</filename>:
2932 Moved to the <filename>meta-oe</filename> layer.
2933 </para></listitem>
2934 <listitem><para><filename>linux-yocto-3.14</filename>:
2935 No longer supported.
2936 </para></listitem>
2937 <listitem><para><filename>linux-yocto-3.19</filename>:
2938 No longer supported.
2939 </para></listitem>
2940 <listitem><para><filename>libjpeg</filename>:
2941 Replaced by the <filename>libjpeg-turbo</filename> recipe.
2942 </para></listitem>
2943 <listitem><para><filename>pth</filename>:
2944 Became obsolete.
2945 </para></listitem>
2946 <listitem><para><filename>liboil</filename>:
2947 Recipe is no longer needed and has been moved to the
2948 <filename>meta-multimedia</filename> layer.
2949 </para></listitem>
2950 <listitem><para><filename>gtk-theme-torturer</filename>:
2951 Recipe is no longer needed and has been moved to the
2952 <filename>meta-gnome</filename> layer.
2953 </para></listitem>
2954 <listitem><para><filename>gnome-mime-data</filename>:
2955 Recipe is no longer needed and has been moved to the
2956 <filename>meta-gnome</filename> layer.
2957 </para></listitem>
2958 <listitem><para><filename>udev</filename>:
2959 Replaced by the <filename>eudev</filename> recipe for
2960 compatibility when using <filename>sysvinit</filename>
2961 with newer kernels.
2962 </para></listitem>
2963 <listitem><para><filename>python-pygtk</filename>:
2964 Recipe became obsolete.
2965 </para></listitem>
2966 <listitem><para><filename>adt-installer</filename>:
2967 Recipe became obsolete.
2968 See the
2969 "<link linkend='migration-2.1-adt-removed'>ADT Removed</link>"
2970 section for more information.
2971 </para></listitem>
2972 </itemizedlist>
2973 </para>
2974 </section>
2975
2976 <section id='migration-2.1-class-changes'>
2977 <title>Class Changes</title>
2978
2979 <para>
2980 The following classes have changed:
2981 <itemizedlist>
2982 <listitem><para><filename>autotools_stage</filename>:
2983 Removed because the
2984 <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
2985 class now provides its functionality.
2986 Recipes that inherited from
2987 <filename>autotools_stage</filename> should now inherit
2988 from <filename>autotools</filename> instead.
2989 </para></listitem>
2990 <listitem><para><filename>boot-directdisk</filename>:
Brad Bishopd7bf8c12018-02-25 22:55:05 -05002991 Merged into the <filename>image-vm</filename>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002992 class.
2993 The <filename>boot-directdisk</filename> class was rarely
2994 directly used.
2995 Consequently, this change should not cause any issues.
2996 </para></listitem>
2997 <listitem><para><filename>bootimg</filename>:
2998 Merged into the
2999 <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
3000 class.
3001 The <filename>bootimg</filename> class was rarely
3002 directly used.
3003 Consequently, this change should not cause any issues.
3004 </para></listitem>
3005 <listitem><para><filename>packageinfo</filename>:
3006 Removed due to its limited use by the Hob UI, which has
3007 itself been removed.
3008 </para></listitem>
3009 </itemizedlist>
3010 </para>
3011 </section>
3012
3013 <section id='migration-2.1-build-system-ui-changes'>
3014 <title>Build System User Interface Changes</title>
3015
3016 <para>
3017 The following changes have been made to the build system user
3018 interface:
3019 <itemizedlist>
3020 <listitem><para><emphasis>Hob GTK+-based UI</emphasis>:
3021 Removed because it is unmaintained and based on the
3022 outdated GTK+ 2 library.
3023 The Toaster web-based UI is much more capable and is
3024 actively maintained.
3025 See the
3026 "<ulink url='&YOCTO_DOCS_TOAST_URL;#using-the-toaster-web-interface'>Using the Toaster Web Interface</ulink>"
Brad Bishop316dfdd2018-06-25 12:45:53 -04003027 section in the Toaster User Manual for more
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05003028 information on this interface.
3029 </para></listitem>
3030 <listitem><para><emphasis>"puccho" BitBake UI</emphasis>:
3031 Removed because is unmaintained and no longer useful.
3032 </para></listitem>
3033 </itemizedlist>
3034 </para>
3035 </section>
3036
3037 <section id='migration-2.1-adt-removed'>
3038 <title>ADT Removed</title>
3039
3040 <para>
3041 The Application Development Toolkit (ADT) has been removed
3042 because its functionality almost completely overlapped with the
3043 <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-using-the-standard-sdk'>standard SDK</ulink>
3044 and the
3045 <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-extensible'>extensible SDK</ulink>.
3046 For information on these SDKs and how to build and use them, see the
Brad Bishop316dfdd2018-06-25 12:45:53 -04003047 <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
3048 manual.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003049 <note>
3050 The Yocto Project Eclipse IDE Plug-in is still supported and
3051 is not affected by this change.
3052 </note>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05003053 </para>
3054 </section>
3055
3056 <section id='migration-2.1-poky-reference-distribution-changes'>
3057 <title>Poky Reference Distribution Changes</title>
3058
3059 <para>
3060 The following changes have been made for the Poky distribution:
3061 <itemizedlist>
3062 <listitem><para>
3063 The <filename>meta-yocto</filename> layer has been renamed
3064 to <filename>meta-poky</filename> to better match its
3065 purpose, which is to provide the Poky reference
3066 distribution.
3067 The <filename>meta-yocto-bsp</filename> layer retains its
3068 original name since it provides reference machines for
3069 the Yocto Project and it is otherwise unrelated to Poky.
3070 References to <filename>meta-yocto</filename> in your
3071 <filename>conf/bblayers.conf</filename> should
3072 automatically be updated, so you should not need to change
3073 anything unless you are relying on this naming elsewhere.
3074 </para></listitem>
3075 <listitem><para>
3076 The
3077 <link linkend='ref-classes-uninative'><filename>uninative</filename></link>
3078 class is now enabled by default in Poky.
3079 This class attempts to isolate the build system from the
3080 host distribution's C library and makes re-use of native
3081 shared state artifacts across different host distributions
3082 practical.
3083 With this class enabled, a tarball containing a pre-built
3084 C library is downloaded at the start of the build.</para>
3085
3086 <para>The <filename>uninative</filename> class is enabled
3087 through the
3088 <filename>meta/conf/distro/include/yocto-uninative.inc</filename>
3089 file, which for those not using the Poky distribution, can
3090 include to easily enable the same functionality.</para>
3091
3092 <para>Alternatively, if you wish to build your own
3093 <filename>uninative</filename> tarball, you can do so by
3094 building the <filename>uninative-tarball</filename> recipe,
3095 making it available to your build machines
3096 (e.g. over HTTP/HTTPS) and setting a similar configuration
3097 as the one set by <filename>yocto-uninative.inc</filename>.
3098 </para></listitem>
3099 <listitem><para>
3100 Static library generation, for most cases, is now disabled
3101 by default in the Poky distribution.
3102 Disabling this generation saves some build time as well
3103 as the size used for build output artifacts.</para>
3104
3105 <para>Disabling this library generation is accomplished
3106 through a
3107 <filename>meta/conf/distro/include/no-static-libs.inc</filename>,
3108 which for those not using the Poky distribution can
3109 easily include to enable the same functionality.</para>
3110
3111 <para>Any recipe that needs to opt-out of having the
3112 "--disable-static" option specified on the configure
3113 command line either because it is not a supported option
3114 for the configure script or because static libraries are
3115 needed should set the following variable:
3116 <literallayout class='monospaced'>
3117 DISABLE_STATIC = ""
3118 </literallayout>
3119 </para></listitem>
3120 <listitem><para>
3121 The separate <filename>poky-tiny</filename> distribution
3122 now uses the musl C library instead of a heavily pared
3123 down <filename>glibc</filename>.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003124 Using musl results in a smaller
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05003125 distribution and facilitates much greater maintainability
3126 because musl is designed to have a small footprint.</para>
3127
3128 <para>If you have used <filename>poky-tiny</filename> and
3129 have customized the <filename>glibc</filename>
3130 configuration you will need to redo those customizations
3131 with musl when upgrading to the new release.
3132 </para></listitem>
3133 </itemizedlist>
3134 </para>
3135 </section>
3136
3137 <section id='migration-2.1-packaging-changes'>
3138 <title>Packaging Changes</title>
3139
3140 <para>
3141 The following changes have been made to packaging:
3142 <itemizedlist>
3143 <listitem><para>
3144 The <filename>runuser</filename> and
3145 <filename>mountpoint</filename> binaries, which were
3146 previously in the main <filename>util-linux</filename>
3147 package, have been split out into the
3148 <filename>util-linux-runuser</filename> and
3149 <filename>util-linux-mountpoint</filename> packages,
3150 respectively.
3151 </para></listitem>
3152 <listitem><para>
3153 The <filename>python-elementtree</filename> package has
3154 been merged into the <filename>python-xml</filename>
3155 package.
3156 </para></listitem>
3157 </itemizedlist>
3158 </para>
3159 </section>
3160
3161 <section id='migration-2.1-tuning-file-changes'>
3162 <title>Tuning File Changes</title>
3163
3164 <para>
3165 The following changes have been made to the tuning files:
3166 <itemizedlist>
3167 <listitem><para>
3168 The "no-thumb-interwork" tuning feature has been dropped
3169 from the ARM tune include files.
3170 Because interworking is required for ARM EABI, attempting
3171 to disable it through a tuning feature no longer makes
3172 sense.
3173 <note>
3174 Support for ARM OABI was deprecated in gcc 4.7.
3175 </note>
3176 </para></listitem>
3177 <listitem><para>
3178 The <filename>tune-cortexm*.inc</filename> and
3179 <filename>tune-cortexr4.inc</filename> files have been
3180 removed because they are poorly tested.
3181 Until the OpenEmbedded build system officially gains
3182 support for CPUs without an MMU, these tuning files would
3183 probably be better maintained in a separate layer
3184 if needed.
3185 </para></listitem>
3186 </itemizedlist>
3187 </para>
3188 </section>
3189
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003190 <section id='migration-2.1-supporting-gobject-introspection'>
3191 <title>Supporting GObject Introspection</title>
3192
3193 <para>
3194 This release supports generation of GLib Introspective
3195 Repository (GIR) files through GObject introspection, which is
3196 the standard mechanism for accessing GObject-based software from
3197 runtime environments.
3198 You can enable, disable, and test the generation of this data.
3199 See the
3200 "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-gobject-introspection-support'>Enabling GObject Introspection Support</ulink>"
Brad Bishopd7bf8c12018-02-25 22:55:05 -05003201 section in the Yocto Project Development Tasks Manual
3202 for more information.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003203 </para>
3204 </section>
3205
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05003206 <section id='migration-2.1-miscellaneous-changes'>
3207 <title>Miscellaneous Changes</title>
3208
3209 <para>
3210 These additional changes exist:
3211 <itemizedlist>
3212 <listitem><para>
3213 The minimum Git version has been increased to 1.8.3.1.
3214 If your host distribution does not provide a sufficiently
3215 recent version, you can install the buildtools, which
3216 will provide it.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003217 See the
3218 "<link linkend='required-git-tar-and-python-versions'>Required Git, tar, and Python Versions</link>"
3219 section for more information on the buildtools tarball.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05003220 </para></listitem>
3221 <listitem><para>
3222 The buggy and incomplete support for the RPM version 4
3223 package manager has been removed.
3224 The well-tested and maintained support for RPM version 5
3225 remains.
3226 </para></listitem>
3227 <listitem><para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003228 Previously, the following list of packages were removed
3229 if package-management was not in
3230 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>,
3231 regardless of any dependencies:
3232 <literallayout class='monospaced'>
3233 update-rc.d
3234 base-passwd
3235 shadow
3236 update-alternatives
3237 run-postinsts
3238 </literallayout>
3239 With the Yocto Project 2.1 release, these packages are only
3240 removed if "read-only-rootfs" is in
3241 <filename>IMAGE_FEATURES</filename>, since they might
3242 still be needed for a read-write image even in the absence
3243 of a package manager (e.g. if users need to be added,
3244 modified, or removed at runtime).
3245 </para></listitem>
3246 <listitem><para>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05003247 The
3248 <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-devtool-use-devtool-modify-to-modify-the-source-of-an-existing-component'><filename>devtool modify</filename></ulink>
3249 command now defaults to extracting the source since that
3250 is most commonly expected.
3251 The "-x" or "--extract" options are now no-ops.
3252 If you wish to provide your own existing source tree, you
3253 will now need to specify either the "-n" or
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003254 "--no-extract" options when running
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05003255 <filename>devtool modify</filename>.
3256 </para></listitem>
3257 <listitem><para>
3258 If the formfactor for a machine is either not supplied
3259 or does not specify whether a keyboard is attached, then
3260 the default is to assume a keyboard is attached rather
3261 than assume no keyboard.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003262 This change primarily affects the Sato UI.
3263 </para></listitem>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05003264 <listitem><para>
3265 The <filename>.debug</filename> directory packaging is
3266 now automatic.
3267 If your recipe builds software that installs binaries into
3268 directories other than the standard ones, you no longer
3269 need to take care of setting
3270 <filename>FILES_${PN}-dbg</filename> to pick up the
3271 resulting <filename>.debug</filename> directories as these
3272 directories are automatically found and added.
3273 </para></listitem>
3274 <listitem><para>
3275 Inaccurate disk and CPU percentage data has been dropped
3276 from <filename>buildstats</filename> output.
3277 This data has been replaced with
3278 <filename>getrusage()</filename> data and corrected IO
3279 statistics.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003280 You will probably need to update any custom code that reads
3281 the <filename>buildstats</filename> data.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05003282 </para></listitem>
3283 <listitem><para>
3284 The
3285 <filename>meta/conf/distro/include/package_regex.inc</filename>
3286 is now deprecated.
3287 The contents of this file have been moved to individual
3288 recipes.
3289 <note><title>Tip</title>
3290 Because this file will likely be removed in a future
3291 Yocto Project release, it is suggested that you remove
3292 any references to the file that might be in your
3293 configuration.
3294 </note>
3295 </para></listitem>
3296 <listitem><para>
3297 The <filename>v86d/uvesafb</filename> has been removed from
3298 the <filename>genericx86</filename> and
3299 <filename>genericx86-64</filename> reference machines,
3300 which are provided by the
3301 <filename>meta-yocto-bsp</filename> layer.
3302 Most modern x86 boards do not rely on this file and it only
3303 adds kernel error messages during startup.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003304 If you do still need to support
3305 <filename>uvesafb</filename>, you can
3306 simply add <filename>v86d</filename> to your image.
3307 </para></listitem>
3308 <listitem><para>
3309 Build sysroot paths are now removed from debug symbol
3310 files.
3311 Removing these paths means that remote GDB using an
3312 unstripped build system sysroot will no longer work
3313 (although this was never documented to work).
3314 The supported method to accomplish something similar is
3315 to set <filename>IMAGE_GEN_DEBUGFS</filename> to "1",
3316 which will generate a companion debug image
3317 containing unstripped binaries and associated debug
3318 sources alongside the image.
3319 </para></listitem>
3320 </itemizedlist>
3321 </para>
3322 </section>
3323</section>
3324
3325<section id='moving-to-the-yocto-project-2.2-release'>
3326 <title>Moving to the Yocto Project 2.2 Release</title>
3327
3328 <para>
3329 This section provides migration information for moving to the
3330 Yocto Project 2.2 Release from the prior release.
3331 </para>
3332
3333 <section id='migration-2.2-minimum-kernel-version'>
3334 <title>Minimum Kernel Version</title>
3335
3336 <para>
3337 The minimum kernel version for the target system and for SDK
3338 is now 3.2.0, due to the upgrade
3339 to <filename>glibc 2.24</filename>.
3340 Specifically, for AArch64-based targets the version is
3341 3.14.
3342 For Nios II-based targets, the minimum kernel version is 3.19.
3343 <note>
3344 For x86 and x86_64, you can reset
3345 <link linkend='var-OLDEST_KERNEL'><filename>OLDEST_KERNEL</filename></link>
3346 to anything down to 2.6.32 if desired.
3347 </note>
3348 </para>
3349 </section>
3350
3351 <section id='migration-2.2-staging-directories-in-sysroot-simplified'>
3352 <title>Staging Directories in Sysroot Has Been Simplified</title>
3353
3354 <para>
3355 The way directories are staged in sysroot has been simplified and
3356 introduces the new
3357 <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>,
3358 <link linkend='var-SYSROOT_DIRS_NATIVE'><filename>SYSROOT_DIRS_NATIVE</filename></link>,
3359 and
3360 <link linkend='var-SYSROOT_DIRS_BLACKLIST'><filename>SYSROOT_DIRS_BLACKLIST</filename></link>.
3361 See the
3362 <ulink url='http://lists.openembedded.org/pipermail/openembedded-core/2016-May/121365.html'>v2 patch series on the OE-Core Mailing List</ulink>
3363 for additional information.
3364 </para>
3365 </section>
3366
3367 <section id='migration-2.2-removal-of-old-images-from-tmp-deploy-now-enabled'>
3368 <title>Removal of Old Images and Other Files in <filename>tmp/deploy</filename> Now Enabled</title>
3369
3370 <para>
3371 Removal of old images and other files in
3372 <filename>tmp/deploy/</filename> is now enabled by default due
3373 to a new staging method used for those files.
3374 As a result of this change, the
3375 <filename>RM_OLD_IMAGE</filename> variable is now redundant.
3376 </para>
3377 </section>
3378
3379 <section id='migration-2.2-python-changes'>
3380 <title>Python Changes</title>
3381
3382 <para>
3383 The following changes for Python occurred:
3384 </para>
3385
3386 <section id='migration-2.2-bitbake-now-requires-python-3.4'>
3387 <title>BitBake Now Requires Python 3.4+</title>
3388
3389 <para>
3390 BitBake requires Python 3.4 or greater.
3391 </para>
3392 </section>
3393
3394 <section id='migration-2.2-utf-8-locale-required-on-build-host'>
3395 <title>UTF-8 Locale Required on Build Host</title>
3396
3397 <para>
3398 A UTF-8 locale is required on the build host due to Python 3.
3399 Since C.UTF-8 is not a standard, the default is en_US.UTF-8.
3400 </para>
3401 </section>
3402
3403 <section id='migration-2.2-metadata-now-must-use-python-3-syntax'>
3404 <title>Metadata Must Now Use Python 3 Syntax</title>
3405
3406 <para>
3407 The metadata is now required to use Python 3 syntax.
3408 For help preparing metadata, see any of the many Python 3 porting
3409 guides available.
3410 Alternatively, you can reference the conversion commits for Bitbake
Brad Bishopd7bf8c12018-02-25 22:55:05 -05003411 and you can use
3412 <link linkend='oe-core'>OE-Core</link> as a guide for changes.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003413 Following are particular areas of interest:
3414 <literallayout class='monospaced'>
3415 * subprocess command-line pipes needing locale decoding
3416 * the syntax for octal values changed
3417 * the <filename>iter*()</filename> functions changed name
3418 * iterators now return views, not lists
3419 * changed names for Python modules
3420 </literallayout>
3421 </para>
3422 </section>
3423
3424 <section id='migration-2.2-target-python-recipes-switched-to-python-3'>
3425 <title>Target Python Recipes Switched to Python 3</title>
3426
3427 <para>
3428 Most target Python recipes have now been switched to Python 3.
3429 Unfortunately, systems using RPM as a package manager and
3430 providing online package-manager support through SMART still
3431 require Python 2.
3432 <note>
3433 Python 2 and recipes that use it can still be built for the
3434 target as with previous versions.
3435 </note>
3436 </para>
3437 </section>
3438
3439 <section id='migration-2.2-buildtools-tarball-includes-python-3'>
3440 <title><filename>buildtools-tarball</filename> Includes Python 3</title>
3441
3442 <para>
3443 <filename>buildtools-tarball</filename> now includes Python 3.
3444 </para>
3445 </section>
3446 </section>
3447
3448 <section id='migration-2.2-uclibc-replaced-by-musl'>
3449 <title>uClibc Replaced by musl</title>
3450
3451 <para>
3452 uClibc has been removed in favor of musl.
3453 Musl has matured, is better maintained, and is compatible with a
3454 wider range of applications as compared to uClibc.
3455 </para>
3456 </section>
3457
3458 <section id='migration-2.2-B-no-longer-default-working-directory-for-tasks'>
3459 <title><filename>${B}</filename> No Longer Default Working Directory for Tasks</title>
3460
3461 <para>
3462 <filename>${</filename><link linkend='var-B'><filename>B</filename></link><filename>}</filename>
3463 is no longer the default working directory for tasks.
3464 Consequently, any custom tasks you define now need to either
3465 have the
3466 <filename>[</filename><ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'><filename>dirs</filename></ulink><filename>]</filename> flag set, or the task needs to change into the
3467 appropriate working directory manually (e.g using
3468 <filename>cd</filename> for a shell task).
3469 <note>
3470 The preferred method is to use the
3471 <filename>[dirs]</filename> flag.
3472 </note>
3473 </para>
3474 </section>
3475
3476 <section id='migration-2.2-runqemu-ported-to-python'>
3477 <title><filename>runqemu</filename> Ported to Python</title>
3478
3479 <para>
3480 <filename>runqemu</filename> has been ported to Python and has
3481 changed behavior in some cases.
Brad Bishop37a0e4d2017-12-04 01:01:44 -05003482 Previous usage patterns continue to be supported.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003483 </para>
3484
3485 <para>
3486 The new <filename>runqemu</filename> is a Python script.
3487 Machine knowledge is no longer hardcoded into
3488 <filename>runqemu</filename>.
3489 You can choose to use the <filename>qemuboot</filename>
3490 configuration file to define the BSP's own arguments and to make
3491 it bootable with <filename>runqemu</filename>.
3492 If you use a configuration file, use the following form:
3493 <literallayout class='monospaced'>
3494 <replaceable>image-name</replaceable>-<replaceable>machine</replaceable>.qemuboot.conf
3495 </literallayout>
3496 The configuration file enables fine-grained tuning of options
3497 passed to QEMU without the <filename>runqemu</filename> script
3498 hard-coding any knowledge about different machines.
3499 Using a configuration file is particularly convenient when trying
3500 to use QEMU with machines other than the
Brad Bishopd7bf8c12018-02-25 22:55:05 -05003501 <filename>qemu*</filename> machines in
3502 <link linkend='oe-core'>OE-Core</link>.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003503 The <filename>qemuboot.conf</filename> file is generated by the
3504 <filename>qemuboot</filename>
3505 class when the root filesystem is being build (i.e.
3506 build rootfs).
3507 QEMU boot arguments can be set in BSP's configuration file and
3508 the <filename>qemuboot</filename> class will save them to
3509 <filename>qemuboot.conf</filename>.
3510 </para>
3511
3512
3513 <para>
3514 If you want to use <filename>runqemu</filename> without a
3515 configuration file, use the following command form:
3516 <literallayout class='monospaced'>
3517 $ runqemu <replaceable>machine</replaceable> <replaceable>rootfs</replaceable> <replaceable>kernel</replaceable> [<replaceable>options</replaceable>]
3518 </literallayout>
3519 Supported <replaceable>machines</replaceable> are as follows:
3520 <literallayout class='monospaced'>
3521 qemuarm
3522 qemuarm64
3523 qemux86
3524 qemux86-64
3525 qemuppc
3526 qemumips
3527 qemumips64
3528 qemumipsel
3529 qemumips64el
3530 </literallayout>
3531 Consider the following example, which uses the
3532 <filename>qemux86-64</filename> machine,
3533 provides a root filesystem, provides an image, and uses
3534 the <filename>nographic</filename> option:
3535 <literallayout class='monospaced'>
3536$ runqemu qemux86-64 tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.ext4 tmp/deploy/images/qemux86-64/bzImage nographic
3537 </literallayout>
3538 </para>
3539
3540 <para>
3541 Following is a list of variables that can be set in configuration
3542 files such as <filename>bsp.conf</filename> to enable the BSP
3543 to be booted by <filename>runqemu</filename>:
3544 <note>
3545 "QB" means "QEMU Boot".
3546 </note>
3547 <literallayout class='monospaced'>
3548 QB_SYSTEM_NAME: QEMU name (e.g. "qemu-system-i386")
3549 QB_OPT_APPEND: Options to append to QEMU (e.g. "-show-cursor")
3550 QB_DEFAULT_KERNEL: Default kernel to boot (e.g. "bzImage")
3551 QB_DEFAULT_FSTYPE: Default FSTYPE to boot (e.g. "ext4")
3552 QB_MEM: Memory (e.g. "-m 512")
3553 QB_MACHINE: QEMU machine (e.g. "-machine virt")
3554 QB_CPU: QEMU cpu (e.g. "-cpu qemu32")
3555 QB_CPU_KVM: Similar to QB_CPU except used for kvm support (e.g. "-cpu kvm64")
3556 QB_KERNEL_CMDLINE_APPEND: Options to append to the kernel's -append
3557 option (e.g. "console=ttyS0 console=tty")
3558 QB_DTB: QEMU dtb name
3559 QB_AUDIO_DRV: QEMU audio driver (e.g. "alsa", set it when support audio)
3560 QB_AUDIO_OPT: QEMU audio option (e.g. "-soundhw ac97,es1370"), which is used
3561 when QB_AUDIO_DRV is set.
3562 QB_KERNEL_ROOT: Kernel's root (e.g. /dev/vda)
3563 QB_TAP_OPT: Network option for 'tap' mode (e.g.
3564 "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no -device virtio-net-device,netdev=net0").
3565 runqemu will replace "@TAP@" with the one that is used, such as tap0, tap1 ...
3566 QB_SLIRP_OPT: Network option for SLIRP mode (e.g. "-netdev user,id=net0 -device virtio-net-device,netdev=net0")
3567 QB_ROOTFS_OPT: Used as rootfs (e.g.
3568 "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0").
3569 runqemu will replace "@ROOTFS@" with the one which is used, such as
3570 core-image-minimal-qemuarm64.ext4.
3571 QB_SERIAL_OPT: Serial port (e.g. "-serial mon:stdio")
3572 QB_TCPSERIAL_OPT: tcp serial port option (e.g.
3573 " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
3574 runqemu will replace "@PORT@" with the port number which is used.
3575 </literallayout>
3576 </para>
3577
3578 <para>
3579 To use <filename>runqemu</filename>, set
3580 <link linkend='var-IMAGE_CLASSES'><filename>IMAGE_CLASSES</filename></link>
3581 as follows and run <filename>runqemu</filename>:
3582 <note>
3583 For command-line syntax, use
3584 <filename>runqemu help</filename>.
3585 </note>
3586 <literallayout class='monospaced'>
3587 IMAGE_CLASSES += "qemuboot"
3588 </literallayout>
3589 </para>
3590 </section>
3591
3592 <section id='migration-2.2-default-linker-hash-style-changed'>
3593 <title>Default Linker Hash Style Changed</title>
3594
3595 <para>
3596 The default linker hash style for <filename>gcc-cross</filename>
3597 is now "sysv" in order to catch recipes that are building software
3598 without using the OpenEmbedded
3599 <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>.
3600 This change could result in seeing some "No GNU_HASH in the elf
3601 binary" QA issues when building such recipes.
3602 You need to fix these recipes so that they use the expected
3603 <filename>LDFLAGS</filename>.
3604 Depending on how the software is built, the build system used by
3605 the software (e.g. a Makefile) might need to be patched.
3606 However, sometimes making this fix is as simple as adding the
3607 following to the recipe:
3608 <literallayout class='monospaced'>
3609 TARGET_CC_ARCH += "${LDFLAGS}"
3610 </literallayout>
3611 </para>
3612 </section>
3613
Brad Bishop37a0e4d2017-12-04 01:01:44 -05003614 <section id='migration-2.2-kernel-image-base-name-no-longer-uses-kernel-imagetype'>
3615 <title><filename>KERNEL_IMAGE_BASE_NAME</filename> no Longer Uses <filename>KERNEL_IMAGETYPE</filename></title>
3616
3617 <para>
3618 The
Brad Bishop1a4b7ee2018-12-16 17:11:34 -08003619 <filename>KERNEL_IMAGE_BASE_NAME</filename>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05003620 variable no longer uses the
3621 <link linkend='var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></link>
3622 variable to create the image's base name.
3623 Because the OpenEmbedded build system can now build multiple kernel
3624 image types, this part of the kernel image base name as been
3625 removed leaving only the following:
3626 <literallayout class='monospaced'>
3627 KERNEL_IMAGE_BASE_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}
3628 </literallayout>
3629 If you have recipes or classes that use
3630 <filename>KERNEL_IMAGE_BASE_NAME</filename> directly, you might
3631 need to update the references to ensure they continue to work.
3632 </para>
3633 </section>
3634
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003635 <section id='migration-2.2-bitbake-changes'>
3636 <title>BitBake Changes</title>
3637
3638 <para>
3639 The following changes took place for BitBake:
3640 <itemizedlist>
3641 <listitem><para>
3642 The "goggle" UI and standalone image-writer tool have
3643 been removed as they both require GTK+ 2.0 and
3644 were not being maintained.
3645 </para></listitem>
3646 <listitem><para>
3647 The Perforce fetcher now supports
3648 <link linkend='var-SRCREV'><filename>SRCREV</filename></link>
3649 for specifying the source revision to use, be it
3650 <filename>${</filename><link linkend='var-AUTOREV'><filename>AUTOREV</filename></link><filename>}</filename>,
3651 changelist number, p4date, or label, in preference to
3652 separate
3653 <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
3654 parameters to specify these.
3655 This change is more in-line with how the other fetchers
3656 work for source control systems.
3657 Recipes that fetch from Perforce will need to be updated
3658 to use <filename>SRCREV</filename> in place of specifying
3659 the source revision within
3660 <filename>SRC_URI</filename>.
3661 </para></listitem>
3662 <listitem><para>
3663 Some of BitBake's internal code structures for accessing
3664 the recipe cache needed to be changed to support the new
3665 multi-configuration functionality.
3666 These changes will affect external tools that use BitBake's
3667 tinfoil module.
3668 For information on these changes, see the changes made to
3669 the scripts supplied with OpenEmbedded-Core:
3670 <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=189371f8393971d00bca0fceffd67cc07784f6ee'>1</ulink>
3671 and
3672 <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=4a5aa7ea4d07c2c90a1654b174873abb018acc67'>2</ulink>.
3673 </para></listitem>
3674 <listitem><para>
3675 The task management code has been rewritten to avoid using
3676 ID indirection in order to improve performance.
3677 This change is unlikely to cause any problems for most
3678 users.
3679 However, the setscene verification function as pointed to
3680 by <filename>BB_SETSCENE_VERIFY_FUNCTION</filename>
3681 needed to change signature.
3682 Consequently, a new variable named
Brad Bishop6e60e8b2018-02-01 10:27:11 -05003683 <filename>BB_SETSCENE_VERIFY_FUNCTION2</filename>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003684 has been added allowing multiple versions of BitBake
3685 to work with suitably written metadata, which includes
3686 OpenEmbedded-Core and Poky.
3687 Anyone with custom BitBake task scheduler code might also
3688 need to update the code to handle the new structure.
3689 </para></listitem>
3690 </itemizedlist>
3691 </para>
3692 </section>
3693
3694 <section id='migration-2.2-swabber-has-been-removed'>
3695 <title>Swabber has Been Removed</title>
3696
3697 <para>
3698 Swabber, a tool that was intended to detect host contamination in
3699 the build process, has been removed, as it has been unmaintained
3700 and unused for some time and was never particularly effective.
3701 The OpenEmbedded build system has since incorporated a number of
3702 mechanisms including enhanced QA checks that mean that there is
3703 less of a need for such a tool.
3704 </para>
3705 </section>
3706
3707 <section id='migration-2.2-removed-recipes'>
3708 <title>Removed Recipes</title>
3709
3710 <para>
3711 The following recipes have been removed:
3712 <itemizedlist>
3713 <listitem><para>
3714 <filename>augeas</filename>:
3715 No longer needed and has been moved to
3716 <filename>meta-oe</filename>.
3717 </para></listitem>
3718 <listitem><para>
3719 <filename>directfb</filename>:
3720 Unmaintained and has been moved to
3721 <filename>meta-oe</filename>.
3722 </para></listitem>
3723 <listitem><para>
3724 <filename>gcc</filename>:
3725 Removed 4.9 version.
3726 Versions 5.4 and 6.2 are still present.
3727 </para></listitem>
3728 <listitem><para>
3729 <filename>gnome-doc-utils</filename>:
3730 No longer needed.
3731 </para></listitem>
3732 <listitem><para>
3733 <filename>gtk-doc-stub</filename>:
3734 Replaced by <filename>gtk-doc</filename>.
3735 </para></listitem>
3736 <listitem><para>
3737 <filename>gtk-engines</filename>:
3738 No longer needed and has been moved to
3739 <filename>meta-gnome</filename>.
3740 </para></listitem>
3741 <listitem><para>
3742 <filename>gtk-sato-engine</filename>:
3743 Became obsolete.
3744 </para></listitem>
3745 <listitem><para>
3746 <filename>libglade</filename>:
3747 No longer needed and has been moved to
3748 <filename>meta-oe</filename>.
3749 </para></listitem>
3750 <listitem><para>
3751 <filename>libmad</filename>:
3752 Unmaintained and functionally replaced by
3753 <filename>libmpg123</filename>.
3754 <filename>libmad</filename> has been moved to
3755 <filename>meta-oe</filename>.
3756 </para></listitem>
3757 <listitem><para>
3758 <filename>libowl</filename>:
3759 Became obsolete.
3760 </para></listitem>
3761 <listitem><para>
3762 <filename>libxsettings-client</filename>:
3763 No longer needed.
3764 </para></listitem>
3765 <listitem><para>
3766 <filename>oh-puzzles</filename>:
3767 Functionally replaced by
3768 <filename>puzzles</filename>.
3769 </para></listitem>
3770 <listitem><para>
3771 <filename>oprofileui</filename>:
3772 Became obsolete.
3773 OProfile has been largely supplanted by perf.
3774 </para></listitem>
3775 <listitem><para>
3776 <filename>packagegroup-core-directfb.bb</filename>:
3777 Removed.
3778 </para></listitem>
3779 <listitem><para>
3780 <filename>core-image-directfb.bb</filename>:
3781 Removed.
3782 </para></listitem>
3783 <listitem><para>
3784 <filename>pointercal</filename>:
3785 No longer needed and has been moved to
3786 <filename>meta-oe</filename>.
3787 </para></listitem>
3788 <listitem><para>
3789 <filename>python-imaging</filename>:
3790 No longer needed and moved to
3791 <filename>meta-python</filename>
3792 </para></listitem>
3793 <listitem><para>
3794 <filename>python-pyrex</filename>:
3795 No longer needed and moved to
3796 <filename>meta-python</filename>.
3797 </para></listitem>
3798 <listitem><para>
3799 <filename>sato-icon-theme</filename>:
3800 Became obsolete.
3801 </para></listitem>
3802 <listitem><para>
3803 <filename>swabber-native</filename>:
3804 Swabber has been removed.
3805 See the
3806 <link linkend='migration-2.2-swabber-has-been-removed'>entry on Swabber</link>.
3807 </para></listitem>
3808 <listitem><para>
3809 <filename>tslib</filename>:
3810 No longer needed and has been moved to
3811 <filename>meta-oe</filename>.
3812 </para></listitem>
3813 <listitem><para>
3814 <filename>uclibc</filename>:
3815 Removed in favor of musl.
3816 </para></listitem>
3817 <listitem><para>
3818 <filename>xtscal</filename>:
3819 No longer needed and moved to
3820 <filename>meta-oe</filename>
3821 </para></listitem>
3822 </itemizedlist>
3823 </para>
3824 </section>
3825
3826 <section id='migration-2.2-removed-classes'>
3827 <title>Removed Classes</title>
3828
3829 <para>
3830 The following classes have been removed:
3831 <itemizedlist>
3832 <listitem><para>
3833 <filename>distutils-native-base</filename>:
3834 No longer needed.
3835 </para></listitem>
3836 <listitem><para>
3837 <filename>distutils3-native-base</filename>:
3838 No longer needed.
3839 </para></listitem>
3840 <listitem><para>
3841 <filename>sdl</filename>:
3842 Only set
3843 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
3844 and
3845 <link linkend='var-SECTION'><filename>SECTION</filename></link>,
3846 which are better set within the recipe instead.
3847 </para></listitem>
3848 <listitem><para>
3849 <filename>sip</filename>:
3850 Mostly unused.
3851 </para></listitem>
3852 <listitem><para>
3853 <filename>swabber</filename>:
3854 See the
3855 <link linkend='migration-2.2-swabber-has-been-removed'>entry on Swabber</link>.
3856 </para></listitem>
3857 </itemizedlist>
3858 </para>
3859 </section>
3860
3861 <section id='migration-2.2-minor-packaging-changes'>
3862 <title>Minor Packaging Changes</title>
3863
3864 <para>
3865 The following minor packaging changes have occurred:
3866 <itemizedlist>
3867 <listitem><para>
3868 <filename>grub</filename>:
3869 Split <filename>grub-editenv</filename> into its own
3870 package.
3871 </para></listitem>
3872 <listitem><para>
3873 <filename>systemd</filename>:
3874 Split container and vm related units into a new package,
3875 systemd-container.
3876 </para></listitem>
3877 <listitem><para>
3878 <filename>util-linux</filename>:
3879 Moved <filename>prlimit</filename> to a separate
3880 <filename>util-linux-prlimit</filename> package.
3881 </para></listitem>
3882 </itemizedlist>
3883 </para>
3884 </section>
3885
3886 <section id='migration-2.2-miscellaneous-changes'>
3887 <title>Miscellaneous Changes</title>
3888
3889 <para>
3890 The following miscellaneous changes have occurred:
3891 <itemizedlist>
3892 <listitem><para>
3893 <filename>package_regex.inc</filename>:
3894 Removed because the definitions
3895 <filename>package_regex.inc</filename> previously contained
3896 have been moved to their respective recipes.
3897 </para></listitem>
3898 <listitem><para>
3899 Both <filename>devtool add</filename> and
3900 <filename>recipetool create</filename> now use a fixed
3901 <link linkend='var-SRCREV'><filename>SRCREV</filename></link>
3902 by default when fetching from a Git repository.
3903 You can override this in either case to use
3904 <filename>${</filename><link linkend='var-AUTOREV'><filename>AUTOREV</filename></link><filename>}</filename>
3905 instead by using the <filename>-a</filename> or
3906 <filename>&dash;&dash;autorev</filename> command-line
3907 option
3908 </para></listitem>
3909 <listitem><para>
3910 <filename>distcc</filename>:
3911 GTK+ UI is now disabled by default.
3912 </para></listitem>
3913 <listitem><para>
3914 <filename>packagegroup-core-tools-testapps</filename>:
3915 Removed Piglit.
3916 </para></listitem>
3917 <listitem><para>
3918 <filename>image.bbclass</filename>:
3919 Renamed COMPRESS(ION) to CONVERSION.
3920 This change means that
3921 <filename>COMPRESSIONTYPES</filename>,
3922 <filename>COMPRESS_DEPENDS</filename> and
3923 <filename>COMPRESS_CMD</filename> are deprecated in favor
3924 of <filename>CONVERSIONTYPES</filename>,
3925 <filename>CONVERSION_DEPENDS</filename> and
3926 <filename>CONVERSION_CMD</filename>.
3927 The <filename>COMPRESS*</filename> variable names will
3928 still work in the 2.2 release but metadata that does not
3929 need to be backwards-compatible should be changed to
3930 use the new names as the <filename>COMPRESS*</filename>
3931 ones will be removed in a future release.
3932 </para></listitem>
3933 <listitem><para>
3934 <filename>gtk-doc</filename>:
3935 A full version of <filename>gtk-doc</filename> is now
3936 made available.
3937 However, some old software might not be capable of using
3938 the current version of <filename>gtk-doc</filename>
3939 to build documentation.
3940 You need to change recipes that build such software so that
3941 they explicitly disable building documentation with
3942 <filename>gtk-doc</filename>.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05003943 </para></listitem>
3944 </itemizedlist>
3945 </para>
3946 </section>
3947</section>
Patrick Williamsf1e5d692016-03-30 15:21:19 -05003948
Brad Bishop6e60e8b2018-02-01 10:27:11 -05003949<section id='moving-to-the-yocto-project-2.3-release'>
3950 <title>Moving to the Yocto Project 2.3 Release</title>
3951
3952 <para>
3953 This section provides migration information for moving to the
3954 Yocto Project 2.3 Release from the prior release.
3955 </para>
3956
3957 <section id='migration-2.3-recipe-specific-sysroots'>
3958 <title>Recipe-specific Sysroots</title>
3959
3960 <para>
3961 The OpenEmbedded build system now uses one sysroot per
3962 recipe to resolve long-standing issues with configuration
3963 script auto-detection of undeclared dependencies.
3964 Consequently, you might find that some of your previously
3965 written custom recipes are missing declared dependencies,
3966 particularly those dependencies that are incidentally built
3967 earlier in a typical build process and thus are already likely
3968 to be present in the shared sysroot in previous releases.
3969 </para>
3970
3971 <para>
3972 Consider the following:
3973 <itemizedlist>
3974 <listitem><para>
3975 <emphasis>Declare Build-Time Dependencies:</emphasis>
3976 Because of this new feature, you must explicitly
3977 declare all build-time dependencies for your recipe.
3978 If you do not declare these dependencies, they are not
3979 populated into the sysroot for the recipe.
3980 </para></listitem>
3981 <listitem><para>
3982 <emphasis>Specify Pre-Installation and Post-Installation
3983 Native Tool Dependencies:</emphasis>
3984 You must specifically specify any special native tool
3985 dependencies of <filename>pkg_preinst</filename> and
3986 <filename>pkg_postinst</filename> scripts by using the
3987 <link linkend='var-PACKAGE_WRITE_DEPS'><filename>PACKAGE_WRITE_DEPS</filename></link>
3988 variable.
3989 Specifying these dependencies ensures that these tools
3990 are available if these scripts need to be run on the
3991 build host during the
3992 <link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>
3993 task.</para>
3994
3995 <para>As an example, see the <filename>dbus</filename>
3996 recipe.
3997 You will see that this recipe has a
3998 <filename>pkg_postinst</filename> that calls
3999 <filename>systemctl</filename> if "systemd" is in
4000 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>.
4001 In the example,
4002 <filename>systemd-systemctl-native</filename> is added to
4003 <filename>PACKAGE_WRITE_DEPS</filename>, which is also
4004 conditional on "systemd" being in
4005 <filename>DISTRO_FEATURES</filename>.
4006 </para></listitem>
4007 <listitem><para>
4008 <emphasis>Examine Recipes that Use
4009 <filename>SSTATEPOSTINSTFUNCS</filename>:</emphasis>
4010 You need to examine any recipe that uses
4011 <filename>SSTATEPOSTINSTFUNCS</filename> and determine
4012 steps to take.</para>
4013
4014 <para>Functions added to
4015 <filename>SSTATEPOSTINSTFUNCS</filename> are still
4016 called as they were in previous Yocto Project releases.
4017 However, since a separate sysroot is now being populated
4018 for every recipe and if existing functions being called
4019 through <filename>SSTATEPOSTINSTFUNCS</filename> are
4020 doing relocation, then you will need to change these
4021 to use a post-installation script that is installed by a
4022 function added to
4023 <link linkend='var-SYSROOT_PREPROCESS_FUNCS'><filename>SYSROOT_PREPROCESS_FUNCS</filename></link>.
4024 </para>
4025
4026 <para>For an example, see the
4027 <filename>pixbufcache</filename> class in
4028 <filename>meta/classes/</filename> in the Yocto Project
Brad Bishop316dfdd2018-06-25 12:45:53 -04004029 <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>.
Brad Bishop6e60e8b2018-02-01 10:27:11 -05004030 <note>
4031 The <filename>SSTATEPOSTINSTFUNCS</filename> variable
4032 itself is now deprecated in favor of the
4033 <filename>do_populate_sysroot[postfuncs]</filename>
4034 task.
4035 Consequently, if you do still have any function or
4036 functions that need to be called after the sysroot
4037 component is created for a recipe, then you would be
4038 well advised to take steps to use a post installation
4039 script as described previously.
4040 Taking these steps prepares your code for when
4041 <filename>SSTATEPOSTINSTFUNCS</filename> is
4042 removed in a future Yocto Project release.
4043 </note>
4044 </para></listitem>
4045 <listitem><para>
4046 <emphasis>Specify the Sysroot when Using Certain
4047 External Scripts:</emphasis>
4048 Because the shared sysroot is now gone, the scripts
4049 <filename>oe-find-native-sysroot</filename> and
4050 <filename>oe-run-native</filename> have been changed such
4051 that you need to specify which recipe's
4052 <link linkend='var-STAGING_DIR_NATIVE'><filename>STAGING_DIR_NATIVE</filename></link>
4053 is used.
4054 </para></listitem>
4055 </itemizedlist>
4056 <note>
4057 You can find more information on how recipe-specific sysroots
4058 work in the
4059 "<link linkend='ref-classes-staging'><filename>staging.bbclass</filename></link>"
4060 section.
4061 </note>
4062 </para>
4063 </section>
4064
4065 <section id='migration-2.3-path-variable'>
4066 <title><filename>PATH</filename> Variable</title>
4067
4068 <para>
4069 Within the environment used to run build tasks, the environment
4070 variable <filename>PATH</filename> is now sanitized such that
4071 the normal native binary paths
4072 (<filename>/bin</filename>, <filename>/sbin</filename>,
4073 <filename>/usr/bin</filename> and so forth) are
4074 removed and a directory containing symbolic links linking only
4075 to the binaries from the host mentioned in the
4076 <link linkend='var-HOSTTOOLS'><filename>HOSTTOOLS</filename></link>
4077 and
4078 <link linkend='var-HOSTTOOLS_NONFATAL'><filename>HOSTTOOLS_NONFATAL</filename></link>
4079 variables is added to <filename>PATH</filename>.
4080 </para>
4081
4082 <para>
4083 Consequently, any native binaries provided by the host that you
4084 need to call needs to be in one of these two variables at
4085 the configuration level.
4086 </para>
4087
4088 <para>
4089 Alternatively, you can add a native recipe (i.e.
4090 <filename>-native</filename>) that provides the
4091 binary to the recipe's
4092 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
4093 value.
4094 <note>
4095 <filename>PATH</filename> is not sanitized in the same way
4096 within <filename>devshell</filename>.
4097 If it were, you would have difficulty running host tools for
4098 development and debugging within the shell.
4099 </note>
4100 </para>
4101 </section>
4102
4103 <section id='migration-2.3-scripts'>
4104 <title>Changes to Scripts</title>
4105
4106 <para>
4107 The following changes to scripts took place:
4108 <itemizedlist>
4109 <listitem><para>
4110 <emphasis><filename>oe-find-native-sysroot</filename>:</emphasis>
4111 The usage for the
4112 <filename>oe-find-native-sysroot</filename> script has
4113 changed to the following:
4114 <literallayout class='monospaced'>
4115 $ . oe-find-native-sysroot <replaceable>recipe</replaceable>
4116 </literallayout>
4117 You must now supply a recipe for
4118 <replaceable>recipe</replaceable> as part of the command.
4119 Prior to the Yocto Project &DISTRO; release, it was not
4120 necessary to provide the script with the command.
4121 </para></listitem>
4122 <listitem><para>
4123 <emphasis><filename>oe-run-native</filename>:</emphasis>
4124 The usage for the
4125 <filename>oe-run-native</filename> script has changed
4126 to the following:
4127 <literallayout class='monospaced'>
4128 $ oe-run-native <replaceable>native_recipe</replaceable> <replaceable>tool</replaceable>
4129 </literallayout>
4130 You must supply the name of the native recipe and the tool
4131 you want to run as part of the command.
4132 Prior to the Yocto Project &DISTRO; release, it was not
4133 necessary to provide the native recipe with the command.
4134 </para></listitem>
4135 <listitem><para>
4136 <emphasis><filename>cleanup-workdir</filename>:</emphasis>
4137 The <filename>cleanup-workdir</filename> script has been
4138 removed because the script was found to be deleting
4139 files it should not have, which lead to broken build
4140 trees.
4141 Rather than trying to delete portions of
4142 <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
4143 and getting it wrong, it is recommended that you
4144 delete <filename>TMPDIR</filename> and have it restored
4145 from shared state (sstate) on subsequent builds.
4146 </para></listitem>
4147 <listitem><para>
4148 <emphasis><filename>wipe-sysroot</filename>:</emphasis>
4149 The <filename>wipe-sysroot</filename> script has been
4150 removed as it is no longer needed with recipe-specific
4151 sysroots.
4152 </para></listitem>
4153 </itemizedlist>
4154 </para>
4155 </section>
4156
4157 <section id='migration-2.3-functions'>
4158 <title>Changes to Functions</title>
4159
4160 <para>
4161 The previously deprecated
4162 <filename>bb.data.getVar()</filename>,
4163 <filename>bb.data.setVar()</filename>, and
4164 related functions have been removed in favor of
4165 <filename>d.getVar()</filename>,
4166 <filename>d.setVar()</filename>, and so forth.
4167 </para>
4168
4169 <para>
4170 You need to fix any references to these old functions.
4171 </para>
4172 </section>
4173
4174 <section id='migration-2.3-bitbake-changes'>
4175 <title>BitBake Changes</title>
4176
4177 <para>
4178 The following changes took place for BitBake:
4179 <itemizedlist>
4180 <listitem><para>
4181 <emphasis>BitBake's Graphical Dependency Explorer UI Replaced:</emphasis>
4182 BitBake's graphical dependency explorer UI
4183 <filename>depexp</filename> was replaced by
4184 <filename>taskexp</filename> ("Task Explorer"), which
4185 provides a graphical way of exploring the
4186 <filename>task-depends.dot</filename> file.
4187 The data presented by Task Explorer is much more
4188 accurate than the data that was presented by
4189 <filename>depexp</filename>.
4190 Being able to visualize the data is an often requested
4191 feature as standard <filename>*.dot</filename> file
4192 viewers cannot usual cope with the size of
4193 the <filename>task-depends.dot</filename> file.
4194 </para></listitem>
4195 <listitem><para>
4196 <emphasis>BitBake "-g" Output Changes:</emphasis>
4197 The <filename>package-depends.dot</filename> and
4198 <filename>pn-depends.dot</filename> files as previously
4199 generated using the <filename>bitbake -g</filename> command
4200 have been removed.
4201 A <filename>recipe-depends.dot</filename> file
4202 is now generated as a collapsed version of
4203 <filename>task-depends.dot</filename> instead.
4204 </para>
4205
4206 <para>The reason for this change is because
4207 <filename>package-depends.dot</filename> and
4208 <filename>pn-depends.dot</filename> largely date back
4209 to a time before task-based execution and do not take
4210 into account task-level dependencies between recipes,
4211 which could be misleading.
4212 </para></listitem>
4213 <listitem><para>
4214 <emphasis>Mirror Variable Splitting Changes:</emphasis>
4215 Mirror variables including
4216 <link linkend='var-MIRRORS'><filename>MIRRORS</filename></link>,
4217 <link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>,
4218 and
4219 <link linkend='var-SSTATE_MIRRORS'><filename>SSTATE_MIRRORS</filename></link>
4220 can now separate values entirely with spaces.
4221 Consequently, you no longer need "\\n".
4222 BitBake looks for pairs of values, which simplifies usage.
4223 There should be no change required to existing mirror
4224 variable values themselves.
4225 </para></listitem>
4226 <listitem><para>
4227 <emphasis>The Subversion (SVN) Fetcher Uses an "ssh" Parameter and Not an "rsh" Parameter:</emphasis>
4228 The SVN fetcher now takes an "ssh" parameter instead of an
4229 "rsh" parameter.
4230 This new optional parameter is used when the "protocol"
4231 parameter is set to "svn+ssh".
4232 You can only use the new parameter to specify the
4233 <filename>ssh</filename> program used by SVN.
4234 The SVN fetcher passes the new parameter through the
4235 <filename>SVN_SSH</filename> environment variable during
4236 the
4237 <link linkend='ref-tasks-fetch'><filename>do_fetch</filename></link>
4238 task.</para>
4239
4240 <para>See the
4241 "<ulink url='&YOCTO_DOCS_BB_URL;#svn-fetcher'>Subversion (SVN) Fetcher (svn://)</ulink>"
Brad Bishop316dfdd2018-06-25 12:45:53 -04004242 section in the BitBake User Manual for additional
4243 information.
Brad Bishop6e60e8b2018-02-01 10:27:11 -05004244 </para></listitem>
4245 <listitem><para>
4246 <emphasis><filename>BB_SETSCENE_VERIFY_FUNCTION</filename>
4247 and <filename>BB_SETSCENE_VERIFY_FUNCTION2</filename>
4248 Removed:</emphasis>
4249 Because the mechanism they were part of is no longer
4250 necessary with recipe-specific sysroots, the
4251 <filename>BB_SETSCENE_VERIFY_FUNCTION</filename> and
4252 <filename>BB_SETSCENE_VERIFY_FUNCTION2</filename>
4253 variables have been removed.
4254 </para></listitem>
4255 </itemizedlist>
4256 </para>
4257 </section>
4258
4259 <section id='migration-2.3-absolute-symlinks'>
4260 <title>Absolute Symbolic Links</title>
4261
4262 <para>
4263 Absolute symbolic links (symlinks) within staged files are no
4264 longer permitted and now trigger an error.
4265 Any explicit creation of symlinks can use the
4266 <filename>lnr</filename> script, which is a replacement for
4267 <filename>ln -r</filename>.
4268 </para>
4269
4270 <para>
4271 If the build scripts in the software that the recipe is building
4272 are creating a number of absolute symlinks that need to be
4273 corrected, you can inherit
4274 <filename>relative_symlinks</filename> within the recipe to turn
4275 those absolute symlinks into relative symlinks.
4276 </para>
4277 </section>
4278
4279 <section id='migration-2.3-gplv2-and-gplv3-moves'>
4280 <title>GPLv2 Versions of GPLv3 Recipes Moved</title>
4281
4282 <para>
4283 Older GPLv2 versions of GPLv3 recipes have moved to a
4284 separate <filename>meta-gplv2</filename> layer.
4285 </para>
4286
4287 <para>
4288 If you use
4289 <link linkend='var-INCOMPATIBLE_LICENSE'><filename>INCOMPATIBLE_LICENSE</filename></link>
4290 to exclude GPLv3 or set
4291 <link linkend='var-PREFERRED_VERSION'><filename>PREFERRED_VERSION</filename></link>
4292 to substitute a GPLv2 version of a GPLv3 recipe, then you must add
4293 the <filename>meta-gplv2</filename> layer to your configuration.
4294 <note>
4295 You can find <filename>meta-gplv2</filename> layer in the
4296 OpenEmbedded layer index at
4297 <ulink url='https://layers.openembedded.org/layerindex/branch/master/layer/meta-gplv2/'></ulink>.
4298 </note>
4299 </para>
4300
4301 <para>
4302 These relocated GPLv2 recipes do not receive the same level of
4303 maintenance as other core recipes.
4304 The recipes do not get security fixes and upstream no longer
4305 maintains them.
4306 In fact, the upstream community is actively hostile towards people
4307 that use the old versions of the recipes.
4308 Moving these recipes into a separate layer both makes the different
4309 needs of the recipes clearer and clearly identifies the number of
4310 these recipes.
4311 <note>
4312 The long-term solution might be to move to BSD-licensed
4313 replacements of the GPLv3 components for those that need to
4314 exclude GPLv3-licensed components from the target system.
4315 This solution will be investigated for future Yocto
4316 Project releases.
4317 </note>
4318 </para>
4319 </section>
4320
4321 <section id='migration-2.3-package-management-changes'>
4322 <title>Package Management Changes</title>
4323
4324 <para>
4325 The following package management changes took place:
4326 <itemizedlist>
4327 <listitem><para>
4328 Smart package manager is replaced by DNF package manager.
4329 Smart has become unmaintained upstream, is not ported
4330 to Python 3.x.
4331 Consequently, Smart needed to be replaced.
4332 DNF is the only feasible candidate.</para>
4333 <para>The change in functionality is that the on-target
4334 runtime package management from remote package feeds is
4335 now done with a different tool that has a
4336 different set of command-line options.
4337 If you have scripts that call the
4338 tool directly, or use its API, they need to be fixed.</para>
4339 <para>For more information, see the
4340 <ulink url='http://dnf.readthedocs.io/en/latest/'>DNF Documentation</ulink>.
4341 </para></listitem>
4342 <listitem><para>
4343 Rpm 5.x is replaced with Rpm 4.x.
4344 This is done for two major reasons:
4345 <itemizedlist>
4346 <listitem><para>
4347 DNF is API-incompatible with Rpm 5.x and porting
4348 it and maintaining the port is non-trivial.
4349 </para></listitem>
4350 <listitem><para>
4351 Rpm 5.x itself has limited maintenance upstream,
4352 and the Yocto Project is one of the very few
4353 remaining users.
4354 </para></listitem>
4355 </itemizedlist>
4356 </para></listitem>
4357 <listitem><para>
4358 Berkeley DB 6.x is removed and Berkeley DB 5.x becomes
4359 the default:
4360 <itemizedlist>
4361 <listitem><para>
4362 Version 6.x of Berkeley DB has largely been
4363 rejected by the open source community due to its
4364 AGPLv3 license.
4365 As a result, most mainstream open source projects
4366 that require DB are still developed and tested with
4367 DB 5.x.
4368 </para></listitem>
4369 <listitem><para>
4370 In OE-core, the only thing that was requiring
4371 DB 6.x was Rpm 5.x.
4372 Thus, no reason exists to continue carrying DB 6.x
4373 in OE-core.
4374 </para></listitem>
4375 </itemizedlist>
4376 </para></listitem>
4377 <listitem><para>
4378 <filename>createrepo</filename> is replaced with
4379 <filename>createrepo_c</filename>.</para>
4380 <para><filename>createrepo_c</filename> is the current
4381 incarnation of the tool that generates remote repository
4382 metadata.
4383 It is written in C as compared to
4384 <filename>createrepo</filename>, which is written in
4385 Python.
4386 <filename>createrepo_c</filename> is faster and is
4387 maintained.
4388 </para></listitem>
4389 <listitem><para>
4390 Architecture-independent RPM packages are "noarch"
4391 instead of "all".</para>
4392 <para>This change was made because too many places in
4393 DNF/RPM4 stack already make that assumption.
4394 Only the filenames and the architecture tag has changed.
4395 Nothing else has changed in OE-core system, particularly
4396 in the
4397 <link linkend='ref-classes-allarch'><filename>allarch.bbclass</filename></link>
4398 class.
4399 </para></listitem>
4400 <listitem><para>
4401 Signing of remote package feeds using
4402 <filename>PACKAGE_FEED_SIGN</filename>
4403 is not currently supported.
4404 This issue will be fully addressed in a future
4405 Yocto Project release.
4406 See <ulink url='https://bugzilla.yoctoproject.org/show_bug.cgi?id=11209'>defect 11209</ulink>
4407 for more information on a solution to package feed
4408 signing with RPM in the Yocto Project 2.3 release.
4409 </para></listitem>
4410 <listitem><para>
4411 OPKG now uses the libsolv backend for resolving package
4412 dependencies by default.
4413 This is vastly superior to OPKG's internal ad-hoc solver
4414 that was previously used.
4415 This change does have a small impact on disk (around
4416 500 KB) and memory footprint.
4417 <note>
4418 For further details on this change, see the
4419 <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?
4420id=f4d4f99cfbc2396e49c1613a7d237b9e57f06f81'>commit message</ulink>.
4421 </note>
4422 </para></listitem>
4423 </itemizedlist>
4424 </para>
4425 </section>
4426
4427 <section id='migration-2.3-removed-recipes'>
4428 <title>Removed Recipes</title>
4429
4430 <para>
4431 The following recipes have been removed:
4432 <itemizedlist>
4433 <listitem><para>
4434 <emphasis><filename>linux-yocto 4.8:</filename></emphasis>
4435 Version 4.8 has been removed.
4436 Versions 4.1 (LTSI), 4.4 (LTS), 4.9 (LTS/LTSI) and 4.10
4437 are now present.
4438 </para></listitem>
4439 <listitem><para>
4440 <emphasis><filename>python-smartpm:</filename></emphasis>
4441 Functionally replaced by <filename>dnf</filename>.
4442 </para></listitem>
4443 <listitem><para>
4444 <emphasis><filename>createrepo:</filename></emphasis>
4445 Replaced by the <filename>createrepo-c</filename> recipe.
4446 </para></listitem>
4447 <listitem><para>
4448 <emphasis><filename>rpmresolve:</filename></emphasis>
4449 No longer needed with the move to RPM 4 as RPM itself is
4450 used instead.
4451 </para></listitem>
4452 <listitem><para>
4453 <emphasis><filename>gstreamer:</filename></emphasis>
4454 Removed the GStreamer Git version recipes as they have
4455 been stale.
4456 <filename>1.10.</filename><replaceable>x</replaceable>
4457 recipes are still present.
4458 </para></listitem>
4459 <listitem><para>
4460 <emphasis><filename>alsa-conf-base:</filename></emphasis>
4461 Merged into <filename>alsa-conf</filename> since
4462 <filename>libasound</filename> depended on both.
4463 Essentially, no way existed to install only one of these.
4464 </para></listitem>
4465 <listitem><para>
4466 <emphasis><filename>tremor:</filename></emphasis>
4467 Moved to <filename>meta-multimedia</filename>.
4468 Fixed-integer Vorbis decoding is not
4469 needed by current hardware.
4470 Thus, GStreamer's ivorbis plugin has been disabled
4471 by default eliminating the need for the
Brad Bishopd7bf8c12018-02-25 22:55:05 -05004472 <filename>tremor</filename> recipe in
4473 <link linkend='oe-core'>OE-Core</link>.
Brad Bishop6e60e8b2018-02-01 10:27:11 -05004474 </para></listitem>
4475 <listitem><para>
4476 <emphasis><filename>gummiboot:</filename></emphasis>
4477 Replaced by <filename>systemd-boot</filename>.
4478 </para></listitem>
4479 </itemizedlist>
4480 </para>
4481 </section>
4482
4483 <section id='migration-2.3-wic-changes'>
4484 <title>Wic Changes</title>
4485
4486 <para>
4487 The following changes have been made to Wic:
4488 <note>
4489 For more information on Wic, see the
Brad Bishopd7bf8c12018-02-25 22:55:05 -05004490 "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-partitioned-images-using-wic'>Creating Partitioned Images Using Wic</ulink>"
4491 section in the Yocto Project Development Tasks Manual.
Brad Bishop6e60e8b2018-02-01 10:27:11 -05004492 </note>
4493 <itemizedlist>
4494 <listitem><para>
4495 <emphasis>Default Output Directory Changed:</emphasis>
4496 Wic's default output directory is now the current directory
4497 by default instead of the unusual
4498 <filename>/var/tmp/wic</filename>.</para>
4499
4500 <para>The "-o" and "--outdir" options remain unchanged
4501 and are used to specify your preferred output directory
4502 if you do not want to use the default directory.
4503 </para></listitem>
4504 <listitem><para>
4505 <emphasis>fsimage Plug-in Removed:</emphasis>
Brad Bishopc342db32019-05-15 21:57:59 -04004506 The Wic fsimage plugin has been removed as it duplicates
4507 functionality of the rawcopy plugin.
Brad Bishop6e60e8b2018-02-01 10:27:11 -05004508 </para></listitem>
4509 </itemizedlist>
4510 </para>
4511 </section>
4512
4513 <section id='migration-2.3-qa-changes'>
4514 <title>QA Changes</title>
4515
4516 <para>
4517 The following QA checks have changed:
4518 <itemizedlist>
4519 <listitem><para>
4520 <emphasis><filename>unsafe-references-in-binaries</filename>:</emphasis>
4521 The <filename>unsafe-references-in-binaries</filename>
4522 QA check, which was disabled by default, has now been
4523 removed.
4524 This check was intended to detect binaries in
4525 <filename>/bin</filename> that link to libraries in
4526 <filename>/usr/lib</filename> and have the case where
4527 the user has <filename>/usr</filename> on a separate
4528 filesystem to <filename>/</filename>.</para>
4529
4530 <para>The removed QA check was buggy.
4531 Additionally, <filename>/usr</filename> residing on a
4532 separate partition from <filename>/</filename> is now
4533 a rare configuration.
4534 Consequently,
4535 <filename>unsafe-references-in-binaries</filename> was
4536 removed.
4537 </para></listitem>
4538 <listitem><para>
4539 <emphasis><filename>file-rdeps</filename>:</emphasis>
4540 The <filename>file-rdeps</filename> QA check is now an
4541 error by default instead of a warning.
4542 Because it is an error instead of a warning, you need to
4543 address missing runtime dependencies.</para>
4544
4545 <para>For additional information, see the
4546 <link linkend='ref-classes-insane'><filename>insane</filename></link>
4547 class and the
4548 "<link linkend='qa-errors-and-warnings'>Errors and Warnings</link>"
4549 section.
4550 </para></listitem>
4551 </itemizedlist>
4552 </para>
4553 </section>
4554
4555 <section id='migration-2.3-miscellaneous-changes'>
4556 <title>Miscellaneous Changes</title>
4557
4558 <para>
4559 The following miscellaneous changes have occurred:
4560 <itemizedlist>
4561 <listitem><para>
4562 In this release, a number of recipes have been changed to
4563 ignore the <filename>largefile</filename>
4564 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
4565 item, enabling large file support unconditionally.
4566 This feature has always been enabled by default.
4567 Disabling the feature has not been widely tested.
4568 <note>
4569 Future releases of the Yocto Project will remove
4570 entirely the ability to disable the
4571 <filename>largefile</filename> feature,
4572 which would make it unconditionally enabled everywhere.
4573 </note>
4574 </para></listitem>
4575 <listitem><para>
4576 If the
4577 <link linkend='var-DISTRO_VERSION'><filename>DISTRO_VERSION</filename></link>
4578 value contains the value of the
4579 <link linkend='var-DATE'><filename>DATE</filename></link>
4580 variable, which is the default between Poky releases,
4581 the <filename>DATE</filename> value is explicitly excluded
4582 from <filename>/etc/issue</filename> and
4583 <filename>/etc/issue.net</filename>, which is displayed at
4584 the login prompt, in order to avoid conflicts with
4585 Multilib enabled.
4586 Regardless, the <filename>DATE</filename> value is
4587 inaccurate if the <filename>base-files</filename>
4588 recipe is restored from shared state (sstate) rather
4589 than rebuilt.</para>
4590
4591 <para>If you need the build date recorded in
4592 <filename>/etc/issue*</filename> or anywhere else in your
4593 image, a better method is to define a post-processing
4594 function to do it and have the function called from
4595 <link linkend='var-ROOTFS_POSTPROCESS_COMMAND'><filename>ROOTFS_POSTPROCESS_COMMAND</filename></link>.
4596 Doing so ensures the value is always up-to-date with the
4597 created image.
4598 </para></listitem>
4599 <listitem><para>
4600 Dropbear's <filename>init</filename> script now disables
4601 DSA host keys by default.
4602 This change is in line with the systemd service
4603 file, which supports RSA keys only, and with recent
4604 versions of OpenSSH, which deprecates DSA host keys.
4605 </para></listitem>
4606 <listitem><para>
4607 The
4608 <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
4609 class now correctly uses tabs as separators between all
4610 columns in <filename>installed-package-sizes.txt</filename>
4611 in order to aid import into other tools.
4612 </para></listitem>
4613 <listitem><para>
4614 The <filename>USE_LDCONFIG</filename> variable has been
4615 replaced with the "ldconfig"
Brad Bishop316dfdd2018-06-25 12:45:53 -04004616 <filename>DISTRO_FEATURES</filename> feature.
Brad Bishop6e60e8b2018-02-01 10:27:11 -05004617 Distributions that previously set:
4618 <literallayout class='monospaced'>
4619 USE_LDCONFIG = "0"
4620 </literallayout>
4621 should now instead use the following:
4622 <literallayout class='monospaced'>
4623 DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " ldconfig"
4624 </literallayout>
4625 </para></listitem>
4626 <listitem><para>
4627 The default value of
4628 <link linkend='var-COPYLEFT_LICENSE_INCLUDE'><filename>COPYLEFT_LICENSE_INCLUDE</filename></link>
4629 now includes all versions of AGPL licenses in addition
4630 to GPL and LGPL.
4631 <note>
4632 The default list is not intended to be guaranteed
4633 as a complete safe list.
4634 You should seek legal advice based on what you are
4635 distributing if you are unsure.
4636 </note>
4637 </para></listitem>
4638 <listitem><para>
4639 Kernel module packages are now suffixed with the kernel
4640 version in order to allow module packages from multiple
4641 kernel versions to co-exist on a target system.
4642 If you wish to return to the previous naming scheme
4643 that does not include the version suffix, use the
4644 following:
4645 <literallayout class='monospaced'>
4646 KERNEL_MODULE_PACKAGE_SUFFIX to ""
4647 </literallayout>
4648 </para></listitem>
4649 <listitem><para>
4650 Removal of <filename>libtool</filename>
4651 <filename>*.la</filename> files is now enabled by default.
4652 The <filename>*.la</filename> files are not actually
4653 needed on Linux and relocating them is an unnecessary
4654 burden.</para>
4655
4656 <para>If you need to preserve these
4657 <filename>.la</filename> files (e.g. in a custom
4658 distribution), you must change
4659 <link linkend='var-INHERIT_DISTRO'><filename>INHERIT_DISTRO</filename></link>
4660 such that "remove-libtool" is not included in the value.
4661 </para></listitem>
4662 <listitem><para>
4663 Extensible SDKs built for GCC 5+ now refuse to install on a
4664 distribution where the host GCC version is 4.8 or 4.9.
4665 This change resulted from the fact that the installation
4666 is known to fail due to the way the
4667 <filename>uninative</filename> shared state (sstate)
4668 package is built.
4669 See the
4670 <link linkend='ref-classes-uninative'><filename>uninative</filename></link>
4671 class for additional information.
4672 </para></listitem>
4673 <listitem><para>
4674 All native and nativesdk recipes now use a separate
Brad Bishop316dfdd2018-06-25 12:45:53 -04004675 <filename>DISTRO_FEATURES</filename> value instead of
4676 sharing the value used by recipes for the target, in order
4677 to avoid unnecessary rebuilds.</para>
Brad Bishop6e60e8b2018-02-01 10:27:11 -05004678
4679 <para>The <filename>DISTRO_FEATURES</filename> for
4680 <filename>native</filename> recipes is
4681 <link linkend='var-DISTRO_FEATURES_NATIVE'><filename>DISTRO_FEATURES_NATIVE</filename></link>
4682 added to an intersection of
4683 <filename>DISTRO_FEATURES</filename> and
4684 <link linkend='var-DISTRO_FEATURES_FILTER_NATIVE'><filename>DISTRO_FEATURES_FILTER_NATIVE</filename></link>.
4685 </para>
4686
4687 <para>For nativesdk recipes, the
4688 corresponding variables are
4689 <link linkend='var-DISTRO_FEATURES_NATIVESDK'><filename>DISTRO_FEATURES_NATIVESDK</filename></link>
4690 and
4691 <link linkend='var-DISTRO_FEATURES_FILTER_NATIVESDK'><filename>DISTRO_FEATURES_FILTER_NATIVESDK</filename></link>.
4692 </para></listitem>
4693 <listitem><para>
4694 The <filename>FILESDIR</filename>
4695 variable, which was previously deprecated and rarely used,
4696 has now been removed.
4697 You should change any recipes that set
4698 <filename>FILESDIR</filename> to set
4699 <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>
4700 instead.
4701 </para></listitem>
4702 <listitem><para>
4703 The <filename>MULTIMACH_HOST_SYS</filename>
4704 variable has been removed as it is no longer needed
4705 with recipe-specific sysroots.
4706 </para></listitem>
4707 </itemizedlist>
4708 </para>
4709 </section>
4710</section>
Brad Bishopd7bf8c12018-02-25 22:55:05 -05004711
4712<section id='moving-to-the-yocto-project-2.4-release'>
4713 <title>Moving to the Yocto Project 2.4 Release</title>
4714
4715 <para>
4716 This section provides migration information for moving to the
4717 Yocto Project 2.4 Release from the prior release.
4718 </para>
4719
4720 <section id='migration-2.4-memory-resident-mode'>
4721 <title>Memory Resident Mode</title>
4722
4723 <para>
4724 A persistent mode is now available in BitBake's default operation,
4725 replacing its previous "memory resident mode" (i.e.
4726 <filename>oe-init-build-env-memres</filename>).
4727 Now you only need to set
Brad Bishop316dfdd2018-06-25 12:45:53 -04004728 <link linkend='var-BB_SERVER_TIMEOUT'><filename>BB_SERVER_TIMEOUT</filename></link>
4729 to a timeout (in seconds) and BitBake's server stays resident for
4730 that amount of time between invocations.
Brad Bishopd7bf8c12018-02-25 22:55:05 -05004731 The <filename>oe-init-build-env-memres</filename> script has been
4732 removed since a separate environment setup script is no longer
4733 needed.
4734 </para>
4735 </section>
4736
4737 <section id='migration-2.4-packaging-changes'>
4738 <title>Packaging Changes</title>
4739
4740 <para>
4741 This section provides information about packaging changes that have
Brad Bishop1d80a2e2019-11-15 16:35:03 -05004742 occurred:
Brad Bishopd7bf8c12018-02-25 22:55:05 -05004743 <itemizedlist>
4744 <listitem><para>
4745 <emphasis><filename>python3</filename> Changes:</emphasis>
4746 <itemizedlist>
4747 <listitem><para>
4748 The main "python3" package now brings in all of the
4749 standard Python 3 distribution rather than a subset.
4750 This behavior matches what is expected based on
4751 traditional Linux distributions.
4752 If you wish to install a subset of Python 3, specify
4753 <filename>python-core</filename> plus one or more of
4754 the individual packages that are still produced.
4755 </para></listitem>
4756 <listitem><para>
4757 <emphasis><filename>python3</filename>:</emphasis>
4758 The <filename>bz2.py</filename>,
4759 <filename>lzma.py</filename>, and
4760 <filename>_compression.py</filename> scripts have
4761 been moved from the
4762 <filename>python3-misc</filename> package to
4763 the <filename>python3-compression</filename> package.
4764 </para></listitem>
4765 </itemizedlist>
4766 </para></listitem>
4767 <listitem><para>
4768 <emphasis><filename>binutils</filename>:</emphasis>
4769 The <filename>libbfd</filename> library is now packaged in
4770 a separate "libbfd" package.
4771 This packaging saves space when certain tools
4772 (e.g. <filename>perf</filename>) are installed.
4773 In such cases, the tools only need
4774 <filename>libbfd</filename> rather than all the packages in
4775 <filename>binutils</filename>.
4776 </para></listitem>
4777 <listitem><para>
4778 <emphasis><filename>util-linux</filename> Changes:</emphasis>
4779 <itemizedlist>
4780 <listitem><para>
4781 The <filename>su</filename> program is now packaged
4782 in a separate "util-linux-su" package, which is only
4783 built when "pam" is listed in the
4784 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
4785 variable.
4786 <filename>util-linux</filename> should not be
4787 installed unless it is needed because
4788 <filename>su</filename> is normally provided through
4789 the shadow file format.
4790 The main <filename>util-linux</filename> package has
4791 runtime dependencies (i.e.
4792 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>)
4793 on the <filename>util-linux-su</filename> package
4794 when "pam" is in
Brad Bishop316dfdd2018-06-25 12:45:53 -04004795 <filename>DISTRO_FEATURES</filename>.
Brad Bishopd7bf8c12018-02-25 22:55:05 -05004796 </para></listitem>
4797 <listitem><para>
4798 The <filename>switch_root</filename> program is now
4799 packaged in a separate "util-linux-switch-root"
4800 package for small initramfs images that do not need
4801 the whole <filename>util-linux</filename> package or
4802 the busybox binary, which are both much larger than
4803 <filename>switch_root</filename>.
4804 The main <filename>util-linux</filename> package has
4805 a recommended runtime dependency (i.e.
4806 <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>)
4807 on the <filename>util-linux-switch-root</filename> package.
4808 </para></listitem>
4809 <listitem><para>
4810 The <filename>ionice</filename> program is now
4811 packaged in a separate "util-linux-ionice" package.
4812 The main <filename>util-linux</filename> package has
4813 a recommended runtime dependency (i.e.
Brad Bishop316dfdd2018-06-25 12:45:53 -04004814 <filename>RRECOMMENDS</filename>)
Brad Bishopd7bf8c12018-02-25 22:55:05 -05004815 on the <filename>util-linux-ionice</filename> package.
4816 </para></listitem>
4817 </itemizedlist>
4818 </para></listitem>
4819 <listitem><para>
4820 <emphasis><filename>initscripts</filename>:</emphasis>
4821 The <filename>sushell</filename> program is now packaged in
4822 a separate "initscripts-sushell" package.
4823 This packaging change allows systems to pull
4824 <filename>sushell</filename> in when
4825 <filename>selinux</filename> is enabled.
4826 The change also eliminates needing to pull in the entire
4827 <filename>initscripts</filename> package.
4828 The main <filename>initscripts</filename> package has a
Brad Bishop316dfdd2018-06-25 12:45:53 -04004829 runtime dependency (i.e. <filename>RDEPENDS</filename>)
Brad Bishopd7bf8c12018-02-25 22:55:05 -05004830 on the <filename>sushell</filename> package when
Brad Bishop316dfdd2018-06-25 12:45:53 -04004831 "selinux" is in <filename>DISTRO_FEATURES</filename>.
Brad Bishopd7bf8c12018-02-25 22:55:05 -05004832 </para></listitem>
4833 <listitem><para>
4834 <emphasis><filename>glib-2.0</filename>:</emphasis>
4835 The <filename>glib-2.0</filename> package now has a
4836 recommended runtime dependency (i.e.
Brad Bishop316dfdd2018-06-25 12:45:53 -04004837 <filename>RRECOMMENDS</filename>) on the
Brad Bishopd7bf8c12018-02-25 22:55:05 -05004838 <filename>shared-mime-info</filename> package, since large
4839 portions of GIO are not useful without the MIME database.
4840 You can remove the dependency by using the
4841 <link linkend='var-BAD_RECOMMENDATIONS'><filename>BAD_RECOMMENDATIONS</filename></link>
4842 variable if <filename>shared-mime-info</filename> is too
4843 large and is not required.
4844 </para></listitem>
4845 <listitem><para>
4846 <emphasis>Go Standard Runtime:</emphasis>
4847 The Go standard runtime has been split out from the main
4848 <filename>go</filename> recipe into a separate
4849 <filename>go-runtime</filename> recipe.
4850 </para></listitem>
4851 </itemizedlist>
4852 </para>
4853 </section>
4854
4855 <section id='migration-2.4-removed-recipes'>
4856 <title>Removed Recipes</title>
4857
4858 <para>
4859 The following recipes have been removed:
4860 <itemizedlist>
4861 <listitem><para>
4862 <emphasis><filename>acpitests</filename>:</emphasis>
4863 This recipe is not maintained.
4864 </para></listitem>
4865 <listitem><para>
4866 <emphasis><filename>autogen-native</filename>:</emphasis>
4867 No longer required by Grub, oe-core, or meta-oe.
4868 </para></listitem>
4869 <listitem><para>
4870 <emphasis><filename>bdwgc</filename>:</emphasis>
4871 Nothing in OpenEmbedded-Core requires this recipe.
4872 It has moved to meta-oe.
4873 </para></listitem>
4874 <listitem><para>
4875 <emphasis><filename>byacc</filename>:</emphasis>
4876 This recipe was only needed by rpm 5.x and has moved to
4877 meta-oe.
4878 </para></listitem>
4879 <listitem><para>
4880 <emphasis><filename>gcc (5.4)</filename>:</emphasis>
4881 The 5.4 series dropped the recipe in favor of 6.3 / 7.2.
4882 </para></listitem>
4883 <listitem><para>
4884 <emphasis><filename>gnome-common</filename>:</emphasis>
4885 Deprecated upstream and no longer needed.
4886 </para></listitem>
4887 <listitem><para>
4888 <emphasis><filename>go-bootstrap-native</filename>:</emphasis>
4889 Go 1.9 does its own bootstrapping so this recipe has been
4890 removed.
4891 </para></listitem>
4892 <listitem><para>
4893 <emphasis><filename>guile</filename>:</emphasis>
4894 This recipe was only needed by
4895 <filename>autogen-native</filename> and
4896 <filename>remake</filename>.
4897 The recipe is no longer needed by either of these programs.
4898 </para></listitem>
4899 <listitem><para>
4900 <emphasis><filename>libclass-isa-perl</filename>:</emphasis>
4901 This recipe was previously needed for LSB 4, no longer
4902 needed.
4903 </para></listitem>
4904 <listitem><para>
4905 <emphasis><filename>libdumpvalue-perl</filename>:</emphasis>
4906 This recipe was previously needed for LSB 4, no longer
4907 needed.
4908 </para></listitem>
4909 <listitem><para>
4910 <emphasis><filename>libenv-perl</filename>:</emphasis>
4911 This recipe was previously needed for LSB 4, no longer
4912 needed.
4913 </para></listitem>
4914 <listitem><para>
4915 <emphasis><filename>libfile-checktree-perl</filename>:</emphasis>
4916 This recipe was previously needed for LSB 4, no longer
4917 needed.
4918 </para></listitem>
4919 <listitem><para>
4920 <emphasis><filename>libi18n-collate-perl</filename>:</emphasis>
4921 This recipe was previously needed for LSB 4, no longer
4922 needed.
4923 </para></listitem>
4924 <listitem><para>
4925 <emphasis><filename>libiconv</filename>:</emphasis>
4926 This recipe was only needed for <filename>uclibc</filename>,
4927 which was removed in the previous release.
4928 <filename>glibc</filename> and <filename>musl</filename>
4929 have their own implementations.
4930 <filename>meta-mingw</filename> still needs
4931 <filename>libiconv</filename>, so it has
4932 been moved to <filename>meta-mingw</filename>.
4933 </para></listitem>
4934 <listitem><para>
4935 <emphasis><filename>libpng12</filename>:</emphasis>
4936 This recipe was previously needed for LSB. The current
4937 <filename>libpng</filename> is 1.6.x.
4938 </para></listitem>
4939 <listitem><para>
4940 <emphasis><filename>libpod-plainer-perl</filename>:</emphasis>
4941 This recipe was previously needed for LSB 4, no longer
4942 needed.
4943 </para></listitem>
4944 <listitem><para>
4945 <emphasis><filename>linux-yocto (4.1)</filename>:</emphasis>
4946 This recipe was removed in favor of 4.4, 4.9, 4.10 and 4.12.
4947 </para></listitem>
4948 <listitem><para>
4949 <emphasis><filename>mailx</filename>:</emphasis>
4950 This recipe was previously only needed for LSB
4951 compatibility, and upstream is defunct.
4952 </para></listitem>
4953 <listitem><para>
4954 <emphasis><filename>mesa (git version only)</filename>:</emphasis>
4955 The git version recipe was stale with respect to the release
4956 version.
4957 </para></listitem>
4958 <listitem><para>
4959 <emphasis><filename>ofono (git version only)</filename>:</emphasis>
4960 The git version recipe was stale with respect to the release
4961 version.
4962 </para></listitem>
4963 <listitem><para>
4964 <emphasis><filename>portmap</filename>:</emphasis>
4965 This recipe is obsolete and is superseded by
4966 <filename>rpcbind</filename>.
4967 </para></listitem>
4968 <listitem><para>
4969 <emphasis><filename>python3-pygpgme</filename>:</emphasis>
4970 This recipe is old and unmaintained. It was previously
4971 required by <filename>dnf</filename>, which has switched
4972 to official <filename>gpgme</filename> Python bindings.
4973 </para></listitem>
4974 <listitem><para>
4975 <emphasis><filename>python-async</filename>:</emphasis>
4976 This recipe has been removed in favor of the Python 3
4977 version.
4978 </para></listitem>
4979 <listitem><para>
4980 <emphasis><filename>python-gitdb</filename>:</emphasis>
4981 This recipe has been removed in favor of the Python 3
4982 version.
4983 </para></listitem>
4984 <listitem><para>
4985 <emphasis><filename>python-git</filename>:</emphasis>
4986 This recipe was removed in favor of the Python 3
4987 version.
4988 </para></listitem>
4989 <listitem><para>
4990 <emphasis><filename>python-mako</filename>:</emphasis>
4991 This recipe was removed in favor of the Python 3
4992 version.
4993 </para></listitem>
4994 <listitem><para>
4995 <emphasis><filename>python-pexpect</filename>:</emphasis>
4996 This recipe was removed in favor of the Python 3 version.
4997 </para></listitem>
4998 <listitem><para>
4999 <emphasis><filename>python-ptyprocess</filename>:</emphasis>
5000 This recipe was removed in favor of Python the 3 version.
5001 </para></listitem>
5002 <listitem><para>
5003 <emphasis><filename>python-pycurl</filename>:</emphasis>
5004 Nothing is using this recipe in OpenEmbedded-Core
5005 (i.e. <filename>meta-oe</filename>).
5006 </para></listitem>
5007 <listitem><para>
5008 <emphasis><filename>python-six</filename>:</emphasis>
5009 This recipe was removed in favor of the Python 3 version.
5010 </para></listitem>
5011 <listitem><para>
5012 <emphasis><filename>python-smmap</filename>:</emphasis>
5013 This recipe was removed in favor of the Python 3 version.
5014 </para></listitem>
5015 <listitem><para>
5016 <emphasis><filename>remake</filename>:</emphasis>
5017 Using <filename>remake</filename> as the provider of
5018 <filename>virtual/make</filename> is broken.
5019 Consequently, this recipe is not needed in OpenEmbedded-Core.
5020 </para></listitem>
5021 </itemizedlist>
5022 </para>
5023 </section>
5024
5025 <section id='migration-2.4-kernel-device-tree-move'>
5026 <title>Kernel Device Tree Move</title>
5027
5028 <para>
5029 Kernel Device Tree support is now easier to enable in a kernel
5030 recipe.
5031 The Device Tree code has moved to a
Brad Bishop316dfdd2018-06-25 12:45:53 -04005032 <link linkend='ref-classes-kernel-devicetree'><filename>kernel-devicetree</filename></link>
5033 class.
Brad Bishopd7bf8c12018-02-25 22:55:05 -05005034 Functionality is automatically enabled for any recipe that inherits
5035 the
5036 <link linkend='ref-classes-kernel'><filename>kernel</filename></link>
5037 class and sets the
5038 <link linkend='var-KERNEL_DEVICETREE'><filename>KERNEL_DEVICETREE</filename></link>
5039 variable.
5040 The previous mechanism for doing this,
5041 <filename>meta/recipes-kernel/linux/linux-dtb.inc</filename>,
5042 is still available to avoid breakage, but triggers a
5043 deprecation warning.
5044 Future releases of the Yocto Project will remove
5045 <filename>meta/recipes-kernel/linux/linux-dtb.inc</filename>.
5046 It is advisable to remove any <filename>require</filename>
5047 statements that request
5048 <filename>meta/recipes-kernel/linux/linux-dtb.inc</filename>
5049 from any custom kernel recipes you might have.
5050 This will avoid breakage in post 2.4 releases.
5051 </para>
5052 </section>
5053
5054 <section id='migration-2.4-package-qa-changes'>
5055 <title>Package QA Changes</title>
5056
5057 <para>
5058 The following package QA changes took place:
5059 <itemizedlist>
5060 <listitem><para>
5061 The "unsafe-references-in-scripts" QA check has been
5062 removed.
5063 </para></listitem>
5064 <listitem><para>
5065 If you refer to <filename>${COREBASE}/LICENSE</filename>
5066 within
5067 <link linkend='var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></link>
5068 you receive a warning because this file is a description of
5069 the license for OE-Core.
5070 Use <filename>${COMMON_LICENSE_DIR}/MIT</filename>
5071 if your recipe is MIT-licensed and you cannot use the
5072 preferred method of referring to a file within the source
5073 tree.
5074 </para></listitem>
5075 </itemizedlist>
5076 </para>
5077 </section>
5078
5079 <section id='migration-2.4-readme-changes'>
5080 <title><filename>README</filename> File Changes</title>
5081
5082 <para>
5083 The following are changes to <filename>README</filename> files:
5084 <itemizedlist>
5085 <listitem><para>
5086 The main Poky <filename>README</filename> file has been
5087 moved to the <filename>meta-poky</filename> layer and
5088 has been renamed <filename>README.poky</filename>.
5089 A symlink has been created so that references to the old
5090 location work.
5091 </para></listitem>
5092 <listitem><para>
5093 The <filename>README.hardware</filename> file has been moved
5094 to <filename>meta-yocto-bsp</filename>.
5095 A symlink has been created so that references to the old
5096 location work.
5097 </para></listitem>
5098 <listitem><para>
5099 A <filename>README.qemu</filename> file has been created
5100 with coverage of the <filename>qemu*</filename> machines.
5101 </para></listitem>
5102 </itemizedlist>
5103 </para>
5104 </section>
5105
5106 <section id='migration-2.4-miscellaneous-changes'>
5107 <title>Miscellaneous Changes</title>
5108
5109 <para>
5110 The following are additional changes:
5111 <itemizedlist>
5112 <listitem><para>
5113 The <filename>ROOTFS_PKGMANAGE_BOOTSTRAP</filename>
5114 variable and any references to it have been removed.
5115 You should remove this variable from any custom recipes.
5116 </para></listitem>
5117 <listitem><para>
5118 The <filename>meta-yocto</filename> directory has been
5119 removed.
5120 <note>
5121 In the Yocto Project 2.1 release
5122 <filename>meta-yocto</filename> was renamed to
5123 <filename>meta-poky</filename> and the
5124 <filename>meta-yocto</filename> subdirectory remained
5125 to avoid breaking existing configurations.
5126 </note>
5127 </para></listitem>
5128 <listitem><para>
5129 The <filename>maintainers.inc</filename> file, which tracks
5130 maintainers by listing a primary person responsible for each
5131 recipe in OE-Core, has been moved from
5132 <filename>meta-poky</filename> to OE-Core (i.e. from
5133 <filename>meta-poky/conf/distro/include</filename> to
5134 <filename>meta/conf/distro/include</filename>).
5135 </para></listitem>
5136 <listitem><para>
5137 The
5138 <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
5139 class now makes a single commit per build rather than one
5140 commit per subdirectory in the repository.
5141 This behavior assumes the commits are enabled with
5142 <link linkend='var-BUILDHISTORY_COMMIT'><filename>BUILDHISTORY_COMMIT</filename></link>
5143 = "1", which is typical.
5144 Previously, the <filename>buildhistory</filename> class made
5145 one commit per subdirectory in the repository in order to
5146 make it easier to see the changes for a particular
5147 subdirectory.
5148 To view a particular change, specify that subdirectory as
5149 the last parameter on the <filename>git show</filename>
5150 or <filename>git diff</filename> commands.
5151 </para></listitem>
5152 <listitem><para>
5153 The <filename>x86-base.inc</filename> file, which is
5154 included by all x86-based machine configurations, now sets
5155 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
5156 using <filename>?=</filename> to "live" rather than
5157 appending with <filename>+=</filename>.
5158 This change makes the default easier to override.
5159 </para></listitem>
5160 <listitem><para>
5161 BitBake fires multiple "BuildStarted" events when
5162 multiconfig is enabled (one per configuration).
5163 For more information, see the
5164 "<ulink url='&YOCTO_DOCS_BB_URL;#events'>Events</ulink>"
Brad Bishop316dfdd2018-06-25 12:45:53 -04005165 section in the BitBake User Manual.
Brad Bishopd7bf8c12018-02-25 22:55:05 -05005166 </para></listitem>
5167 <listitem><para>
5168 By default, the <filename>security_flags.inc</filename> file
Brad Bishop316dfdd2018-06-25 12:45:53 -04005169 sets a
5170 <link linkend='var-GCCPIE'><filename>GCCPIE</filename></link>
5171 variable with an option to enable Position Independent
5172 Executables (PIE) within <filename>gcc</filename>.
Brad Bishopd7bf8c12018-02-25 22:55:05 -05005173 Enabling PIE in the GNU C Compiler (GCC), makes Return
5174 Oriented Programming (ROP) attacks much more difficult to
5175 execute.
5176 </para></listitem>
5177 <listitem><para>
5178 OE-Core now provides a
5179 <filename>bitbake-layers</filename> plugin that implements
5180 a "create-layer" subcommand.
5181 The implementation of this subcommand has resulted in the
5182 <filename>yocto-layer</filename> script being deprecated and
5183 will likely be removed in the next Yocto Project release.
5184 </para></listitem>
5185 <listitem><para>
5186 The <filename>vmdk</filename>, <filename>vdi</filename>,
5187 and <filename>qcow2</filename> image file types are now
5188 used in conjunction with the "wic" image type through
5189 <filename>CONVERSION_CMD</filename>.
5190 Consequently, the equivalent image types are now
5191 <filename>wic.vmdk</filename>, <filename>wic.vdi</filename>,
5192 and <filename>wic.qcow2</filename>, respectively.
5193 </para></listitem>
5194 <listitem><para>
5195 <filename>do_image_&lt;type&gt;[depends]</filename> has
5196 replaced <filename>IMAGE_DEPENDS_&lt;type&gt;</filename>.
5197 If you have your own classes that implement custom image
5198 types, then you need to update them.
5199 </para></listitem>
5200 <listitem><para>
5201 OpenSSL 1.1 has been introduced.
5202 However, the default is still 1.0.x through the
5203 <link linkend='var-PREFERRED_VERSION'><filename>PREFERRED_VERSION</filename></link>
5204 variable.
5205 This preference is set is due to the remaining compatibility
5206 issues with other software.
5207 The
5208 <link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
5209 variable in the openssl 1.0 recipe now includes "openssl10"
5210 as a marker that can be used in
5211 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
5212 within recipes that build software that still depend on
5213 OpenSSL 1.0.
5214 </para></listitem>
5215 <listitem><para>
5216 To ensure consistent behavior, BitBake's "-r" and "-R"
5217 options (i.e. prefile and postfile), which are used to
5218 read or post-read additional configuration files from the
5219 command line, now only affect the current BitBake command.
5220 Before these BitBake changes, these options would "stick"
5221 for future executions.
5222 </para></listitem>
5223 </itemizedlist>
5224 </para>
5225 </section>
5226</section>
Brad Bishop316dfdd2018-06-25 12:45:53 -04005227
5228<section id='moving-to-the-yocto-project-2.5-release'>
5229 <title>Moving to the Yocto Project 2.5 Release</title>
5230
5231 <para>
5232 This section provides migration information for moving to the
5233 Yocto Project 2.5 Release from the prior release.
5234 </para>
5235
5236 <section id='migration-2.5-packaging-changes'>
5237 <title>Packaging Changes</title>
5238
5239 <para>
5240 This section provides information about packaging changes that have
5241 occurred:
5242 <itemizedlist>
5243 <listitem><para>
5244 <emphasis><filename>bind-libs</filename>:</emphasis>
5245 The libraries packaged by the bind recipe are in a
5246 separate <filename>bind-libs</filename> package.
5247 </para></listitem>
5248 <listitem><para>
5249 <emphasis><filename>libfm-gtk</filename>:</emphasis>
5250 The <filename>libfm</filename> GTK+ bindings are split into
5251 a separate <filename>libfm-gtk</filename> package.
5252 </para></listitem>
5253 <listitem><para>
5254 <emphasis><filename>flex-libfl</filename>:</emphasis>
5255 The flex recipe splits out libfl into a separate
5256 <filename>flex-libfl</filename> package to avoid too many
5257 dependencies being pulled in where only the library is
5258 needed.
5259 </para></listitem>
5260 <listitem><para>
5261 <emphasis><filename>grub-efi</filename>:</emphasis>
5262 The <filename>grub-efi</filename> configuration is split
5263 into a separate <filename>grub-bootconf</filename>
5264 recipe.
5265 However, the dependency relationship from
5266 <filename>grub-efi</filename> is through a
5267 virtual/grub-bootconf provider making it possible to have
5268 your own recipe provide the dependency.
5269 Alternatively, you can use a BitBake append file to bring
5270 the configuration back into the
5271 <filename>grub-efi</filename> recipe.
5272 </para></listitem>
5273 <listitem><para>
5274 <emphasis>armv7a Legacy Package Feed Support:</emphasis>
5275 Legacy support is removed for transitioning from
5276 <filename>armv7a</filename> to
5277 <filename>armv7a-vfp-neon</filename> in package feeds,
5278 which was previously enabled by setting
5279 <filename>PKGARCHCOMPAT_ARMV7A</filename>.
5280 This transition occurred in 2011 and active package feeds
5281 should by now be updated to the new naming.
5282 </para></listitem>
5283 </itemizedlist>
5284 </para>
5285 </section>
5286
5287 <section id='migration-2.5-removed-recipes'>
5288 <title>Removed Recipes</title>
5289
5290 <para>
5291 The following recipes have been removed:
5292 <itemizedlist>
5293 <listitem><para>
5294 <emphasis><filename>gcc</filename>:</emphasis>
5295 The version 6.4 recipes are replaced by 7.x.
5296 </para></listitem>
5297 <listitem><para>
5298 <emphasis><filename>gst-player</filename>:</emphasis>
5299 Renamed to <filename>gst-examples</filename> as per
5300 upstream.
5301 </para></listitem>
5302 <listitem><para>
5303 <emphasis><filename>hostap-utils</filename>:</emphasis>
5304 This software package is obsolete.
5305 </para></listitem>
5306 <listitem><para>
5307 <emphasis><filename>latencytop</filename>:</emphasis>
5308 This recipe is no longer maintained upstream.
5309 The last release was in 2009.
5310 </para></listitem>
5311 <listitem><para>
5312 <emphasis><filename>libpfm4</filename>:</emphasis>
5313 The only file that requires this recipe is
5314 <filename>oprofile</filename>, which has been removed.
5315 </para></listitem>
5316 <listitem><para>
5317 <emphasis><filename>linux-yocto</filename>:</emphasis>
5318 The version 4.4, 4.9, and 4.10 recipes have been removed.
5319 Versions 4.12, 4.14, and 4.15 remain.
5320 </para></listitem>
5321 <listitem><para>
5322 <emphasis><filename>man</filename>:</emphasis>
5323 This recipe has been replaced by modern
5324 <filename>man-db</filename>
5325 </para></listitem>
5326 <listitem><para>
5327 <emphasis><filename>mkelfimage</filename>:</emphasis>
5328 This tool has been removed in the upstream coreboot project,
5329 and is no longer needed with the removal of the ELF image
5330 type.
5331 </para></listitem>
5332 <listitem><para>
5333 <emphasis><filename>nativesdk-postinst-intercept</filename>:</emphasis>
5334 This recipe is not maintained.
5335 </para></listitem>
5336 <listitem><para>
5337 <emphasis><filename>neon</filename>:</emphasis>
5338 This software package is no longer maintained upstream and
5339 is no longer needed by anything in OpenEmbedded-Core.
5340 </para></listitem>
5341 <listitem><para>
5342 <emphasis><filename>oprofile</filename>:</emphasis>
5343 The functionality of this recipe is replaced by
5344 <filename>perf</filename> and keeping compatibility on
5345 an ongoing basis with <filename>musl</filename> is
5346 difficult.
5347 </para></listitem>
5348 <listitem><para>
5349 <emphasis><filename>pax</filename>:</emphasis>
5350 This software package is obsolete.
5351 </para></listitem>
5352 <listitem><para>
5353 <emphasis><filename>stat</filename>:</emphasis>
5354 This software package is not maintained upstream.
5355 <filename>coreutils</filename> provides a modern stat binary.
5356 </para></listitem>
5357 <listitem><para>
5358 <emphasis><filename>zisofs-tools-native</filename>:</emphasis>
5359 This recipe is no longer needed because the compressed
5360 ISO image feature has been removed.
5361 </para></listitem>
5362 </itemizedlist>
5363 </para>
5364 </section>
5365
5366 <section id='migration-2.5-scripts-and-tools-changes'>
5367 <title>Scripts and Tools Changes</title>
5368
5369 <para>
5370 The following are changes to scripts and tools:
5371 <itemizedlist>
5372 <listitem><para>
5373 <emphasis><filename>yocto-bsp</filename>,
5374 <filename>yocto-kernel</filename>, and
5375 <filename>yocto-layer</filename></emphasis>:
5376 The <filename>yocto-bsp</filename>,
5377 <filename>yocto-kernel</filename>, and
5378 <filename>yocto-layer</filename> scripts previously shipped
5379 with poky but not in OpenEmbedded-Core have been removed.
5380 These scripts are not maintained and are outdated.
5381 In many cases, they are also limited in scope.
5382 The <filename>bitbake-layers create-layer</filename> command
5383 is a direct replacement for <filename>yocto-layer</filename>.
5384 See the documentation to create a BSP or kernel recipe in
5385 the
5386 "<ulink url='&YOCTO_DOCS_BSP_URL;#bsp-kernel-recipe-example'>BSP Kernel Recipe Example</ulink>"
5387 section.
5388 </para></listitem>
5389 <listitem><para>
5390 <emphasis><filename>devtool finish</filename>:</emphasis>
5391 <filename>devtool finish</filename> now exits with an error
5392 if there are uncommitted changes or a rebase/am in progress
5393 in the recipe's source repository.
5394 If this error occurs, there might be uncommitted changes
5395 that will not be included in updates to the patches applied
5396 by the recipe.
5397 A -f/--force option is provided for situations that the
5398 uncommitted changes are inconsequential and you want to
5399 proceed regardless.
5400 </para></listitem>
5401 <listitem><para>
5402 <emphasis><filename>scripts/oe-setup-rpmrepo</filename> script:</emphasis>
5403 The functionality of
5404 <filename>scripts/oe-setup-rpmrepo</filename> is replaced by
5405 <filename>bitbake package-index</filename>.
5406 </para></listitem>
5407 <listitem><para>
5408 <emphasis><filename>scripts/test-dependencies.sh</filename> script:</emphasis>
5409 The script is largely made obsolete by the
5410 recipe-specific sysroots functionality introduced in the
5411 previous release.
5412 </para></listitem>
5413 </itemizedlist>
5414 </para>
5415 </section>
5416
5417 <section id='migration-2.5-bitbake-changes'>
5418 <title>BitBake Changes</title>
5419
5420 <para>
5421 The following are BitBake changes:
5422 <itemizedlist>
5423 <listitem><para>
5424 The <filename>--runall</filename> option has changed.
5425 There are two different behaviors people might want:
5426 <itemizedlist>
5427 <listitem><para>
5428 <emphasis>Behavior A:</emphasis>
5429 For a given target (or set of targets) look through
5430 the task graph and run task X only if it is present
5431 and will be built.
5432 </para></listitem>
5433 <listitem><para>
5434 <emphasis>Behavior B:</emphasis>
5435 For a given target (or set of targets) look through
5436 the task graph and run task X if any recipe in the
5437 taskgraph has such a target, even if it is not in
5438 the original task graph.
5439 </para></listitem>
5440 </itemizedlist>
5441 The <filename>--runall</filename> option now performs
5442 "Behavior B".
5443 Previously <filename>--runall</filename> behaved like
5444 "Behavior A".
5445 A <filename>--runonly</filename> option has been added to
5446 retain the ability to perform "Behavior A".
5447 </para></listitem>
5448 <listitem><para>
5449 Several explicit "run this task for all recipes in the
5450 dependency tree" tasks have been removed (e.g.
5451 <filename>fetchall</filename>,
5452 <filename>checkuriall</filename>, and the
5453 <filename>*all</filename> tasks provided by the
5454 <filename>distrodata</filename> and
5455 <filename>archiver</filename> classes).
5456 There is a BitBake option to complete this for any arbitrary
5457 task. For example:
5458 <literallayout class='monospaced'>
5459 bitbake &lt;target&gt; -c fetchall
5460 </literallayout>
5461 should now be replaced with:
5462 <literallayout class='monospaced'>
5463 bitbake &lt;target&gt; --runall=fetch
5464 </literallayout>
5465 </para></listitem>
5466 </itemizedlist>
5467 </para>
5468 </section>
5469
5470 <section id='migration-2.5-python-and-python3-changes'>
5471 <title>Python and Python 3 Changes</title>
5472
5473 <para>
5474 The following are auto-packaging changes to Python and Python 3:
5475 </para>
5476 <para>
5477 The script-managed <filename>python-*-manifest.inc</filename> files
5478 that were previously used to generate Python and Python 3
5479 packages have been replaced with a JSON-based file that is
5480 easier to read and maintain.
5481 A new task is available for maintainers of the Python recipes to
5482 update the JSON file when upgrading to new Python versions.
5483 You can now edit the file directly instead of having to edit a
5484 script and run it to update the file.
5485 </para>
5486 <para>
5487 One particular change to note is that the Python recipes no longer
5488 have build-time provides for their packages.
5489 This assumes <filename>python-foo</filename> is one of the packages
5490 provided by the Python recipe.
5491 You can no longer run <filename>bitbake python-foo</filename> or
5492 have a <ulink url='&YOCTO_DOCS_REF_URL;#var-DEPENDS'><filename>DEPENDS</filename></ulink> on
5493 <filename>python-foo</filename>, but doing either of the following
5494 causes the package to work as expected:
5495 <literallayout class='monospaced'>
5496 IMAGE_INSTALL_append = " python-foo"
5497 </literallayout>
5498 or
5499 <literallayout class='monospaced'>
5500 RDEPENDS_${PN} = "python-foo"
5501 </literallayout>
5502 The earlier build-time provides behavior was a quirk of the way the
5503 Python manifest file was created.
5504 For more information on this change please see
5505 <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=8d94b9db221d1def42f091b991903faa2d1651ce'>this commit</ulink>.
5506 </para>
5507 </section>
5508
5509 <section id='migration-2.5-miscellaneous-changes'>
5510 <title>Miscellaneous Changes</title>
5511
5512 <para>
5513 The following are additional changes:
5514 <itemizedlist>
5515 <listitem><para>
5516 The <filename>kernel</filename> class supports building
5517 packages for multiple kernels.
5518 If your kernel recipe or <filename>.bbappend</filename> file
5519 mentions packaging at all, you should replace references to
5520 the kernel in package names with
5521 <filename>${KERNEL_PACKAGE_NAME}</filename>.
5522 For example, if you disable automatic installation of the
5523 kernel image using
5524 <filename>RDEPENDS_kernel-base = ""</filename> you can avoid
5525 warnings using
5526 <filename>RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""</filename>
5527 instead.
5528 </para></listitem>
5529 <listitem><para>
5530 The <filename>buildhistory</filename> class commits changes
5531 to the repository by default so you no longer need to set
5532 <filename>BUILDHISTORY_COMMIT = "1"</filename>.
5533 If you want to disable commits you need to set
5534 <filename>BUILDHISTORY_COMMIT = "0"</filename> in your
5535 configuration.
5536 </para></listitem>
5537 <listitem><para>
5538 The <filename>beaglebone</filename> reference machine has
5539 been renamed to <filename>beaglebone-yocto</filename>.
5540 The <filename>beaglebone-yocto</filename> BSP is a reference
5541 implementation using only mainline components available in
5542 OpenEmbedded-Core and <filename>meta-yocto-bsp</filename>,
5543 whereas Texas Instruments maintains a full-featured BSP in
5544 the <filename>meta-ti</filename> layer.
5545 This rename avoids the previous name clash that existed
5546 between the two BSPs.
5547 </para></listitem>
5548 <listitem><para>
5549 The <filename>update-alternatives</filename> class no longer
5550 works with SysV <filename>init</filename> scripts because
5551 this usage has been problematic.
5552 Also, the <filename>sysklogd</filename> recipe no longer
5553 uses <filename>update-alternatives</filename> because it is
5554 incompatible with other implementations.
5555 </para></listitem>
5556 <listitem><para>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -08005557 By default, the
5558 <link linkend='ref-classes-cmake'><filename>cmake</filename></link>
5559 class uses <filename>ninja</filename> instead of
Brad Bishop316dfdd2018-06-25 12:45:53 -04005560 <filename>make</filename> for building.
5561 This improves build performance.
5562 If a recipe is broken with <filename>ninja</filename>, then
5563 the recipe can set
5564 <filename>OECMAKE_GENERATOR = "Unix Makefiles"</filename>
5565 to change back to <filename>make</filename>.
5566 </para></listitem>
5567 <listitem><para>
5568 The previously deprecated <filename>base_*</filename>
5569 functions have been removed in favor of their replacements
5570 in <filename>meta/lib/oe</filename> and
5571 <filename>bitbake/lib/bb</filename>.
5572 These are typically used from recipes and classes.
5573 Any references to the old functions must be updated.
5574 The following table shows the removed functions and their
5575 replacements:
5576
5577 <literallayout class='monospaced'>
5578 <emphasis>Removed</emphasis> <emphasis>Replacement</emphasis>
5579 ============================ ============================
5580 base_path_join() oe.path.join()
5581 base_path_relative() oe.path.relative()
5582 base_path_out() oe.path.format_display()
5583 base_read_file() oe.utils.read_file()
5584 base_ifelse() oe.utils.ifelse()
5585 base_conditional() oe.utils.conditional()
5586 base_less_or_equal() oe.utils.less_or_equal()
5587 base_version_less_or_equal() oe.utils.version_less_or_equal()
5588 base_contains() bb.utils.contains()
5589 base_both_contain() oe.utils.both_contain()
5590 base_prune_suffix() oe.utils.prune_suffix()
5591 oe_filter() oe.utils.str_filter()
5592 oe_filter_out() oe.utils.str_filter_out() (or use the _remove operator).
5593 </literallayout>
5594 </para></listitem>
5595 <listitem><para>
5596 Using <filename>exit 1</filename> to explicitly defer a
5597 postinstall script until first boot is now deprecated since
5598 it is not an obvious mechanism and can mask actual errors.
5599 If you want to explicitly defer a postinstall to first boot
5600 on the target rather than at <filename>rootfs</filename>
5601 creation time, use
5602 <filename>pkg_postinst_ontarget()</filename>
5603 or call
5604 <filename>postinst-intercepts defer_to_first_boot</filename>
5605 from <filename>pkg_postinst()</filename>.
5606 Any failure of a <filename>pkg_postinst()</filename>
5607 script (including <filename>exit 1</filename>)
5608 will trigger a warning during
Brad Bishop1a4b7ee2018-12-16 17:11:34 -08005609 <filename>do_rootfs</filename>.</para>
5610
5611 <para>For more information, see the
5612 "<ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-post-installation-scripts'>Post-Installation Scripts</ulink>"
5613 section in the Yocto Project Development Tasks Manual.
Brad Bishop316dfdd2018-06-25 12:45:53 -04005614 </para></listitem>
5615 <listitem><para>
5616 The <filename>elf</filename> image type has been removed.
5617 This image type was removed because the
5618 <filename>mkelfimage</filename> tool
5619 that was required to create it is no longer provided by
5620 coreboot upstream and required updating every time
5621 <filename>binutils</filename> updated.
5622 </para></listitem>
5623 <listitem><para>
5624 Support for .iso image compression (previously enabled
5625 through <filename>COMPRESSISO = "1"</filename>) has been
5626 removed.
5627 The userspace tools (<filename>zisofs-tools</filename>) are
5628 unmaintained and <filename>squashfs</filename> provides
5629 better performance and compression.
5630 In order to build a live image with squashfs+lz4 compression
5631 enabled you should now set
5632 <filename>LIVE_ROOTFS_TYPE = "squashfs-lz4"</filename>
5633 and ensure that <filename>live</filename>
5634 is in <filename>IMAGE_FSTYPES</filename>.
5635 </para></listitem>
5636 <listitem><para>
5637 Recipes with an unconditional dependency on
5638 <filename>libpam</filename> are only buildable with
5639 <filename>pam</filename> in
5640 <filename>DISTRO_FEATURES</filename>.
5641 If the dependency is truly optional then it is recommended
5642 that the dependency be conditional upon
5643 <filename>pam</filename> being in
5644 <filename>DISTRO_FEATURES</filename>.
5645 </para></listitem>
5646 <listitem><para>
5647 For EFI-based machines, the bootloader
5648 (<filename>grub-efi</filename> by default) is installed into
5649 the image at /boot.
5650 Wic can be used to split the bootloader into separate boot
5651 and rootfs partitions if necessary.
5652 </para></listitem>
5653 <listitem><para>
5654 Patches whose context does not match exactly (i.e. where
5655 patch reports "fuzz" when applying) will generate a
5656 warning.
5657 For an example of this see
5658 <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=cc97bc08125b63821ce3f616771830f77c456f57'>this commit</ulink>.
5659 </para></listitem>
5660 <listitem><para>
5661 Layers are expected to set
5662 <filename>LAYERSERIES_COMPAT_layername</filename>
5663 to match the version(s) of OpenEmbedded-Core they are
5664 compatible with.
5665 This is specified as codenames using spaces to separate
5666 multiple values (e.g. "rocko sumo").
5667 If a layer does not set
5668 <filename>LAYERSERIES_COMPAT_layername</filename>, a warning
5669 will is shown.
5670 If a layer sets a value that does not include the current
5671 version ("sumo" for the 2.5 release), then an error will be
5672 produced.
5673 </para></listitem>
5674 <listitem><para>
5675 The <filename>TZ</filename> environment variable is set to
5676 "UTC" within the build environment in order to fix
5677 reproducibility problems in some recipes.
5678 </para></listitem>
5679 </itemizedlist>
5680 </para>
5681 </section>
5682</section>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -08005683
5684<section id='moving-to-the-yocto-project-2.6-release'>
5685 <title>Moving to the Yocto Project 2.6 Release</title>
5686
5687 <para>
5688 This section provides migration information for moving to the
5689 Yocto Project 2.6 Release from the prior release.
5690 </para>
5691
5692 <section id='migration-2.6-gcc-changes'>
5693 <title>GCC 8.2 is Now Used by Default</title>
5694
5695 <para>
5696 The GNU Compiler Collection version 8.2 is now used by default
5697 for compilation.
5698 For more information on what has changed in the GCC 8.x release,
5699 see
5700 <ulink url='https://gcc.gnu.org/gcc-8/changes.html'></ulink>.
5701 </para>
5702
5703 <para>
5704 If you still need to compile with version 7.x, GCC 7.3 is
5705 also provided.
5706 You can select this version by setting the
5707 and can be selected by setting the
5708 <link linkend='var-GCCVERSION'><filename>GCCVERSION</filename></link>
5709 variable to "7.%" in your configuration.
5710 </para>
5711 </section>
5712
5713 <section id='migration-2.6-removed-recipes'>
5714 <title>Removed Recipes</title>
5715
5716 <para>
5717 The following recipes have been removed:
5718 <literallayout class='monospaced'>
5719 <emphasis><filename>beecrypt</filename>:</emphasis> No longer needed since moving to RPM 4.
5720 <emphasis><filename>bigreqsproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5721 <emphasis><filename>calibrateproto</filename>:</emphasis> Removed in favor of <filename>xinput</filename>.
5722 <emphasis><filename>compositeproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5723 <emphasis><filename>damageproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5724 <emphasis><filename>dmxproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5725 <emphasis><filename>dri2proto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5726 <emphasis><filename>dri3proto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5727 <emphasis><filename>eee-acpi-scripts</filename>:</emphasis> Became obsolete.
5728 <emphasis><filename>fixesproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5729 <emphasis><filename>fontsproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5730 <emphasis><filename>fstests</filename>:</emphasis> Became obsolete.
5731 <emphasis><filename>gccmakedep</filename>:</emphasis> No longer used.
5732 <emphasis><filename>glproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5733 <emphasis><filename>gnome-desktop3</filename>:</emphasis> No longer needed. This recipe has moved to <filename>meta-oe</filename>.
5734 <emphasis><filename>icon-naming-utils</filename>:</emphasis> No longer used since the Sato theme was removed in 2016.
5735 <emphasis><filename>inputproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5736 <emphasis><filename>kbproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5737 <emphasis><filename>libusb-compat</filename>:</emphasis> Became obsolete.
5738 <emphasis><filename>libuser</filename>:</emphasis> Became obsolete.
5739 <emphasis><filename>libnfsidmap</filename>:</emphasis> No longer an external requirement since <filename>nfs-utils</filename> 2.2.1. <filename>libnfsidmap</filename> is now integrated.
5740 <emphasis><filename>libxcalibrate</filename>:</emphasis> No longer needed with <filename>xinput</filename>
5741 <emphasis><filename>mktemp</filename>:</emphasis> Became obsolete. The <filename>mktemp</filename> command is provided by both <filename>busybox</filename> and <filename>coreutils</filename>.
5742 <emphasis><filename>ossp-uuid</filename>:</emphasis> Is not being maintained and has mostly been replaced by <filename>uuid.h</filename> in <filename>util-linux</filename>.
5743 <emphasis><filename>pax-utils</filename>:</emphasis> No longer needed. Previous QA tests that did use this recipe are now done at build time.
5744 <emphasis><filename>pcmciautils</filename>:</emphasis> Became obsolete.
5745 <emphasis><filename>pixz</filename>:</emphasis> No longer needed. <filename>xz</filename> now supports multi-threaded compression.
5746 <emphasis><filename>presentproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5747 <emphasis><filename>randrproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5748 <emphasis><filename>recordproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5749 <emphasis><filename>renderproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5750 <emphasis><filename>resourceproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5751 <emphasis><filename>scrnsaverproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5752 <emphasis><filename>trace-cmd</filename>:</emphasis> Became obsolete. <filename>perf</filename> replaced this recipe's functionally.
5753 <emphasis><filename>videoproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5754 <emphasis><filename>wireless-tools</filename>:</emphasis> Became obsolete. Superseded by <filename>iw</filename>.
5755 <emphasis><filename>xcmiscproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5756 <emphasis><filename>xextproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5757 <emphasis><filename>xf86dgaproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5758 <emphasis><filename>xf86driproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5759 <emphasis><filename>xf86miscproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5760 <emphasis><filename>xf86-video-omapfb</filename>:</emphasis> Became obsolete. Use kernel modesetting driver instead.
5761 <emphasis><filename>xf86-video-omap</filename>:</emphasis> Became obsolete. Use kernel modesetting driver instead.
5762 <emphasis><filename>xf86vidmodeproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5763 <emphasis><filename>xineramaproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5764 <emphasis><filename>xproto</filename>:</emphasis> Replaced by <filename>xorgproto</filename>.
5765 <emphasis><filename>yasm</filename>:</emphasis> No longer needed since previous usages are now satisfied by <filename>nasm</filename>.
5766 </literallayout>
5767 </para>
5768 </section>
5769
5770 <section id='migration-2.6-packaging-changes'>
5771 <title>Packaging Changes</title>
5772
5773 <para>
5774 The following packaging changes have been made:
5775 <itemizedlist>
5776 <listitem><para>
5777 <emphasis><filename>cmake</filename>:</emphasis>
5778 <filename>cmake.m4</filename> and
5779 <filename>toolchain</filename> files have been moved to the
5780 main package.
5781 </para></listitem>
5782 <listitem><para>
5783 <emphasis><filename>iptables</filename>:</emphasis>
5784 The <filename>iptables</filename> modules have been split
5785 into separate packages.
5786 </para></listitem>
5787 <listitem><para>
5788 <emphasis><filename>alsa-lib</filename>:</emphasis>
5789 <filename>libasound</filename> is now in the main
5790 <filename>alsa-lib</filename> package instead of
5791 <filename>libasound</filename>.
5792 </para></listitem>
5793 <listitem><para>
5794 <emphasis><filename>glibc</filename>:</emphasis>
5795 <filename>libnss-db</filename> is now in its own package
5796 along with a <filename>/var/db/makedbs.sh</filename>
5797 script to update databases.
5798 </para></listitem>
5799 <listitem><para>
5800 <emphasis><filename>python</filename> and <filename>python3</filename>:</emphasis>
5801 The main package has been removed from the recipe.
5802 You must install specific packages or
5803 <filename>python-modules</filename> /
5804 <filename>python3-modules</filename> for everything.
5805 </para></listitem>
5806 <listitem><para>
5807 <emphasis><filename>systemtap</filename>:</emphasis>
5808 Moved <filename>systemtap-exporter</filename> into its own
5809 package.
5810 </para></listitem>
5811 </itemizedlist>
5812 </para>
5813 </section>
5814
5815 <section id='migration-2.6-xorg-protocol-dependencies'>
5816 <title>XOrg Protocol dependencies</title>
5817
5818 <para>
5819 The "*proto" upstream repositories have been combined into one
5820 "xorgproto" repository.
5821 Thus, the corresponding recipes have also been combined into a
5822 single <filename>xorgproto</filename> recipe.
5823 Any recipes that depend upon the older <filename>*proto</filename>
5824 recipes need to be changed to depend on the newer
5825 <filename>xorgproto</filename> recipe instead.
5826 </para>
5827
5828 <para>
5829 For names of recipes removed because of this repository change,
5830 see the
5831 <link linkend="migration-2.6-removed-recipes">Removed Recipes</link>
5832 section.
5833 </para>
5834 </section>
5835
5836 <section id='migration-2.6-distutils-distutils3-fetching-dependencies'>
5837 <title><filename>distutils</filename> and <filename>distutils3</filename> Now Prevent Fetching Dependencies During the <filename>do_configure</filename> Task</title>
5838
5839 <para>
5840 Previously, it was possible for Python recipes that inherited
5841 the
5842 <link linkend='ref-classes-distutils'><filename>distutils</filename></link>
5843 and
5844 <link linkend='ref-classes-distutils3'><filename>distutils3</filename></link>
5845 classes to fetch code during the
5846 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
5847 task to satisfy dependencies mentioned in
5848 <filename>setup.py</filename> if those dependencies were not
5849 provided in the sysroot (i.e. recipes providing the dependencies
5850 were missing from
5851 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>).
5852 <note>
5853 This change affects classes beyond just the two mentioned
5854 (i.e. <filename>distutils</filename> and
5855 <filename>distutils3</filename>).
5856 Any recipe that inherits <filename>distutils*</filename>
5857 classes are affected.
5858 For example, the <filename>setuptools</filename> and
5859 <filename>setuptools3</filename> recipes are affected since
5860 they inherit the <filename>distutils*</filename> classes.
5861 </note>
5862 </para>
5863
5864 <para>
5865 Fetching these types of dependencies that are not provided in the
5866 sysroot negatively affects the ability to reproduce builds.
5867 This type of fetching is now explicitly disabled.
5868 Consequently, any missing dependencies in Python recipes that
5869 use these classes now result in an error during the
5870 <filename>do_configure</filename> task.
5871 </para>
5872 </section>
5873
5874 <section id='migration-2.6-linux-yocto-configuration-audit-issues-now-correctly-reported'>
5875 <title><filename>linux-yocto</filename> Configuration Audit Issues Now Correctly Reported</title>
5876
5877 <para>
5878 Due to a bug, the kernel configuration audit functionality was
5879 not writing out any resulting warnings during the build.
5880 This issue is now corrected.
5881 You might notice these warnings now if you have a custom kernel
5882 configuration with a <filename>linux-yocto</filename> style
5883 kernel recipe.
5884 </para>
5885 </section>
5886
5887 <section id='migration-2.6-image-kernel-artifact-naming-changes'>
5888 <title>Image/Kernel Artifact Naming Changes</title>
5889
5890 <para>
5891 The following changes have been made:
5892 <itemizedlist>
5893 <listitem><para>
5894 Name variables (e.g.
5895 <link linkend='var-IMAGE_NAME'><filename>IMAGE_NAME</filename></link>)
5896 use a new <filename>IMAGE_VERSION_SUFFIX</filename>
5897 variable instead of
5898 <link linkend='var-DATETIME'><filename>DATETIME</filename></link>.
5899 Using <filename>IMAGE_VERSION_SUFFIX</filename> allows
5900 easier and more direct changes.</para>
5901
5902 <para>The <filename>IMAGE_VERSION_SUFFIX</filename>
5903 variable is set in the
5904 <filename>bitbake.conf</filename> configuration file as
5905 follows:
5906 <literallayout class='monospaced'>
5907 IMAGE_VERSION_SUFFIX = "-${DATETIME}"
5908 </literallayout>
5909 </para></listitem>
5910 <listitem><para>
5911 Several variables have changed names for consistency:
5912 <literallayout class='monospaced'>
5913 Old Variable Name New Variable Name
5914 ========================================================
5915 KERNEL_IMAGE_BASE_NAME <link linkend='var-KERNEL_IMAGE_NAME'>KERNEL_IMAGE_NAME</link>
5916 KERNEL_IMAGE_SYMLINK_NAME <link linkend='var-KERNEL_IMAGE_LINK_NAME'>KERNEL_IMAGE_LINK_NAME</link>
5917 MODULE_TARBALL_BASE_NAME <link linkend='var-MODULE_TARBALL_NAME'>MODULE_TARBALL_NAME</link>
5918 MODULE_TARBALL_SYMLINK_NAME <link linkend='var-MODULE_TARBALL_LINK_NAME'>MODULE_TARBALL_LINK_NAME</link>
5919 INITRAMFS_BASE_NAME <link linkend='var-INITRAMFS_NAME'>INITRAMFS_NAME</link>
5920 </literallayout>
5921 </para></listitem>
5922 <listitem><para>
5923 The <filename>MODULE_IMAGE_BASE_NAME</filename> variable
5924 has been removed.
5925 The module tarball name is now controlled directly with the
5926 <link linkend='var-MODULE_TARBALL_NAME'><filename>MODULE_TARBALL_NAME</filename></link>
5927 variable.
5928 </para></listitem>
5929 <listitem><para>
5930 The
5931 <link linkend='var-KERNEL_DTB_NAME'><filename>KERNEL_DTB_NAME</filename></link>
5932 and
5933 <link linkend='var-KERNEL_DTB_LINK_NAME'><filename>KERNEL_DTB_LINK_NAME</filename></link>
5934 variables have been introduced to control kernel Device
5935 Tree Binary (DTB) artifact names instead of mangling
5936 <filename>KERNEL_IMAGE_*</filename> variables.
5937 </para></listitem>
5938 <listitem><para>
5939 The
5940 <link linkend='var-KERNEL_FIT_NAME'><filename>KERNEL_FIT_NAME</filename></link>
5941 and
5942 <link linkend='var-KERNEL_FIT_LINK_NAME'><filename>KERNEL_FIT_LINK_NAME</filename></link>
5943 variables have been introduced to specify the name of
5944 flattened image tree (FIT) kernel images similar to other
5945 deployed artifacts.
5946 </para></listitem>
5947 <listitem><para>
5948 The
5949 <link linkend='var-MODULE_TARBALL_NAME'><filename>MODULE_TARBALL_NAME</filename></link>
5950 and
5951 <link linkend='var-MODULE_TARBALL_LINK_NAME'><filename>MODULE_TARBALL_LINK_NAME</filename></link>
5952 variable values no longer include the "module-" prefix or
5953 ".tgz" suffix.
5954 These parts are now hardcoded so that the values are
5955 consistent with other artifact naming variables.
5956 </para></listitem>
5957 <listitem><para>
5958 Added the
5959 <link linkend='var-INITRAMFS_LINK_NAME'><filename>INITRAMFS_LINK_NAME</filename></link>
5960 variable so that the symlink can be controlled similarly
5961 to other artifact types.
5962 </para></listitem>
5963 <listitem><para>
5964 <link linkend='var-INITRAMFS_NAME'><filename>INITRAMFS_NAME</filename></link>
5965 now uses
5966 "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
5967 instead of
5968 "${PV}-${PR}-${MACHINE}-${DATETIME}", which
5969 makes it consistent with other variables.
5970 </para></listitem>
5971 </itemizedlist>
5972 </para>
5973 </section>
5974
5975 <section id='migration-2.6-serial-console-deprecated'>
5976 <title><filename>SERIAL_CONSOLE</filename> Deprecated</title>
5977
5978 <para>
5979 The
5980 <link linkend='var-SERIAL_CONSOLE'><filename>SERIAL_CONSOLE</filename></link>
5981 variable has been functionally replaced by the
5982 <link linkend='var-SERIAL_CONSOLES'><filename>SERIAL_CONSOLES</filename></link>
5983 variable for some time.
5984 With the Yocto Project 2.6 release,
5985 <filename>SERIAL_CONSOLE</filename> has been officially deprecated.
5986 </para>
5987
5988 <para>
5989 <filename>SERIAL_CONSOLE</filename> will continue to work as
5990 before for the 2.6 release.
5991 However, for the sake of future compatibility, it is recommended
5992 that you replace all instances of
5993 <filename>SERIAL_CONSOLE</filename> with
5994 <filename>SERIAL_CONSOLES</filename>.
5995 <note>
5996 The only difference in usage is that
5997 <filename>SERIAL_CONSOLES</filename> expects entries to be
5998 separated using semicolons as compared to
5999 <filename>SERIAL_CONSOLE</filename>, which expects spaces.
6000 </note>
6001 </para>
6002 </section>
6003
6004 <section id='migration-2.6-poky-sets-unknown-configure-option-to-qa-error'>
6005 <title>Configure Script Reports Unknown Options as Errors</title>
6006
6007 <para>
6008 If the configure script reports an unknown option, this now
6009 triggers a QA error instead of a warning.
6010 Any recipes that previously got away with specifying such unknown
6011 options now need to be fixed.
6012 </para>
6013 </section>
6014
6015 <section id='migration-2.6-override-changes'>
6016 <title>Override Changes</title>
6017
6018 <para>
6019 The following changes have occurred:
6020 <itemizedlist>
6021 <listitem><para>
6022 <emphasis>The <filename>virtclass-native</filename> and
6023 <filename>virtclass-nativesdk</filename> Overrides Have
6024 Been Removed:</emphasis>
6025 The <filename>virtclass-native</filename> and
6026 <filename>virtclass-nativesdk</filename> overrides have
6027 been deprecated since 2012 in favor of
6028 <filename>class-native</filename> and
6029 <filename>class-nativesdk</filename>, respectively.
6030 Both <filename>virtclass-native</filename> and
6031 <filename>virtclass-nativesdk</filename> are now dropped.
6032 <note>
6033 The <filename>virtclass-multilib-</filename> overrides
6034 for multilib are still valid.
6035 </note>
6036 </para></listitem>
6037 <listitem><para>
6038 <emphasis>The <filename>forcevariable</filename>
6039 Override Now Has a Higher Priority Than
6040 <filename>libc</filename> Overrides:</emphasis>
6041 The <filename>forcevariable</filename> override is
6042 documented to be the highest priority override.
6043 However, due to a long-standing quirk of how
6044 <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
6045 is set, the <filename>libc</filename> overrides (e.g.
6046 <filename>libc-glibc</filename>,
6047 <filename>libc-musl</filename>, and so forth) erroneously
6048 had a higher priority.
6049 This issue is now corrected.</para>
6050
6051 <para>It is likely this change will not cause any
6052 problems.
6053 However, it is possible with some unusual configurations
6054 that you might see a change in behavior if you were
6055 relying on the previous behavior.
6056 Be sure to check how you use
6057 <filename>forcevariable</filename> and
6058 <filename>libc-*</filename> overrides in your custom
6059 layers and configuration files to ensure they make sense.
6060 </para></listitem>
6061 <listitem><para>
6062 <emphasis>The <filename>build-${BUILD_OS}</filename>
6063 Override Has Been Removed:</emphasis>
6064 The <filename>build-${BUILD_OS}</filename>, which is
6065 typically <filename>build-linux</filename>, override has
6066 been removed because building on a host operating system
6067 other than a recent version of Linux is neither supported
6068 nor recommended.
6069 Dropping the override avoids giving the impression that
6070 other host operating systems might be supported.
6071 </para></listitem>
6072 <listitem><para>
6073 The "_remove" operator now preserves whitespace.
6074 Consequently, when specifying list items to remove, be
6075 aware that leading and trailing whitespace resulting from
6076 the removal is retained.</para>
6077
6078 <para>See the
6079 "<ulink url='&YOCTO_DOCS_BB_URL;#removing-override-style-syntax'>Removal (Override Style Syntax)</ulink>"
6080 section in the BitBake User Manual for a detailed example.
6081 </para></listitem>
6082 </itemizedlist>
6083 </para>
6084 </section>
6085
6086 <section id='migration-2.6-systemd-configuration-now-split-out-to-system-conf'>
6087 <title><filename>systemd</filename> Configuration is Now Split Into <filename>systemd-conf</filename></title>
6088
6089 <para>
6090 The configuration for the <filename>systemd</filename> recipe
6091 has been moved into a <filename>system-conf</filename> recipe.
6092 Moving this configuration to a separate recipe avoids the
6093 <filename>systemd</filename> recipe from becoming machine-specific
6094 for cases where machine-specific configurations need to be applied
6095 (e.g. for <filename>qemu*</filename> machines).
6096 </para>
6097
6098 <para>
6099 Currently, the new recipe packages the following files:
6100 <literallayout class='monospaced'>
6101 ${sysconfdir}/machine-id
6102 ${sysconfdir}/systemd/coredump.conf
6103 ${sysconfdir}/systemd/journald.conf
6104 ${sysconfdir}/systemd/logind.conf
6105 ${sysconfdir}/systemd/system.conf
6106 ${sysconfdir}/systemd/user.conf
6107 </literallayout>
6108 If you previously used bbappend files to append the
6109 <filename>systemd</filename> recipe to change any of the
6110 listed files, you must do so for the
6111 <filename>systemd-conf</filename> recipe instead.
6112 </para>
6113 </section>
6114
6115 <section id='migration-2.6-automatic-testing-changes'>
6116 <title>Automatic Testing Changes</title>
6117
6118 <para>
6119 This section provides information about automatic testing
6120 changes:
6121 <itemizedlist>
6122 <listitem><para>
6123 <emphasis><filename>TEST_IMAGE</filename> Variable Removed:</emphasis>
6124 Prior to this release, you set the
6125 <filename>TEST_IMAGE</filename> variable to "1" to
6126 enable automatic testing for successfully built images.
6127 The <filename>TEST_IMAGE</filename> variable no longer
6128 exists and has been replaced by the
6129 <link linkend='var-TESTIMAGE_AUTO'><filename>TESTIMAGE_AUTO</filename></link>
6130 variable.
6131 </para></listitem>
6132 <listitem><para>
6133 <emphasis>Inheriting the <filename>testimage</filename> and
6134 <filename>testsdk</filename> Classes:</emphasis>
6135 Best practices now dictate that you use the
6136 <link linkend='var-IMAGE_CLASSES'><filename>IMAGE_CLASSES</filename></link>
6137 variable rather than the
6138 <link linkend='var-INHERIT'><filename>INHERIT</filename></link>
6139 variable when you inherit the
6140 <link linkend='ref-classes-testimage*'><filename>testimage</filename></link>
6141 and
6142 <link linkend='ref-classes-testsdk'><filename>testsdk</filename></link>
6143 classes used for automatic testing.
6144 </para></listitem>
6145 </itemizedlist>
6146 </para>
6147 </section>
6148
6149 <section id='migration-2.6-openssl-changes'>
6150 <title>OpenSSL Changes</title>
6151
6152 <para>
6153 <ulink url='https://www.openssl.org/'>OpenSSL</ulink> has been
6154 upgraded from 1.0 to 1.1.
6155 By default, this upgrade could cause problems for recipes that
6156 have both versions in their dependency chains.
6157 The problem is that both versions cannot be installed together
6158 at build time.
6159 <note>
6160 It is possible to have both versions of the library at runtime.
6161 </note>
6162 </para>
6163 </section>
6164
6165 <section id='migration-2.6-bitbake-changes'>
6166 <title>BitBake Changes</title>
6167
6168 <para>
6169 The server logfile <filename>bitbake-cookerdaemon.log</filename> is
6170 now always placed in the
6171 <link linkend='build-directory'>Build Directory</link>
6172 instead of the current directory.
6173 </para>
6174 </section>
6175
6176 <section id='migration-2.6-security-changes'>
6177 <title>Security Changes</title>
6178
6179 <para>
6180 The Poky distribution now uses security compiler flags by
6181 default.
6182 Inclusion of these flags could cause new failures due to stricter
6183 checking for various potential security issues in code.
6184 </para>
6185 </section>
6186
6187 <section id='migration-2.6-post-installation-changes'>
6188 <title>Post Installation Changes</title>
6189
6190 <para>
6191 You must explicitly mark post installs to defer to the target.
6192 If you want to explicitly defer a postinstall to first boot on
6193 the target rather than at rootfs creation time, use
6194 <filename>pkg_postinst_ontarget()</filename> or call
6195 <filename>postinst-intercepts defer_to_first_boot</filename> from
6196 <filename>pkg_postinst()</filename>.
6197 Any failure of a <filename>pkg_postinst()</filename> script
6198 (including exit 1) triggers an error during the
6199 <link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link> task.
6200 </para>
6201
6202 <para>
6203 For more information on post-installation behavior, see the
6204 "<ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-post-installation-scripts'>Post-Installation Scripts</ulink>"
6205 section in the Yocto Project Development Tasks Manual.
6206 </para>
6207 </section>
6208
6209 <section id='migration-2.6-python-3-profile-guided-optimizations'>
6210 <title>Python 3 Profile-Guided Optimization</title>
6211
6212 <para>
6213 The <filename>python3</filename> recipe now enables profile-guided
6214 optimization.
6215 Using this optimization requires a little extra build time in
6216 exchange for improved performance on the target at runtime.
6217 Additionally, the optimization is only enabled if the current
6218 <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
6219 has support for user-mode emulation in QEMU (i.e. "qemu-usermode"
6220 is in
6221 <link linkend='var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></link>,
6222 which it is by default).
6223 </para>
6224
6225 <para>
6226 If you wish to disable Python profile-guided optimization
6227 regardless of the value of
6228 <filename>MACHINE_FEATURES</filename>, then ensure that
6229 <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
6230 for the <filename>python3</filename> recipe does not contain "pgo".
6231 You could accomplish the latter using the following at the
6232 configuration level:
6233 <literallayout class='monospaced'>
6234 PACKAGECONFIG_remove_pn-python3 = "pgo"
6235 </literallayout>
6236 Alternatively, you can set
6237 <filename>PACKAGECONFIG</filename> using an append file for the
6238 <filename>python3</filename> recipe.
6239 </para>
6240 </section>
6241
6242 <section id='migration-2.6-miscellaneous-changes'>
6243 <title>Miscellaneous Changes</title>
6244
6245 <para>
6246 The following miscellaneous changes occurred:
6247 <itemizedlist>
6248 <listitem><para>
6249 Default to using the Thumb-2 instruction set for armv7a
6250 and above.
6251 If you have any custom recipes that build software that
6252 needs to be built with the ARM instruction set, change the
6253 recipe to set the instruction set as follows:
6254 <literallayout class='monospaced'>
6255 ARM_INSTRUCTION_SET = "arm"
6256 </literallayout>
6257 </para></listitem>
6258 <listitem><para>
6259 <filename>run-postinsts</filename> no longer uses
6260 <filename>/etc/*-postinsts</filename> for
6261 <filename>dpkg/opkg</filename> in favor of built-in
6262 postinst support.
6263 RPM behavior remains unchanged.
6264 </para></listitem>
6265 <listitem><para>
6266 The <filename>NOISO</filename> and
6267 <filename>NOHDD</filename> variables are no longer used.
6268 You now control building <filename>*.iso</filename> and
6269 <filename>*.hddimg</filename> image types directly
6270 by using the
6271 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
6272 variable.
6273 </para></listitem>
6274 <listitem><para>
6275 The <filename>scripts/contrib/mkefidisk.sh</filename>
6276 has been removed in favor of Wic.
6277 </para></listitem>
6278 <listitem><para>
6279 <filename>kernel-modules</filename> has been removed from
6280 <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>
6281 for <filename>qemumips</filename> and
6282 <filename>qemumips64</filename> machines.
6283 Removal also impacts the <filename>x86-base.inc</filename>
6284 file.
6285 <note>
6286 <filename>genericx86</filename> and
6287 <filename>genericx86-64</filename> retain
6288 <filename>kernel-modules</filename> as part of the
6289 <filename>RRECOMMENDS</filename> variable setting.
6290 </note>
6291 </para></listitem>
6292 <listitem><para>
6293 The <filename>LGPLv2_WHITELIST_GPL-3.0</filename>
6294 variable has been removed.
6295 If you are setting this variable in your configuration,
6296 set or append it to the
6297 <filename>WHITELIST_GPL-3.0</filename> variable instead.
6298 </para></listitem>
6299 <listitem><para>
6300 <filename>${ASNEEDED}</filename> is now included in
6301 the
6302 <link linkend='var-TARGET_LDFLAGS'><filename>TARGET_LDFLAGS</filename></link>
6303 variable directly.
6304 The remaining definitions from
6305 <filename>meta/conf/distro/include/as-needed.inc</filename>
6306 have been moved to corresponding recipes.
6307 </para></listitem>
6308 <listitem><para>
6309 Support for DSA host keys has been dropped from the
6310 OpenSSH recipes.
6311 If you are still using DSA keys, you must switch over to a
6312 more secure algorithm as recommended by OpenSSH upstream.
6313 </para></listitem>
6314 <listitem><para>
6315 The <filename>dhcp</filename> recipe now uses the
6316 <filename>dhcpd6.conf</filename> configuration file in
6317 <filename>dhcpd6.service</filename> for IPv6 DHCP rather
6318 than re-using <filename>dhcpd.conf</filename>, which is
6319 now reserved for IPv4.
6320 </para></listitem>
6321 </itemizedlist>
6322 </para>
6323 </section>
6324</section>
Brad Bishopc342db32019-05-15 21:57:59 -04006325
6326<section id='moving-to-the-yocto-project-2.7-release'>
6327 <title>Moving to the Yocto Project 2.7 Release</title>
6328
6329 <para>
6330 This section provides migration information for moving to the
6331 Yocto Project 2.7 Release from the prior release.
6332 </para>
6333
6334 <section id='migration-2.7-bitbake-changes'>
6335 <title>BitBake Changes</title>
6336
6337 <para>
6338 The following changes have been made to BitBake:
6339 <itemizedlist>
6340 <listitem><para>
6341 BitBake now checks anonymous Python functions and pure
6342 Python functions (e.g. <filename>def funcname:</filename>)
6343 in the metadata for tab indentation.
6344 If found, BitBake produces a warning.
6345 </para></listitem>
6346 <listitem><para>
6347 Bitbake now checks
6348 <link linkend='var-BBFILE_COLLECTIONS'><filename>BBFILE_COLLECTIONS</filename></link>
6349 for duplicate entries and triggers an error if any are
6350 found.
6351 </para></listitem>
6352 </itemizedlist>
6353 </para>
6354 </section>
6355
6356 <section id='migration-2.7-eclipse-support-dropped'>
6357 <title><trademark class='trade'>Eclipse</trademark> Support Removed</title>
6358
6359 <para>
6360 Support for the Eclipse IDE has been removed.
6361 Support continues for those releases prior to 2.7 that did include
6362 support.
6363 The 2.7 release does not include the Eclipse Yocto plugin.
6364 </para>
6365 </section>
6366
6367 <section id='migration-2.7-qemu-native-splits-system-and-user-mode-parts'>
6368 <title><filename>qemu-native</filename> Splits the System and User-Mode Parts</title>
6369
6370 <para>
6371 The system and user-mode parts of <filename>qemu-native</filename>
6372 are now split.
6373 <filename>qemu-native</filename> provides the user-mode components
6374 and <filename>qemu-system-native</filename> provides the system
6375 components.
6376 If you have recipes that depend on QEMU's system emulation
6377 functionality at build time, they should now depend upon
6378 <filename>qemu-system-native</filename> instead of
6379 <filename>qemu-native</filename>.
6380 </para>
6381 </section>
6382
6383 <section id='migration-2.7-upstream-tracking.inc-removed'>
6384 <title>The <filename>upstream-tracking.inc</filename> File Has Been Removed</title>
6385
6386 <para>
6387 The previously deprecated <filename>upstream-tracking.inc</filename>
6388 file is now removed.
6389 Any <filename>UPSTREAM_TRACKING*</filename> variables are now set
6390 in the corresponding recipes instead.
6391 </para>
6392
6393 <para>
6394 Remove any references you have to the
6395 <filename>upstream-tracking.inc</filename> file in your
6396 configuration.
6397 </para>
6398 </section>
6399
6400 <section id='migration-2.7-distro-features-libc-removed'>
6401 <title>The <filename>DISTRO_FEATURES_LIBC</filename> Variable Has Been Removed</title>
6402
6403 <para>
6404 The <filename>DISTRO_FEATURES_LIBC</filename> variable is no
6405 longer used.
6406 The ability to configure glibc using kconfig has been removed
6407 for quite some time making the <filename>libc-*</filename> features
6408 set no longer effective.
6409 </para>
6410
6411 <para>
6412 Remove any references you have to
6413 <filename>DISTRO_FEATURES_LIBC</filename> in your own layers.
6414 </para>
6415 </section>
6416
6417 <section id='migration-2.7-license-values'>
6418 <title>License Value Corrections</title>
6419
6420 <para>
6421 The following corrections have been made to the
6422 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
6423 values set by recipes:
6424 <literallayout class='monospaced'>
6425 <emphasis>socat</emphasis>: Corrected <filename>LICENSE</filename> to be "GPLv2" rather than
6426 "GPLv2+".
6427
6428 <emphasis>libgfortran</emphasis>: Set license to "GPL-3.0-with-GCC-exception".
6429
6430 <emphasis>elfutils</emphasis>: Removed "Elfutils-Exception" and set to "GPLv2" for shared
6431 libraries
6432 </literallayout>
6433 </para>
6434 </section>
6435
6436 <section id='migration-2.7-packaging-changes'>
6437 <title>Packaging Changes</title>
6438
6439 <para>
6440 This section provides information about packaging changes.
6441 <itemizedlist>
6442 <listitem><para>
6443 <filename>bind</filename>: The
6444 <filename>nsupdate</filename> binary has been moved to
6445 the <filename>bind-utils</filename> package.
6446 </para></listitem>
6447 <listitem><para>
6448 Debug split: The default debug split has been changed to
6449 create separate source packages (i.e.
6450 <replaceable>package_name</replaceable><filename>-dbg</filename>
6451 and
6452 <replaceable>package_name</replaceable><filename>-src</filename>).
6453 If you are currently using <filename>dbg-pkgs</filename>
6454 in
6455 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
6456 to bring in debug symbols and you still need the sources,
6457 you must now also add <filename>src-pkgs</filename> to
6458 <filename>IMAGE_FEATURES</filename>.
6459 Source packages remain in the target portion of the SDK
6460 by default, unless you have set your own value for
6461 <link linkend='var-SDKIMAGE_FEATURES'><filename>SDKIMAGE_FEATURES</filename></link>
6462 that does not include <filename>src-pkgs</filename>.
6463 </para></listitem>
6464 <listitem><para>
6465 Mount all using <filename>util-linux</filename>:
6466 <filename>/etc/default/mountall</filename> has
6467 moved into the -mount sub-package.
6468 </para></listitem>
6469 <listitem><para>
6470 Splitting binaries using <filename>util-linux</filename>:
6471 <filename>util-linux</filename> now splits each binary into
6472 its own package for fine-grained control.
6473 The main <filename>util-linux</filename> package pulls in
6474 the individual binary packages using the
6475 <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>
6476 and
6477 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
6478 variables.
6479 As a result, existing images should not see any changes
6480 assuming
6481 <link linkend='var-NO_RECOMMENDATIONS'><filename>NO_RECOMMENDATIONS</filename></link>
6482 is not set.
6483 </para></listitem>
6484 <listitem><para>
6485 <filename>netbase/base-files</filename>:
6486 <filename>/etc/hosts</filename> has moved from
6487 <filename>netbase</filename> to
6488 <filename>base-files</filename>.
6489 </para></listitem>
6490 <listitem><para>
6491 <filename>tzdata</filename>: The main package has been
6492 converted to an empty meta package that pulls in all
6493 <filename>tzdata</filename> packages by default.
6494 </para></listitem>
6495 <listitem><para>
6496 <filename>lrzsz</filename>: This package has been removed
6497 from <filename>packagegroup-self-hosted</filename> and
6498 <filename>packagegroup-core-tools-testapps</filename>.
6499 The X/Y/ZModem support is less likely to be needed on
6500 modern systems.
6501 If you are relying on these packagegroups to include the
6502 <filename>lrzsz</filename> package in your image, you
6503 now need to explicitly add the package.
6504 </para></listitem>
6505 </itemizedlist>
6506 </para>
6507 </section>
6508
6509 <section id='migration-2.7-removed-recipes'>
6510 <title>Removed Recipes</title>
6511
6512 <para>
6513 The following recipes have been removed:
6514 <literallayout class='monospaced'>
6515 <emphasis>gcc</emphasis>: Drop version 7.3 recipes. Version 8.3 now remains.
6516
6517 <emphasis>linux-yocto</emphasis>: Drop versions 4.14 and 4.18 recipes. Versions 4.19 and 5.0 remain.
6518
6519 <emphasis>go</emphasis>: Drop version 1.9 recipes. Versions 1.11 and 1.12 remain.
6520
6521 <emphasis>xvideo-tests</emphasis>: Became obsolete.
6522
6523 <emphasis>libart-lgpl</emphasis>: Became obsolete.
6524
6525 <emphasis>gtk-icon-utils-native</emphasis>: These tools are now provided by gtk+3-native
6526
6527 <emphasis>gcc-cross-initial</emphasis>: No longer needed. gcc-cross/gcc-crosssdk is now used instead.
6528
6529 <emphasis>gcc-crosssdk-initial</emphasis>: No longer needed. gcc-cross/gcc-crosssdk is now used instead.
6530
6531 <emphasis>glibc-initial</emphasis>: Removed because the benefits of having it for site_config are
6532 currently outweighed by the cost of building the recipe.
6533 </literallayout>
6534 </para>
6535 </section>
6536
6537 <section id='migration-2.7-removed-classes'>
6538 <title>Removed Classes</title>
6539
6540 <para>
6541 The following classes have been removed:
6542 <literallayout class='monospaced'>
6543 <emphasis>distutils-tools</emphasis>: This class was never used.
6544
6545 <emphasis>bugzilla.bbclass</emphasis>: Became obsolete.
6546
6547 <emphasis>distrodata</emphasis>: This functionally has been replaced by a more modern
6548 tinfoil-based implementation.
6549 </literallayout>
6550 </para>
6551 </section>
6552
6553 <section id='migration-2.7-miscellaneous-changes'>
6554 <title>Miscellaneous Changes</title>
6555
6556 <para>
6557 The following miscellaneous changes occurred:
6558 <itemizedlist>
6559 <listitem><para>
6560 The <filename>distro</filename> subdirectory of the Poky
6561 repository has been removed from the top-level
6562 <filename>scripts</filename> directory.
6563 </para></listitem>
6564 <listitem><para>
6565 Perl now builds for the target using
6566 <ulink url='http://arsv.github.io/perl-cross/'><filename>perl-cross</filename></ulink>
6567 for better maintainability and improved build performance.
6568 This change should not present any problems unless you have
6569 heavily customized your Perl recipe.
6570 </para></listitem>
6571 <listitem><para>
6572 <filename>arm-tunes</filename>: Removed the "-march"
6573 option if mcpu is already added.
6574 </para></listitem>
6575 <listitem><para>
6576 <filename>update-alternatives</filename>: Convert file
6577 renames to
6578 <link linkend='var-PACKAGE_PREPROCESS_FUNCS'><filename>PACKAGE_PREPROCESS_FUNCS</filename></link>
6579 </para></listitem>
6580 <listitem><para>
6581 <filename>base/pixbufcache</filename>: Obsolete
6582 <filename>sstatecompletions</filename> code has been
6583 removed.
6584 </para></listitem>
6585 <listitem><para>
6586 <link linkend='ref-classes-native'><filename>native</filename></link>
6587 class:
6588 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
6589 handling has been enabled.
6590 </para></listitem>
6591 <listitem><para>
6592 <filename>inetutils</filename>: This recipe has rsh
6593 disabled.
6594 </para></listitem>
6595 </itemizedlist>
6596 </para>
6597 </section>
6598</section>
Brad Bishop64c979e2019-11-04 13:55:29 -05006599
Brad Bishop64c979e2019-11-04 13:55:29 -05006600<section id='moving-to-the-yocto-project-3.0-release'>
6601 <title>Moving to the Yocto Project 3.0 Release</title>
6602
6603 <para>
6604 This section provides migration information for moving to the
6605 Yocto Project 3.0 Release from the prior release.
6606 </para>
6607
Brad Bishop1d80a2e2019-11-15 16:35:03 -05006608 <section id='migration-3.0-init-system-selection'>
6609 <title>Init System Selection</title>
6610
6611 <para>
6612 Changing the init system manager previously required setting a
6613 number of different variables.
6614 You can now change the manager by setting the
6615 <filename>INIT_MANAGER</filename> variable and the corresponding
6616 include files
6617 (i.e. <filename>conf/distro/include/init-manager-*.conf</filename>).
6618 Include files are provided for four values: "none", "sysvinit",
6619 "systemd", and "mdev-busybox".
6620 The default value, "none", for <filename>INIT_MANAGER</filename>
6621 should allow your current settings to continue working.
6622 However, it is advisable to explicitly set
6623 <filename>INIT_MANAGER</filename>.
6624 </para>
6625 </section>
6626
Brad Bishop64c979e2019-11-04 13:55:29 -05006627 <section id='migration-3.0-lsb-support-removed'>
6628 <title>LSB Support Removed</title>
6629
6630 <para>
Brad Bishop1d80a2e2019-11-15 16:35:03 -05006631 Linux Standard Base (LSB) as a standard is not current, and
6632 is not well suited for embedded applications.
6633 Support can be continued in a separate layer if needed.
6634 However, presently LSB support has been removed from the core.
Brad Bishop64c979e2019-11-04 13:55:29 -05006635 </para>
Brad Bishop64c979e2019-11-04 13:55:29 -05006636
6637 <para>
Brad Bishop1d80a2e2019-11-15 16:35:03 -05006638 As a result of this change, the <filename>poky-lsb</filename>
6639 derivative distribution configuration that was also used for
6640 testing alternative configurations has been replaced with a
6641 <filename>poky-altcfg</filename> distribution that has LSB
6642 parts removed.
Brad Bishop64c979e2019-11-04 13:55:29 -05006643 </para>
6644 </section>
6645
6646 <section id='migration-3.0-removed-recipes'>
6647 <title>Removed Recipes</title>
6648
6649 <para>
Brad Bishop1d80a2e2019-11-15 16:35:03 -05006650 The following recipes have been removed.
6651 <itemizedlist>
6652 <listitem><para>
6653 <filename>core-image-lsb-dev</filename>: Part of removed
6654 LSB support.
6655 </para></listitem>
6656 <listitem><para>
6657 <filename>core-image-lsb</filename>: Part of removed
6658 LSB support.
6659 </para></listitem>
6660 <listitem><para>
6661 <filename>core-image-lsb-sdk</filename>: Part of removed
6662 LSB support.
6663 </para></listitem>
6664 <listitem><para>
6665 <filename>cve-check-tool</filename>: Functionally replaced
6666 by the <filename>cve-update-db</filename> recipe and
6667 <filename>cve-check</filename> class.
6668 </para></listitem>
6669 <listitem><para>
6670 <filename>eglinfo</filename>: No longer maintained.
6671 <filename>eglinfo</filename> from
6672 <filename>mesa-demos</filename> is an adequate and
6673 maintained alternative.
6674 </para></listitem>
6675 <listitem><para>
6676 <filename>gcc-8.3</filename>: Version 8.3 removed.
6677 Replaced by 9.2.
6678 </para></listitem>
6679 <listitem><para>
6680 <filename>gnome-themes-standard</filename>: Only needed
6681 by gtk+ 2.x, which has been removed.
6682 </para></listitem>
6683 <listitem><para>
6684 <filename>gtk+</filename>: GTK+ 2 is obsolete and has been
6685 replaced by gtk+3.
6686 </para></listitem>
6687 <listitem><para>
6688 <filename>irda-utils</filename>: Has become obsolete.
6689 IrDA support has been removed from the Linux kernel in
6690 version 4.17 and later.
6691 </para></listitem>
6692 <listitem><para>
6693 <filename>libnewt-python</filename>:
6694 <filename>libnewt</filename> Python support merged into
6695 main <filename>libnewt</filename> recipe.
6696 </para></listitem>
6697 <listitem><para>
6698 <filename>libsdl</filename>: Replaced by newer
6699 <filename>libsdl2</filename>.
6700 </para></listitem>
6701 <listitem><para>
6702 <filename>libx11-diet</filename>: Became obsolete.
6703 </para></listitem>
6704 <listitem><para>
6705 <filename>libxx86dga</filename>: Removed obsolete client
6706 library.
6707 </para></listitem>
6708 <listitem><para>
6709 <filename>libxx86misc</filename>: Removed. Library is
6710 redundant.
6711 </para></listitem>
6712 <listitem><para>
6713 <filename>linux-yocto</filename>: Version 5.0 removed,
6714 which is now redundant (5.2 / 4.19 present).
6715 </para></listitem>
6716 <listitem><para>
6717 <filename>lsbinitscripts</filename>: Part of removed LSB
6718 support.
6719 </para></listitem>
6720 <listitem><para>
6721 <filename>lsb</filename>: Part of removed LSB support.
6722 </para></listitem>
6723 <listitem><para>
6724 <filename>lsbtest</filename>: Part of removed LSB support.
6725 </para></listitem>
6726 <listitem><para>
6727 <filename>openssl10</filename>: Replaced by newer
6728 <filename>openssl</filename> version 1.1.
6729 </para></listitem>
6730 <listitem><para>
6731 <filename>packagegroup-core-lsb</filename>: Part of removed
6732 LSB support.
6733 </para></listitem>
6734 <listitem><para>
6735 <filename>python-nose</filename>: Removed the Python 2.x
6736 version of the recipe.
6737 </para></listitem>
6738 <listitem><para>
6739 <filename>python-numpy</filename>: Removed the Python 2.x
6740 version of the recipe.
6741 </para></listitem>
6742 <listitem><para>
6743 <filename>python-scons</filename>: Removed the Python 2.x
6744 version of the recipe.
6745 </para></listitem>
6746 <listitem><para>
6747 <filename>source-highlight</filename>: No longer needed.
6748 </para></listitem>
6749 <listitem><para>
6750 <filename>stress</filename>: Replaced by
6751 <filename>stress-ng</filename>.
6752 </para></listitem>
6753 <listitem><para>
6754 <filename>vulkan</filename>: Split into
6755 <filename>vulkan-loader</filename>,
6756 <filename>vulkan-headers</filename>, and
6757 <filename>vulkan-tools</filename>.
6758 </para></listitem>
6759 <listitem><para>
6760 <filename>weston-conf</filename>: Functionality moved to
6761 <filename>weston-init</filename>.
6762 </para></listitem>
6763 </itemizedlist>
6764 </para>
Brad Bishop64c979e2019-11-04 13:55:29 -05006765 </section>
6766
Brad Bishop1d80a2e2019-11-15 16:35:03 -05006767 <section id='migration-3.0-packaging-changes'>
6768 <title>Packaging Changes</title>
Brad Bishop64c979e2019-11-04 13:55:29 -05006769
6770 <para>
Brad Bishop1d80a2e2019-11-15 16:35:03 -05006771 The following packaging changes have occurred.
6772 <itemizedlist>
6773 <listitem><para>
6774 The
6775 <ulink url='https://en.wikipedia.org/wiki/GNOME_Web'>Epiphany</ulink>
6776 browser has been dropped from
6777 <filename>packagegroup-self-hosted</filename> as it has
6778 not been needed inside
6779 <filename>build-appliance-image</filename> for
6780 quite some time and was causing resource problems.
6781 </para></listitem>
6782 <listitem><para>
6783 <filename>libcap-ng</filename> Python support has been
6784 moved to a separate <filename>libcap-ng-python</filename>
6785 recipe to streamline the build process when the Python
6786 bindings are not needed.
6787 </para></listitem>
6788 <listitem><para>
6789 <filename>libdrm</filename> now packages the file
6790 <filename>amdgpu.ids</filename> into a separate
6791 <filename>libdrm-amdgpu</filename> package.
6792 </para></listitem>
6793 <listitem><para>
6794 <filename>python3</filename>: The
6795 <filename>runpy</filename> module is now in the
6796 <filename>python3-core</filename> package as it is
6797 required to support the common "python3 -m" command usage.
6798 </para></listitem>
6799 <listitem><para>
6800 <filename>distcc</filename> now provides separate
6801 <filename>distcc-client</filename> and
6802 <filename>distcc-server</filename> packages as typically
6803 one or the other are needed, rather than both.
6804 </para></listitem>
6805 <listitem><para>
6806 <filename>python*-setuptools</filename> recipes now
6807 separately package the <filename>pkg_resources</filename>
6808 module in a <filename>python-pkg-resources</filename> /
6809 <filename>python3-pkg-resources</filename> package as
6810 the module is useful independent of the rest of the
6811 setuptools package.
6812 The main <filename>python-setuptools</filename> /
6813 <filename>python3-setuptools</filename> package depends
6814 on this new package so you should only need to update
6815 dependencies unless you want to take advantage of the
6816 increased granularity.
6817 </para></listitem>
6818 </itemizedlist>
6819 </para>
6820 </section>
6821
6822 <section id='migration-3.0-cve-checking'>
6823 <title>CVE Checking</title>
6824
6825 <para>
6826 <filename>cve-check-tool</filename> has been functionally replaced
6827 by a new <filename>cve-update-db</filename> recipe and
6828 functionality built into the <filename>cve-check</filename> class.
6829 The result uses NVD JSON data feeds rather than the deprecated
6830 XML feeds that <filename>cve-check-tool</filename> was using,
6831 supports CVSSv3 scoring, and makes other improvements.
6832 </para>
6833
6834 <para>
6835 Additionally, the <filename>CVE_CHECK_CVE_WHITELIST</filename>
6836 variable has been replaced by
6837 <filename>CVE_CHECK_WHITELIST</filename>.
6838 </para>
6839 </section>
6840
6841 <section id='migration-3.0-bitbake-changes'>
6842 <title>Bitbake Changes</title>
6843
6844 <para>
6845 The following BitBake changes have occurred.
6846 <itemizedlist>
6847 <listitem><para>
6848 <filename>addtask</filename> statements now properly
6849 validate dependent tasks.
6850 Previously, an invalid task was silently ignored.
6851 With this change, the invalid task generates a warning.
6852 </para></listitem>
6853 <listitem><para>
6854 Other invalid <filename>addtask</filename> and
6855 <filename>deltask</filename> usages now trigger these
6856 warnings: "multiple target tasks arguments with
6857 addtask / deltask", and "multiple before/after clauses".
6858 </para></listitem>
6859 <listitem><para>
6860 The "multiconfig" prefix is now shortened to "mc".
6861 "multiconfig" will continue to work, however it may be
6862 removed in a future release.
6863 </para></listitem>
6864 <listitem><para>
6865 The <filename>bitbake -g</filename> command no longer
6866 generates a <filename>recipe-depends.dot</filename> file
6867 as the contents (i.e. a reprocessed version of
6868 <filename>task-depends.dot</filename>) were confusing.
6869 </para></listitem>
6870 <listitem><para>
6871 The <filename>bb.build.FuncFailed</filename> exception,
6872 previously raised by
6873 <filename>bb.build.exec_func()</filename> when certain
6874 other exceptions have occurred, has been removed.
6875 The real underlying exceptions will be raised instead.
6876 If you have calls to
6877 <filename>bb.build.exec_func()</filename> in custom classes
6878 or <filename>tinfoil-using</filename> scripts, any
6879 references to <filename>bb.build.FuncFailed</filename>
6880 should be cleaned up.
6881 </para></listitem>
6882 <listitem><para>
6883 Additionally, the
6884 <filename>bb.build.exec_func()</filename> no longer accepts
6885 the "pythonexception" parameter.
6886 The function now always raises exceptions.
6887 Remove this argument in any calls to
6888 <filename>bb.build.exec_func()</filename> in custom classes
6889 or scripts.
6890 </para></listitem>
6891 <listitem><para>
6892 The
6893 <ulink url='&YOCTO_DOCS_BB_URL;#var-bb-BB_SETSCENE_VERIFY_FUNCTION2'><filename>BB_SETSCENE_VERIFY_FUNCTION2</filename></ulink>
6894 is no longer used.
6895 In the unlikely event that you have any references to it,
6896 they should be removed.
6897 </para></listitem>
6898 <listitem><para>
6899 The <filename>RunQueueExecuteScenequeue</filename> and
6900 <filename>RunQueueExecuteTasks</filename> events have been
6901 removed since setscene tasks are now executed as part of
6902 the normal runqueue.
6903 Any event handling code in custom classes or scripts that
6904 handles these two events need to be updated.
6905 </para></listitem>
6906 <listitem><para>
6907 The arguments passed to functions used with
6908 <ulink url='&YOCTO_DOCS_BB_URL;#var-bb-BB_HASHCHECK_FUNCTION'><filename>BB_HASHCHECK_FUNCTION</filename></ulink>
6909 have changed.
6910 If you are using your own custom hash check function, see
6911 <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=40a5e193c4ba45c928fccd899415ea56b5417725'></ulink>
6912 for details.
6913 </para></listitem>
6914 <listitem><para>
6915 Task specifications in <filename>BB_TASKDEPDATA</filename>
6916 and class implementations used in signature generator
6917 classes now use "&lt;fn&gt;:&lt;task&gt;" everywhere rather than
6918 the "." delimiter that was being used in some places.
6919 This change makes it consistent with all areas in the code.
6920 Custom signature generator classes and code that reads
6921 <filename>BB_TASKDEPDATA</filename> need to be updated to
6922 use ':' as a separator rather than '.'.
6923 </para></listitem>
6924 </itemizedlist>
6925 </para>
6926 </section>
6927
6928 <section id='migration-3.0-sanity-checks'>
6929 <title>Sanity Checks</title>
6930
6931 <para>
6932 The following sanity check changes occurred.
6933 <itemizedlist>
6934 <listitem><para>
6935 <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
6936 is now checked for usage of two problematic items:
6937 <itemizedlist>
6938 <listitem><para>
6939 "${PN}" prefix/suffix use - Warnings always appear
6940 if ${PN} is used.
6941 You must fix the issue regardless of whether
6942 multiconfig or anything else that would cause
6943 prefixing/suffixing to happen.
6944 </para></listitem>
6945 <listitem><para>
6946 Github archive tarballs - these are not guaranteed
6947 to be stable.
6948 Consequently, it is likely that the tarballs will
6949 be refreshed and thus the SRC_URI checksums
6950 will fail to apply.
6951 It is recommended that you fetch either an official
6952 release tarball or a specific revision from the
6953 actual Git repository instead.
6954 </para></listitem>
6955 </itemizedlist>
6956 Either one of these items now trigger a warning by default.
6957 If you wish to disable this check, remove
6958 <filename>src-uri-bad</filename> from
6959 <link linkend='var-WARN_QA'><filename>WARN_QA</filename></link>.
6960 </para></listitem>
6961 <listitem><para>
6962 The <filename>file-rdeps</filename> runtime dependency
6963 check no longer expands
6964 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
6965 recursively as there is no mechanism to ensure they can be
6966 fully computed, and thus races sometimes result in errors
6967 either showing up or not.
6968 Thus, you might now see errors for missing runtime
6969 dependencies that were previously satisfied recursively.
6970 Here is an example: package A contains a shell script
6971 starting with <filename>#!/bin/bash</filename> but has no
6972 dependency on bash.
6973 However, package A depends on package B, which does depend
6974 on bash.
6975 You need to add the missing dependency or dependencies to
6976 resolve the warning.
6977 </para></listitem>
6978 <listitem><para>
6979 Setting <filename>DEPENDS_${PN}</filename> anywhere
6980 (i.e. typically in a recipe) now triggers an error.
6981 The error is triggered because
6982 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
6983 is not a package-specific variable unlike RDEPENDS.
6984 You should set <filename>DEPENDS</filename> instead.
6985 </para></listitem>
6986 <listitem><para>
6987 systemd currently does not work well with the musl C
6988 library because only upstream officially supports linking
6989 the library with glibc.
6990 Thus, a warning is shown when building systemd in
6991 conjunction with musl.
6992 </para></listitem>
6993 </itemizedlist>
Brad Bishop64c979e2019-11-04 13:55:29 -05006994 </para>
6995 </section>
6996
6997 <section id='migration-3.0-miscellaneous-changes'>
6998 <title>Miscellaneous Changes</title>
6999
7000 <para>
Brad Bishop1d80a2e2019-11-15 16:35:03 -05007001 The following miscellaneous changes have occurred.
7002 <itemizedlist>
7003 <listitem><para>
7004 The <filename>gnome</filename>
7005 class has been removed because it now does very little.
7006 You should update recipes that previously inherited this
7007 class to do the following:
7008 <literallayout class='monospaced'>
7009 inherit gnomebase gtk-icon-cache gconf mime
7010 </literallayout>
7011 </para></listitem>
7012 <listitem><para>
7013 The
7014 <filename>meta/recipes-kernel/linux/linux-dtb.inc</filename>
7015 file has been removed.
7016 This file was previously deprecated in favor of setting
7017 <link linkend='var-KERNEL_DEVICETREE'><filename>KERNEL_DEVICETREE</filename></link>
7018 in any kernel recipe and only produced a warning.
7019 Remove any <filename>include</filename> or
7020 <filename>require</filename> statements pointing to this
7021 file.
7022 </para></listitem>
7023 <listitem><para>
7024 <link linkend='var-TARGET_CFLAGS'><filename>TARGET_CFLAGS</filename></link>,
7025 <link linkend='var-TARGET_CPPFLAGS'><filename>TARGET_CPPFLAGS</filename></link>,
7026 <link linkend='var-TARGET_CXXFLAGS'><filename>TARGET_CXXFLAGS</filename></link>,
7027 and
7028 <link linkend='var-TARGET_LDFLAGS'><filename>TARGET_LDFLAGS</filename></link>
7029 are no longer exported to the external environment.
7030 This change did not require any changes to core recipes,
7031 which is a good indicator that no changes will be
7032 required.
7033 However, if for some reason the software being built by one
7034 of your recipes is expecting these variables to be set,
7035 then building the recipe will fail.
7036 In such cases, you must either export the variable or
7037 variables in the recipe or change the scripts so that
7038 exporting is not necessary.
7039 </para></listitem>
7040 <listitem><para>
7041 You must change the host distro identifier used in
7042 <link linkend='var-NATIVELSBSTRING'><filename>NATIVELSBSTRING</filename></link>
7043 to use all lowercase characters even if it does not contain
7044 a version number.
7045 This change is necessary only if you are not using
7046 <filename>uninative</filename> and
7047 <link linkend='var-SANITY_TESTED_DISTROS'><filename>SANITY_TESTED_DISTROS</filename></link>.
7048 </para></listitem>
7049 <listitem><para>
7050 In the <filename>base-files</filename> recipe, writing the
7051 hostname into <filename>/etc/hosts</filename> and
7052 <filename>/etc/hostname</filename> is now done within the
7053 main
7054 <link linkend='ref-tasks-install'><filename>do_install</filename></link>
7055 function rather than in the
7056 <filename>do_install_basefilesissue</filename> function.
7057 The reason for the change is because
7058 <filename>do_install_basefilesissue</filename> is more
7059 easily overridden without having to duplicate the hostname
7060 functionality.
7061 If you have done the latter (e.g. in a
7062 <filename>base-files</filename> bbappend), then you should
7063 remove it from your customized
7064 <filename>do_install_basefilesissue</filename> function.
7065 </para></listitem>
7066 <listitem><para>
7067 The <filename>wic --expand</filename> command now uses
7068 commas to separate "key:value" pairs rather than hyphens.
7069 <note>
7070 The wic command-line help is not updated.
7071 </note>
7072 You must update any scripts or commands where you use
7073 <filename>wic --expand</filename> with multiple
7074 "key:value" pairs.
7075 </para></listitem>
7076 <listitem><para>
7077 UEFI image variable settings have been moved from various
7078 places to a central
7079 <filename>conf/image-uefi.conf</filename>.
7080 This change should not influence any existing configuration
7081 as the <filename>meta/conf/image-uefi.conf</filename>
7082 in the core metadata sets defaults that can be overridden
7083 in the same manner as before.
7084 </para></listitem>
7085 <listitem><para>
7086 <filename>conf/distro/include/world-broken.inc</filename>
7087 has been removed.
7088 For cases where certain recipes need to be disabled when
7089 using the musl C library, these recipes now have
7090 <filename>COMPATIBLE_HOST_libc-musl</filename> set with a
7091 comment that explains why.
7092 </para></listitem>
7093 </itemizedlist>
Brad Bishop64c979e2019-11-04 13:55:29 -05007094 </para>
7095 </section>
7096</section>
7097
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007098</chapter>
7099<!--
7100vim: expandtab tw=80 ts=4
7101-->