diff options
author | Adrian Dudau <adrian.dudau@enea.com> | 2014-06-26 14:38:37 +0200 |
---|---|---|
committer | Adrian Dudau <adrian.dudau@enea.com> | 2014-06-26 14:38:37 +0200 |
commit | 067445c1487c1a73e0ee8a9ae3e82d446406ab57 (patch) | |
tree | d47aa232ce1c82cf47aa348f20902937e073239a /documentation/ref-manual/ref-qa-checks.xml | |
download | yocto-docs-067445c1487c1a73e0ee8a9ae3e82d446406ab57.tar.gz |
initial commit for Enea Linux 4.0daisy
Migrated from the internal git server on the daisy-enea branch
Signed-off-by: Adrian Dudau <adrian.dudau@enea.com>
Diffstat (limited to 'documentation/ref-manual/ref-qa-checks.xml')
-rw-r--r-- | documentation/ref-manual/ref-qa-checks.xml | 1151 |
1 files changed, 1151 insertions, 0 deletions
diff --git a/documentation/ref-manual/ref-qa-checks.xml b/documentation/ref-manual/ref-qa-checks.xml new file mode 100644 index 0000000..43a0bd0 --- /dev/null +++ b/documentation/ref-manual/ref-qa-checks.xml | |||
@@ -0,0 +1,1151 @@ | |||
1 | <!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='ref-qa-checks'> | ||
6 | <title>QA Error and Warning Messages</title> | ||
7 | |||
8 | <section id='qa-introduction'> | ||
9 | <title>Introduction</title> | ||
10 | |||
11 | <para> | ||
12 | When building a recipe, the OpenEmbedded build system performs | ||
13 | various QA checks on the output to ensure that common issues are | ||
14 | detected and reported. | ||
15 | Sometimes when you create a new recipe to build new software, | ||
16 | it will build with no problems. | ||
17 | When this is not the case, or when you have QA issues building any | ||
18 | software, it could take a little time to resolve them. | ||
19 | </para> | ||
20 | |||
21 | <para> | ||
22 | While it is tempting to ignore a QA message or even to | ||
23 | disable QA checks, it is best to try and resolve any | ||
24 | reported QA issues. | ||
25 | This chapter provides a list of the QA messages and brief explanations | ||
26 | of the issues you could encounter so that you can properly resolve | ||
27 | problems. | ||
28 | </para> | ||
29 | |||
30 | <para> | ||
31 | The next section provides a list of all QA error and warning | ||
32 | messages based on a default configuration. | ||
33 | Each entry provides the message or error form along with an | ||
34 | explanation. | ||
35 | <note> | ||
36 | <title>Notes</title> | ||
37 | <itemizedlist> | ||
38 | <listitem><para> | ||
39 | At the end of each message, the name of the associated | ||
40 | QA test (as listed in the | ||
41 | "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>" | ||
42 | section) appears within square brackets. | ||
43 | </para></listitem> | ||
44 | <listitem><para> | ||
45 | As mentioned, this list of error and warning messages is for | ||
46 | QA checks only. | ||
47 | The list does not cover all possible build errors or | ||
48 | warnings you could encounter. | ||
49 | </para></listitem> | ||
50 | <listitem><para> | ||
51 | Because some QA checks are disabled by default, this list | ||
52 | does not include all possible QA check errors and warnings. | ||
53 | </para></listitem> | ||
54 | </itemizedlist> | ||
55 | </note> | ||
56 | </para> | ||
57 | </section> | ||
58 | |||
59 | <section id='qa-errors-and-warnings'> | ||
60 | <title>Errors and Warnings</title> | ||
61 | |||
62 | <para> | ||
63 | <itemizedlist> | ||
64 | <listitem> | ||
65 | <para> | ||
66 | <code> | ||
67 | <packagename>: <path> is using libexec please relocate to <libexecdir> [libexec] | ||
68 | </code> | ||
69 | </para> | ||
70 | |||
71 | <para> | ||
72 | The specified package contains files in | ||
73 | <filename>/usr/libexec</filename>. | ||
74 | By default, <filename>libexecdir</filename> is set to | ||
75 | "${libdir}/${BPN}" rather than to "/usr/libexec". | ||
76 | Thus, installing to <filename>/usr/libexec</filename> | ||
77 | is likely not desirable. | ||
78 | </para> | ||
79 | |||
80 | <para> | ||
81 | | ||
82 | </para> | ||
83 | </listitem> | ||
84 | </itemizedlist> | ||
85 | </para> | ||
86 | |||
87 | <para> | ||
88 | <itemizedlist> | ||
89 | <listitem> | ||
90 | <para> | ||
91 | <code> | ||
92 | package <packagename> contains bad RPATH <rpath> in file <file> [rpaths] | ||
93 | </code> | ||
94 | </para> | ||
95 | |||
96 | <para> | ||
97 | The specified binary produced by the recipe contains dynamic | ||
98 | library load paths (rpaths) that contain build system paths | ||
99 | such as | ||
100 | <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>, | ||
101 | which are incorrect for the target and could potentially | ||
102 | be a security issue. | ||
103 | Check for bad <filename>-rpath</filename> options being | ||
104 | passed to the linker in your | ||
105 | <link linkend='ref-tasks-compile'><filename>do_compile</filename></link> | ||
106 | log. | ||
107 | Depending on the build system used by the software being | ||
108 | built, there might be a configure option to disable rpath | ||
109 | usage completely within the build of the software. | ||
110 | </para> | ||
111 | |||
112 | <para> | ||
113 | | ||
114 | </para> | ||
115 | </listitem> | ||
116 | </itemizedlist> | ||
117 | </para> | ||
118 | |||
119 | <para> | ||
120 | <itemizedlist> | ||
121 | <listitem> | ||
122 | <para> | ||
123 | <code> | ||
124 | <packagename>: <file> contains probably-redundant RPATH <rpath> [useless-rpaths] | ||
125 | </code> | ||
126 | </para> | ||
127 | |||
128 | <para> | ||
129 | The specified binary produced by the recipe contains dynamic | ||
130 | library load paths (rpaths) that on a standard system are | ||
131 | searched by default by the linker (e.g. | ||
132 | <filename>/lib</filename> and <filename>/usr/lib</filename>). | ||
133 | While these paths will not cause any breakage, they do waste | ||
134 | space and are unnecessary. | ||
135 | Depending on the build system used by the software being | ||
136 | built, there might be a configure option to disable rpath | ||
137 | usage completely within the build of the software. | ||
138 | </para> | ||
139 | |||
140 | <para> | ||
141 | | ||
142 | </para> | ||
143 | </listitem> | ||
144 | </itemizedlist> | ||
145 | </para> | ||
146 | |||
147 | <para> | ||
148 | <itemizedlist> | ||
149 | <listitem> | ||
150 | <para> | ||
151 | <code> | ||
152 | non -dev/-dbg/-nativesdk package contains symlink .so: <packagename> path '<path>' [dev-so] | ||
153 | </code> | ||
154 | </para> | ||
155 | |||
156 | <para> | ||
157 | Symlink <filename>.so</filename> files are for development | ||
158 | only, and should therefore go into the | ||
159 | <filename>-dev</filename> package. | ||
160 | This situation might occur if you add | ||
161 | <filename>*.so*</filename> rather than | ||
162 | <filename>*.so.*</filename> to a non-dev package. | ||
163 | Change | ||
164 | <link linkend='var-FILES'><filename>FILES</filename></link> | ||
165 | (and possibly | ||
166 | <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>) | ||
167 | such that the specified <filename>.so</filename> file goes | ||
168 | into an appropriate <filename>-dev</filename> package. | ||
169 | </para> | ||
170 | |||
171 | <para> | ||
172 | | ||
173 | </para> | ||
174 | </listitem> | ||
175 | </itemizedlist> | ||
176 | </para> | ||
177 | |||
178 | <para> | ||
179 | <itemizedlist> | ||
180 | <listitem> | ||
181 | <para> | ||
182 | <code> | ||
183 | non -staticdev package contains static .a library: <packagename> path '<path>' [staticdev] | ||
184 | </code> | ||
185 | </para> | ||
186 | |||
187 | <para> | ||
188 | Static <filename>.a</filename> library files should go into | ||
189 | a <filename>-staticdev</filename> package. | ||
190 | Change | ||
191 | <link linkend='var-FILES'><filename>FILES</filename></link> | ||
192 | (and possibly | ||
193 | <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>) | ||
194 | such that the specified <filename>.a</filename> file goes | ||
195 | into an appropriate <filename>-staticdev</filename> package. | ||
196 | </para> | ||
197 | |||
198 | <para> | ||
199 | | ||
200 | </para> | ||
201 | </listitem> | ||
202 | </itemizedlist> | ||
203 | </para> | ||
204 | |||
205 | <para> | ||
206 | <itemizedlist> | ||
207 | <listitem> | ||
208 | <para> | ||
209 | <code> | ||
210 | <packagename>: found library in wrong location [libdir] | ||
211 | </code> | ||
212 | </para> | ||
213 | |||
214 | <para> | ||
215 | The specified file may have been installed into an incorrect | ||
216 | (possibly hardcoded) installation path. | ||
217 | For example, this test will catch recipes that install | ||
218 | <filename>/lib/bar.so</filename> when | ||
219 | <filename>${base_libdir}</filename> is "lib32". | ||
220 | Another example is when recipes install | ||
221 | <filename>/usr/lib64/foo.so</filename> when | ||
222 | <filename>${libdir}</filename> is "/usr/lib". | ||
223 | False positives occasionally exist. | ||
224 | For these cases add "libdir" to | ||
225 | <link linkend='var-INSANE_SKIP'><filename>INSANE_SKIP</filename></link> | ||
226 | for the package. | ||
227 | </para> | ||
228 | |||
229 | <para> | ||
230 | | ||
231 | </para> | ||
232 | </listitem> | ||
233 | </itemizedlist> | ||
234 | </para> | ||
235 | |||
236 | <para> | ||
237 | <itemizedlist> | ||
238 | <listitem> | ||
239 | <para> | ||
240 | <code> | ||
241 | non debug package contains .debug directory: <packagename> path <path> [debug-files] | ||
242 | </code> | ||
243 | </para> | ||
244 | |||
245 | <para> | ||
246 | The specified package contains a | ||
247 | <filename>.debug</filename> directory, which should not | ||
248 | appear in anything but the <filename>-dbg</filename> | ||
249 | package. | ||
250 | This situation might occur if you add a path which contains | ||
251 | a <filename>.debug</filename> directory and do not | ||
252 | explicitly add the <filename>.debug</filename> directory | ||
253 | to the <filename>-dbg</filename> package. | ||
254 | If this is the case, add the <filename>.debug</filename> | ||
255 | directory explicitly to | ||
256 | <filename>FILES_${PN}-dbg</filename>. | ||
257 | See | ||
258 | <link linkend='var-FILES'><filename>FILES</filename></link> | ||
259 | for additional information on <filename>FILES</filename>. | ||
260 | </para> | ||
261 | |||
262 | <para> | ||
263 | | ||
264 | </para> | ||
265 | </listitem> | ||
266 | </itemizedlist> | ||
267 | </para> | ||
268 | |||
269 | <para> | ||
270 | <itemizedlist> | ||
271 | <listitem> | ||
272 | <para> | ||
273 | <code> | ||
274 | Architecture did not match (<machine_arch> to <file_arch>) on <file> | ||
275 | </code> | ||
276 | </para> | ||
277 | |||
278 | <para> | ||
279 | By default, the OpenEmbedded build system checks the | ||
280 | Executable and Linkable Format (ELF) type, bit size, and | ||
281 | endianness of any binaries to ensure they match the | ||
282 | target architecture. | ||
283 | This test fails if any binaries do not match the type since | ||
284 | there would be an incompatibility. | ||
285 | The test could indicate that the wrong compiler or compiler | ||
286 | options have been used. | ||
287 | Sometimes software, like bootloaders, might need to | ||
288 | bypass this check. | ||
289 | If the file you receive the error for is firmware | ||
290 | that is not intended to be executed within the target | ||
291 | operating system or is intended to run on a separate | ||
292 | processor within the device, you can add "arch" to | ||
293 | <link linkend='var-INSANE_SKIP'><filename>INSANE_SKIP</filename></link> | ||
294 | for the package. | ||
295 | Another option is to check the | ||
296 | <link linkend='ref-tasks-compile'><filename>do_compile</filename></link> | ||
297 | log and verify that the compiler options being used | ||
298 | are correct. | ||
299 | </para> | ||
300 | |||
301 | <para> | ||
302 | | ||
303 | </para> | ||
304 | </listitem> | ||
305 | </itemizedlist> | ||
306 | </para> | ||
307 | |||
308 | <para> | ||
309 | <itemizedlist> | ||
310 | <listitem> | ||
311 | <para> | ||
312 | <code> | ||
313 | Bit size did not match (<machine_bits> to <file_bits>) <recipe> on <file> | ||
314 | </code> | ||
315 | </para> | ||
316 | |||
317 | <para> | ||
318 | By default, the OpenEmbedded build system checks | ||
319 | the Executable and Linkable Format (ELF) type, | ||
320 | bit size, and endianness of any binaries to ensure | ||
321 | they match the target architecture. | ||
322 | This test fails if any binaries do not match the type since | ||
323 | there would be an incompatibility. | ||
324 | The test could indicate that the wrong compiler or compiler | ||
325 | options have been used. | ||
326 | Sometimes software, like bootloaders, might need to | ||
327 | bypass this check. | ||
328 | If the file you receive the error for is firmware that | ||
329 | is not intended to be executed within the target | ||
330 | operating system or is intended to run on a separate | ||
331 | processor within the device, you can add "arch" to | ||
332 | <link linkend='var-INSANE_SKIP'><filename>INSANE_SKIP</filename></link> | ||
333 | for the package. | ||
334 | Another option is to check the | ||
335 | <link linkend='ref-tasks-compile'><filename>do_compile</filename></link> | ||
336 | log and verify that the compiler options being used are | ||
337 | correct. | ||
338 | </para> | ||
339 | |||
340 | <para> | ||
341 | | ||
342 | </para> | ||
343 | </listitem> | ||
344 | </itemizedlist> | ||
345 | </para> | ||
346 | |||
347 | <para> | ||
348 | <itemizedlist> | ||
349 | <listitem> | ||
350 | <para> | ||
351 | <code> | ||
352 | Endianness did not match (<machine_endianness> to <file_endianness>) on <file> [arch] | ||
353 | </code> | ||
354 | </para> | ||
355 | |||
356 | <para> | ||
357 | By default, the OpenEmbedded build system checks | ||
358 | the Executable and Linkable Format (ELF) type, bit | ||
359 | size, and endianness of any binaries to ensure they | ||
360 | match the target architecture. | ||
361 | This test fails if any binaries do not match the type since | ||
362 | there would be an incompatibility. | ||
363 | The test could indicate that the wrong compiler or compiler | ||
364 | options have been used. | ||
365 | Sometimes software, like bootloaders, might need to | ||
366 | bypass this check. | ||
367 | If the file you receive the error for is firmware | ||
368 | that is not intended to be executed within the target | ||
369 | operating system or is intended to run on a separate | ||
370 | processor within the device, you can add "arch" to | ||
371 | <link linkend='var-INSANE_SKIP'><filename>INSANE_SKIP</filename></link> | ||
372 | for the package. | ||
373 | Another option is to check the | ||
374 | <link linkend='ref-tasks-compile'><filename>do_compile</filename></link> | ||
375 | log and verify that the compiler options being used | ||
376 | are correct. | ||
377 | </para> | ||
378 | |||
379 | <para> | ||
380 | | ||
381 | </para> | ||
382 | </listitem> | ||
383 | </itemizedlist> | ||
384 | </para> | ||
385 | |||
386 | <para> | ||
387 | <itemizedlist> | ||
388 | <listitem> | ||
389 | <para> | ||
390 | <code> | ||
391 | ELF binary '<file>' has relocations in .text [textrel] | ||
392 | </code> | ||
393 | </para> | ||
394 | |||
395 | <para> | ||
396 | The specified ELF binary contains relocations in its | ||
397 | <filename>.text</filename> sections. | ||
398 | This situation can result in a performance impact | ||
399 | at runtime. | ||
400 | <note> | ||
401 | A bug currently exists that causes this | ||
402 | warning to appear erroneously. | ||
403 | See | ||
404 | <ulink url='https://bugzilla.yoctoproject.org/show_bug.cgi?id=6104'></ulink> | ||
405 | for more information. | ||
406 | </note> | ||
407 | </para> | ||
408 | |||
409 | <para> | ||
410 | | ||
411 | </para> | ||
412 | </listitem> | ||
413 | </itemizedlist> | ||
414 | </para> | ||
415 | |||
416 | <para> | ||
417 | <itemizedlist> | ||
418 | <listitem> | ||
419 | <para> | ||
420 | <code> | ||
421 | No GNU_HASH in the elf binary: '<file>' [ldflags] | ||
422 | </code> | ||
423 | </para> | ||
424 | |||
425 | <para> | ||
426 | This indicates that binaries produced when building the | ||
427 | recipe have not been linked with the | ||
428 | <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link> | ||
429 | options provided by the build system. | ||
430 | Check to be sure that the <filename>LDFLAGS</filename> | ||
431 | variable is being passed to the linker command. | ||
432 | A common workaround for this situation is to pass in | ||
433 | <filename>LDFLAGS</filename> using | ||
434 | <link linkend='var-TARGET_CC_ARCH'><filename>TARGET_CC_ARCH</filename></link> | ||
435 | within the recipe as follows: | ||
436 | <literallayout class='monospaced'> | ||
437 | TARGET_CC_ARCH += "${LDFLAGS}" | ||
438 | </literallayout> | ||
439 | </para> | ||
440 | |||
441 | <para> | ||
442 | | ||
443 | </para> | ||
444 | </listitem> | ||
445 | </itemizedlist> | ||
446 | </para> | ||
447 | |||
448 | <para> | ||
449 | <itemizedlist> | ||
450 | <listitem> | ||
451 | <para> | ||
452 | <code> | ||
453 | Package <packagename> contains Xorg driver (<driver>) but no xorg-abi- dependencies [xorg-driver-abi] | ||
454 | </code> | ||
455 | </para> | ||
456 | |||
457 | <para> | ||
458 | The specified package contains an Xorg driver, but does not | ||
459 | have a corresponding ABI package dependency. | ||
460 | The xserver-xorg recipe provides driver ABI names. | ||
461 | All drivers should depend on the ABI versions that they have | ||
462 | been built against. | ||
463 | Driver recipes that include | ||
464 | <filename>xorg-driver-input.inc</filename> or | ||
465 | <filename>xorg-driver-video.inc</filename> will | ||
466 | automatically get these versions. | ||
467 | Consequently, you should only need to explicitly add | ||
468 | dependencies to binary driver recipes. | ||
469 | </para> | ||
470 | |||
471 | <para> | ||
472 | | ||
473 | </para> | ||
474 | </listitem> | ||
475 | </itemizedlist> | ||
476 | </para> | ||
477 | |||
478 | <para> | ||
479 | <itemizedlist> | ||
480 | <listitem> | ||
481 | <para> | ||
482 | <code> | ||
483 | The /usr/share/info/dir file is not meant to be shipped in a particular package. [infodir] | ||
484 | </code> | ||
485 | </para> | ||
486 | |||
487 | <para> | ||
488 | The <filename>/usr/share/info/dir</filename> should not be | ||
489 | packaged. | ||
490 | Add the following line to your | ||
491 | <link linkend='ref-tasks-install'><filename>do_install</filename></link> | ||
492 | task or to your <filename>do_install_append</filename> | ||
493 | within the recipe as follows: | ||
494 | <literallayout class='monospaced'> | ||
495 | rm ${D}${infodir}/dir | ||
496 | </literallayout> | ||
497 | </para> | ||
498 | |||
499 | <para> | ||
500 | | ||
501 | </para> | ||
502 | </listitem> | ||
503 | </itemizedlist> | ||
504 | </para> | ||
505 | |||
506 | <para> | ||
507 | <itemizedlist> | ||
508 | <listitem> | ||
509 | <para> | ||
510 | <code> | ||
511 | Symlink <path> in <packagename> points to TMPDIR [symlink-to-sysroot] | ||
512 | </code> | ||
513 | </para> | ||
514 | |||
515 | <para> | ||
516 | The specified symlink points into | ||
517 | <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link> | ||
518 | on the host. | ||
519 | Such symlinks will work on the host. | ||
520 | However, they are clearly invalid when running on | ||
521 | the target. | ||
522 | You should either correct the symlink to use a relative | ||
523 | path or remove the symlink. | ||
524 | </para> | ||
525 | |||
526 | <para> | ||
527 | | ||
528 | </para> | ||
529 | </listitem> | ||
530 | </itemizedlist> | ||
531 | </para> | ||
532 | |||
533 | <para> | ||
534 | <itemizedlist> | ||
535 | <listitem> | ||
536 | <para> | ||
537 | <code> | ||
538 | <file> failed sanity test (workdir) in path <path> [la] | ||
539 | </code> | ||
540 | </para> | ||
541 | |||
542 | <para> | ||
543 | The specified <filename>.la</filename> file contains | ||
544 | <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link> | ||
545 | paths. | ||
546 | Any <filename>.la</filename> file containing these paths | ||
547 | is incorrect since <filename>libtool</filename> adds the | ||
548 | correct sysroot prefix when using the files automatically | ||
549 | itself. | ||
550 | </para> | ||
551 | |||
552 | <para> | ||
553 | | ||
554 | </para> | ||
555 | </listitem> | ||
556 | </itemizedlist> | ||
557 | </para> | ||
558 | |||
559 | <para> | ||
560 | <itemizedlist> | ||
561 | <listitem> | ||
562 | <para> | ||
563 | <code> | ||
564 | <file> failed sanity test (tmpdir) in path <path> [pkgconfig] | ||
565 | </code> | ||
566 | </para> | ||
567 | |||
568 | <para> | ||
569 | The specified <filename>.pc</filename> file contains | ||
570 | <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link><filename>/</filename><link linkend='var-WORKDIR'><filename>WORKDIR</filename></link> | ||
571 | paths. | ||
572 | Any <filename>.pc</filename> file containing these paths is | ||
573 | incorrect since <filename>pkg-config</filename> itself adds | ||
574 | the correct sysroot prefix when the files are accessed. | ||
575 | </para> | ||
576 | |||
577 | <para> | ||
578 | | ||
579 | </para> | ||
580 | </listitem> | ||
581 | </itemizedlist> | ||
582 | </para> | ||
583 | |||
584 | <para> | ||
585 | <itemizedlist> | ||
586 | <listitem> | ||
587 | <para> | ||
588 | <code> | ||
589 | <packagename> rdepends on <debug_packagename> [debug-deps] | ||
590 | </code> | ||
591 | </para> | ||
592 | |||
593 | <para> | ||
594 | A dependency exists between the specified non-dbg package | ||
595 | (i.e. a package whose name does not end in | ||
596 | <filename>-dbg</filename>) and a package that is a | ||
597 | <filename>dbg</filename> package. | ||
598 | The <filename>dbg</filename> packages contain | ||
599 | debug symbols and are brought in using several | ||
600 | different methods: | ||
601 | <itemizedlist> | ||
602 | <listitem><para> | ||
603 | Using the <filename>dbg-pkgs</filename> | ||
604 | <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link> | ||
605 | value. | ||
606 | </para></listitem> | ||
607 | <listitem><para> | ||
608 | Using | ||
609 | <link linkend='var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></link>. | ||
610 | </para></listitem> | ||
611 | <listitem><para> | ||
612 | As a dependency of another | ||
613 | <filename>dbg</filename> package that was brought | ||
614 | in using one of the above methods. | ||
615 | </para></listitem> | ||
616 | </itemizedlist> | ||
617 | The dependency might have been automatically added | ||
618 | because the <filename>dbg</filename> package erroneously | ||
619 | contains files that it should not contain (e.g. a | ||
620 | non-symlink <filename>.so</filename> file) or it might | ||
621 | have been added manually (e.g. by adding to | ||
622 | <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>). | ||
623 | </para> | ||
624 | |||
625 | <para> | ||
626 | | ||
627 | </para> | ||
628 | </listitem> | ||
629 | </itemizedlist> | ||
630 | </para> | ||
631 | |||
632 | <para> | ||
633 | <itemizedlist> | ||
634 | <listitem> | ||
635 | <para> | ||
636 | <code> | ||
637 | <packagename> rdepends on <dev_packagename> [dev-deps] | ||
638 | </code> | ||
639 | </para> | ||
640 | |||
641 | <para> | ||
642 | A dependency exists between the specified non-dev package | ||
643 | (a package whose name does not end in | ||
644 | <filename>-dev</filename>) and a package that is a | ||
645 | <filename>dev</filename> package. | ||
646 | The <filename>dev</filename> packages contain development | ||
647 | headers and are usually brought in using several different | ||
648 | methods: | ||
649 | <itemizedlist> | ||
650 | <listitem><para> | ||
651 | Using the <filename>dev-pkgs</filename> | ||
652 | <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link> | ||
653 | value. | ||
654 | </para></listitem> | ||
655 | <listitem><para> | ||
656 | Using | ||
657 | <link linkend='var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></link>. | ||
658 | </para></listitem> | ||
659 | <listitem><para> | ||
660 | As a dependency of another | ||
661 | <filename>dev</filename> package that was brought | ||
662 | in using one of the above methods. | ||
663 | </para></listitem> | ||
664 | </itemizedlist> | ||
665 | The dependency might have been automatically added (because | ||
666 | the <filename>dev</filename> package erroneously contains | ||
667 | files that it should not have (e.g. a non-symlink | ||
668 | <filename>.so</filename> file) or it might have been added | ||
669 | manually (e.g. by adding to | ||
670 | <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>. | ||
671 | </para> | ||
672 | |||
673 | <para> | ||
674 | | ||
675 | </para> | ||
676 | </listitem> | ||
677 | </itemizedlist> | ||
678 | </para> | ||
679 | |||
680 | <para> | ||
681 | <itemizedlist> | ||
682 | <listitem> | ||
683 | <para> | ||
684 | <code> | ||
685 | <var>_<packagename> is invalid: <comparison> (<value>) only comparisons <, =, >, <=, and >= are allowed [dep-cmp] | ||
686 | </code> | ||
687 | </para> | ||
688 | |||
689 | <para> | ||
690 | If you are adding a versioned dependency relationship to one | ||
691 | of the dependency variables | ||
692 | (<link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>, | ||
693 | <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>, | ||
694 | <link linkend='var-RSUGGESTS'><filename>RSUGGESTS</filename></link>, | ||
695 | <link linkend='var-RPROVIDES'><filename>RPROVIDES</filename></link>, | ||
696 | <link linkend='var-RREPLACES'><filename>RREPLACES</filename></link>, | ||
697 | or | ||
698 | <link linkend='var-RCONFLICTS'><filename>RCONFLICTS</filename></link>), | ||
699 | you must only use the named comparison operators. | ||
700 | Change the versioned dependency values you are adding | ||
701 | to match those listed in the message. | ||
702 | </para> | ||
703 | |||
704 | <para> | ||
705 | | ||
706 | </para> | ||
707 | </listitem> | ||
708 | </itemizedlist> | ||
709 | </para> | ||
710 | |||
711 | <para> | ||
712 | <itemizedlist> | ||
713 | <listitem> | ||
714 | <para> | ||
715 | <code> | ||
716 | <recipename>: The compile log indicates that host include and/or library paths were used. Please check the log '<logfile>' for more information. [compile-host-path] | ||
717 | </code> | ||
718 | </para> | ||
719 | |||
720 | <para> | ||
721 | The log for the | ||
722 | <link linkend='ref-tasks-compile'><filename>do_compile</filename></link> | ||
723 | task indicates that paths on the host were searched | ||
724 | for files, which is not appropriate when cross-compiling. | ||
725 | Look for "is unsafe for cross-compilation" or "CROSS COMPILE | ||
726 | Badness" in the specified log file. | ||
727 | </para> | ||
728 | |||
729 | <para> | ||
730 | | ||
731 | </para> | ||
732 | </listitem> | ||
733 | </itemizedlist> | ||
734 | </para> | ||
735 | |||
736 | <para> | ||
737 | <itemizedlist> | ||
738 | <listitem> | ||
739 | <para> | ||
740 | <code> | ||
741 | <recipename>: The install log indicates that host include and/or library paths were used. Please check the log '<logfile>' for more information. [install-host-path] | ||
742 | </code> | ||
743 | </para> | ||
744 | |||
745 | <para> | ||
746 | The log for the | ||
747 | <link linkend='ref-tasks-install'><filename>do_install</filename></link> | ||
748 | task indicates that paths on the host were searched | ||
749 | for files, which is not appropriate when cross-compiling. | ||
750 | Look for "is unsafe for cross-compilation" | ||
751 | or "CROSS COMPILE Badness" in the specified log file. | ||
752 | </para> | ||
753 | |||
754 | <para> | ||
755 | | ||
756 | </para> | ||
757 | </listitem> | ||
758 | </itemizedlist> | ||
759 | </para> | ||
760 | |||
761 | <para> | ||
762 | <itemizedlist> | ||
763 | <listitem> | ||
764 | <para> | ||
765 | <code> | ||
766 | This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities. Rerun configure task after fixing this. The path was '<path>' | ||
767 | </code> | ||
768 | </para> | ||
769 | |||
770 | <para> | ||
771 | The log for the | ||
772 | <link linkend='ref-tasks-configure'><filename>do_configure</filename></link> | ||
773 | task indicates that paths on the host were searched | ||
774 | for files, which is not appropriate when cross-compiling. | ||
775 | Look for "is unsafe for cross-compilation" or | ||
776 | "CROSS COMPILE Badness" in the specified log file. | ||
777 | </para> | ||
778 | |||
779 | <para> | ||
780 | | ||
781 | </para> | ||
782 | </listitem> | ||
783 | </itemizedlist> | ||
784 | </para> | ||
785 | |||
786 | <para> | ||
787 | <itemizedlist> | ||
788 | <listitem> | ||
789 | <para> | ||
790 | <code> | ||
791 | <packagename> doesn't match the [a-z0-9.+-]+ regex [pkgname] | ||
792 | </code> | ||
793 | </para> | ||
794 | |||
795 | <para> | ||
796 | The convention within the OpenEmbedded build system | ||
797 | (sometimes enforced by the package manager itself) is to | ||
798 | require that package names are all lower case | ||
799 | and to allow a restricted set of characters. | ||
800 | If your recipe name does not match this, or you add | ||
801 | packages to | ||
802 | <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link> | ||
803 | that do not conform to the convention, then you | ||
804 | will receive this error. | ||
805 | Rename your recipe. | ||
806 | Or, if you have added a non-conforming package name to | ||
807 | <filename>PACKAGES</filename>, change the package name | ||
808 | appropriately. | ||
809 | </para> | ||
810 | |||
811 | <para> | ||
812 | | ||
813 | </para> | ||
814 | </listitem> | ||
815 | </itemizedlist> | ||
816 | </para> | ||
817 | |||
818 | <para> | ||
819 | <itemizedlist> | ||
820 | <listitem> | ||
821 | <para> | ||
822 | <code> | ||
823 | <recipe>: configure was passed unrecognized options: <options> [unknown-configure-option] | ||
824 | </code> | ||
825 | </para> | ||
826 | |||
827 | <para> | ||
828 | The configure script is reporting that the specified | ||
829 | options are unrecognized. | ||
830 | This situation could be because the options | ||
831 | were previously valid but have been removed from the | ||
832 | configure script. | ||
833 | Or, there was a mistake when the options were added | ||
834 | and there is another option that should be used instead. | ||
835 | If you are unsure, consult the upstream build | ||
836 | documentation, the | ||
837 | <filename>./configure ‐‐help</filename> output, | ||
838 | and the upstream change log or release notes. | ||
839 | Once you have worked out what the appropriate | ||
840 | change is, you can update | ||
841 | <link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link> | ||
842 | or the individual | ||
843 | <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link> | ||
844 | option values accordingly. | ||
845 | </para> | ||
846 | |||
847 | <para> | ||
848 | | ||
849 | </para> | ||
850 | </listitem> | ||
851 | </itemizedlist> | ||
852 | </para> | ||
853 | |||
854 | <para> | ||
855 | <itemizedlist> | ||
856 | <listitem> | ||
857 | <para> | ||
858 | <code> | ||
859 | Recipe <recipefile> has PN of "<recipename>" which is in OVERRIDES, this can result in unexpected behavior. [pn-overrides] | ||
860 | </code> | ||
861 | </para> | ||
862 | |||
863 | <para> | ||
864 | The specified recipe has a name | ||
865 | (<link linkend='var-PN'><filename>PN</filename></link>) | ||
866 | value that appears in | ||
867 | <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>. | ||
868 | If a recipe is named such that its <filename>PN</filename> | ||
869 | value matches something already in | ||
870 | <filename>OVERRIDES</filename> (e.g. <filename>PN</filename> | ||
871 | happens to be the same as | ||
872 | <link linkend='var-MACHINE'><filename>MACHINE</filename></link> | ||
873 | or | ||
874 | <link linkend='var-DISTRO'><filename>DISTRO</filename></link>), | ||
875 | it can have unexpected consequences. | ||
876 | For example, assignments such as | ||
877 | <filename>FILES_${PN} = "xyz"</filename> effectively | ||
878 | turn into <filename>FILES = "xyz"</filename>. | ||
879 | Rename your recipe (or if <filename>PN</filename> is being | ||
880 | set explicitly, change the <filename>PN</filename> value) so | ||
881 | that the conflict does not occur. | ||
882 | See | ||
883 | <link linkend='var-FILES'><filename>FILES</filename></link> | ||
884 | for additional information. | ||
885 | </para> | ||
886 | |||
887 | <para> | ||
888 | | ||
889 | </para> | ||
890 | </listitem> | ||
891 | </itemizedlist> | ||
892 | </para> | ||
893 | |||
894 | <para> | ||
895 | <itemizedlist> | ||
896 | <listitem> | ||
897 | <para> | ||
898 | <code> | ||
899 | <recipefile>: Variable <variable> is set as not being package specific, please fix this. [pkgvarcheck] | ||
900 | </code> | ||
901 | </para> | ||
902 | |||
903 | <para> | ||
904 | Certain variables | ||
905 | (<link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>, | ||
906 | <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>, | ||
907 | <link linkend='var-RSUGGESTS'><filename>RSUGGESTS</filename></link>, | ||
908 | <link linkend='var-RCONFLICTS'><filename>RCONFLICTS</filename></link>, | ||
909 | <link linkend='var-RPROVIDES'><filename>RPROVIDES</filename></link>, | ||
910 | <link linkend='var-RREPLACES'><filename>RREPLACES</filename></link>, | ||
911 | <link linkend='var-FILES'><filename>FILES</filename></link>, | ||
912 | <filename>pkg_preinst</filename>, | ||
913 | <filename>pkg_postinst</filename>, | ||
914 | <filename>pkg_prerm</filename>, | ||
915 | <filename>pkg_postrm</filename>, and | ||
916 | <link linkend='var-ALLOW_EMPTY'><filename>ALLOW_EMPTY</filename></link>) | ||
917 | should always be set specific to a package (i.e. they | ||
918 | should be set with a package name override such as | ||
919 | <filename>RDEPENDS_${PN} = "value"</filename> rather than | ||
920 | <filename>RDEPENDS = "value"</filename>). | ||
921 | If you receive this error, correct any assignments to these | ||
922 | variables within your recipe. | ||
923 | </para> | ||
924 | |||
925 | <para> | ||
926 | | ||
927 | </para> | ||
928 | </listitem> | ||
929 | </itemizedlist> | ||
930 | </para> | ||
931 | |||
932 | <para> | ||
933 | <itemizedlist> | ||
934 | <listitem> | ||
935 | <para> | ||
936 | <code> | ||
937 | File '<file>' from <recipename> was already stripped, this will prevent future debugging! [already-stripped] | ||
938 | </code> | ||
939 | </para> | ||
940 | |||
941 | <para> | ||
942 | Produced binaries have already been stripped prior to the | ||
943 | build system extracting debug symbols. | ||
944 | It is common for upstream software projects to default to | ||
945 | stripping debug symbols for output binaries. | ||
946 | In order for debugging to work on the target using | ||
947 | <filename>-dbg</filename> packages, this stripping must be | ||
948 | disabled. | ||
949 | Depending on the build system used by the software being | ||
950 | built, disabling this stripping could be as easy as | ||
951 | specifying an additional configure option. | ||
952 | If not, disabling stripping might involve patching | ||
953 | the build scripts. | ||
954 | <note> | ||
955 | Disabling stripping here does not mean that the final | ||
956 | packaged binaries will be unstripped. | ||
957 | Once the OpenEmbedded build system splits out debug | ||
958 | symbols to the <filename>-dbg</filename> package, | ||
959 | it will then strip the symbols from the binaries. | ||
960 | </note> | ||
961 | </para> | ||
962 | |||
963 | <para> | ||
964 | | ||
965 | </para> | ||
966 | </listitem> | ||
967 | </itemizedlist> | ||
968 | </para> | ||
969 | |||
970 | <para> | ||
971 | <itemizedlist> | ||
972 | <listitem> | ||
973 | <para> | ||
974 | <code> | ||
975 | <packagename> is listed in PACKAGES multiple times, this leads to packaging errors. [packages-list] | ||
976 | </code> | ||
977 | </para> | ||
978 | |||
979 | <para> | ||
980 | Package names must appear only once in the | ||
981 | <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link> | ||
982 | variable. | ||
983 | You might receive this error if you are attempting to add a | ||
984 | package to <filename>PACKAGES</filename> that is | ||
985 | already in the variable's value. | ||
986 | </para> | ||
987 | |||
988 | <para> | ||
989 | | ||
990 | </para> | ||
991 | </listitem> | ||
992 | </itemizedlist> | ||
993 | </para> | ||
994 | |||
995 | <para> | ||
996 | <itemizedlist> | ||
997 | <listitem> | ||
998 | <para> | ||
999 | <code> | ||
1000 | FILES variable for package <packagename> contains '//' which is invalid. Attempting to fix this but you should correct the metadata. [files-invalid] | ||
1001 | </code> | ||
1002 | </para> | ||
1003 | |||
1004 | <para> | ||
1005 | The string "//" is invalid in a Unix path. | ||
1006 | Correct all occurrences where this string appears in a | ||
1007 | <link linkend='var-FILES'><filename>FILES</filename></link> | ||
1008 | variable so that there is only a single "/". | ||
1009 | </para> | ||
1010 | |||
1011 | <para> | ||
1012 | | ||
1013 | </para> | ||
1014 | </listitem> | ||
1015 | </itemizedlist> | ||
1016 | </para> | ||
1017 | |||
1018 | <para> | ||
1019 | <itemizedlist> | ||
1020 | <listitem> | ||
1021 | <para> | ||
1022 | <code> | ||
1023 | <recipename>: Files/directories were installed but not shipped [installed-vs-shipped] | ||
1024 | </code> | ||
1025 | </para> | ||
1026 | |||
1027 | <para> | ||
1028 | Files have been installed within the | ||
1029 | <link linkend='ref-tasks-install'><filename>do_install</filename></link> | ||
1030 | task but have not been included in any package by way of the | ||
1031 | <link linkend='var-FILES'><filename>FILES</filename></link> | ||
1032 | variable. | ||
1033 | Files that do not appear in any package cannot be present in | ||
1034 | an image later on in the build process. | ||
1035 | You need to do one of the following: | ||
1036 | <itemizedlist> | ||
1037 | <listitem><para> | ||
1038 | Add the files to <filename>FILES</filename> for the | ||
1039 | package you want them to appear in (e.g. | ||
1040 | <filename>FILES_${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename> for the main | ||
1041 | package). | ||
1042 | </para></listitem> | ||
1043 | <listitem><para> | ||
1044 | Delete the files at the end of the | ||
1045 | <filename>do_install</filename> task if the files | ||
1046 | are not needed in any package. | ||
1047 | </para></listitem> | ||
1048 | </itemizedlist> | ||
1049 | </para> | ||
1050 | |||
1051 | <para> | ||
1052 | | ||
1053 | </para> | ||
1054 | </listitem> | ||
1055 | </itemizedlist> | ||
1056 | </para> | ||
1057 | |||
1058 | <para> | ||
1059 | <itemizedlist> | ||
1060 | <listitem> | ||
1061 | <para> | ||
1062 | <code> | ||
1063 | <oldpackage>-<oldpkgversion> was registered as shlib provider for <library>, changing it to <newpackage>-<newpkgversion> because it was built later | ||
1064 | </code> | ||
1065 | </para> | ||
1066 | |||
1067 | <para> | ||
1068 | This message means that both | ||
1069 | <filename><oldpackage></filename> and | ||
1070 | <filename><newpackage></filename> provide the specified | ||
1071 | shared library. | ||
1072 | You can expect this message when a recipe has been renamed. | ||
1073 | However, if that is not the case, the message might indicate | ||
1074 | that a private version of a library is being erroneously | ||
1075 | picked up as the provider for a common library. | ||
1076 | If that is the case, you should add the library's | ||
1077 | <filename>.so</filename> file name to | ||
1078 | <link linkend='var-PRIVATE_LIBS'><filename>PRIVATE_LIBS</filename></link> | ||
1079 | in the recipe that provides | ||
1080 | the private version of the library. | ||
1081 | </para> | ||
1082 | </listitem> | ||
1083 | </itemizedlist> | ||
1084 | </para> | ||
1085 | |||
1086 | <!-- | ||
1087 | Here are some messages that might be documented in the future. | ||
1088 | Right now we are not documenting them because the QA checks are not | ||
1089 | enabled by default: | ||
1090 | |||
1091 | <para> | ||
1092 | <itemizedlist> | ||
1093 | <listitem><para> | ||
1094 | <literallayout class='monospaced'> | ||
1095 | Desktop file issue: <error> [desktop] | ||
1096 | </literallayout> | ||
1097 | NEED A DESCRIPTION AND SOLUTION | ||
1098 | </para></listitem> | ||
1099 | </itemizedlist> | ||
1100 | </para> | ||
1101 | |||
1102 | <para> | ||
1103 | <itemizedlist> | ||
1104 | <listitem><para> | ||
1105 | <literallayout class='monospaced'> | ||
1106 | <packagename>: <file>, installed in the base_prefix, requires a shared library under exec_prefix (<exec_prefix&t;g) [unsafe-references-in-binaries] | ||
1107 | </literallayout> | ||
1108 | NEED A DESCRIPTION AND SOLUTION | ||
1109 | </para></listitem> | ||
1110 | </itemizedlist> | ||
1111 | </para> | ||
1112 | |||
1113 | <para> | ||
1114 | <itemizedlist> | ||
1115 | <listitem><para> | ||
1116 | <literallayout class='monospaced'> | ||
1117 | <packagename>: Found a reference to <exec_prefix>/ in <path> - Shell scripts in base_bindir and base_sbindir should not reference anything in exec_prefix [unsafe-references-in-scripts] | ||
1118 | </literallayout> | ||
1119 | NEED A DESCRIPTION AND SOLUTION | ||
1120 | </para></listitem> | ||
1121 | </itemizedlist> | ||
1122 | </para> | ||
1123 | --> | ||
1124 | </section> | ||
1125 | |||
1126 | <section id='configuring-and-disabling-qa-checks'> | ||
1127 | <title>Configuring and Disabling QA Checks</title> | ||
1128 | |||
1129 | <para> | ||
1130 | You can configure the QA checks globally so that specific check | ||
1131 | failures either raise a warning or an error message, using the | ||
1132 | <link linkend='var-WARN_QA'><filename>WARN_QA</filename></link> and | ||
1133 | <link linkend='var-ERROR_QA'><filename>ERROR_QA</filename></link> | ||
1134 | variables, respectively. | ||
1135 | You can also disable checks within a particular recipe using | ||
1136 | <link linkend='var-INSANE_SKIP'><filename>INSANE_SKIP</filename></link>. | ||
1137 | For information on how to work with the QA checks, see the | ||
1138 | "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>" | ||
1139 | section. | ||
1140 | <note><title>Tip</title> | ||
1141 | Please keep in mind that the QA checks exist in order to | ||
1142 | detect real or potential problems in the packaged output. | ||
1143 | So exercise caution when disabling these checks. | ||
1144 | </note> | ||
1145 | </para> | ||
1146 | </section> | ||
1147 | |||
1148 | </chapter> | ||
1149 | <!-- | ||
1150 | vim: expandtab tw=80 ts=4 | ||
1151 | --> | ||