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