summaryrefslogtreecommitdiffstats
path: root/documentation/ref-manual/qa-checks.rst
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/ref-manual/qa-checks.rst')
-rw-r--r--documentation/ref-manual/qa-checks.rst911
1 files changed, 474 insertions, 437 deletions
diff --git a/documentation/ref-manual/qa-checks.rst b/documentation/ref-manual/qa-checks.rst
index 27d46de3fd..91a0f6149b 100644
--- a/documentation/ref-manual/qa-checks.rst
+++ b/documentation/ref-manual/qa-checks.rst
@@ -43,126 +43,30 @@ error form along with an explanation.
43Errors and Warnings 43Errors and Warnings
44=================== 44===================
45 45
46.. _qa-check-libexec: 46.. _qa-check-already-stripped:
47
48- ``<packagename>: <path> is using libexec please relocate to <libexecdir> [libexec]``
49
50 The specified package contains files in ``/usr/libexec`` when the
51 distro configuration uses a different path for ``<libexecdir>`` By
52 default, ``<libexecdir>`` is ``$prefix/libexec``. However, this
53 default can be changed (e.g. ``${libdir}``).
54
55  
56.. _qa-check-rpaths:
57
58- ``package <packagename> contains bad RPATH <rpath> in file <file> [rpaths]``
59
60 The specified binary produced by the recipe contains dynamic library
61 load paths (rpaths) that contain build system paths such as
62 :term:`TMPDIR`, which are incorrect for the target and
63 could potentially be a security issue. Check for bad ``-rpath``
64 options being passed to the linker in your
65 :ref:`ref-tasks-compile` log. Depending on the build
66 system used by the software being built, there might be a configure
67 option to disable rpath usage completely within the build of the
68 software.
69
70  
71.. _qa-check-useless-rpaths:
72
73- ``<packagename>: <file> contains probably-redundant RPATH <rpath> [useless-rpaths]``
74
75 The specified binary produced by the recipe contains dynamic library
76 load paths (rpaths) that on a standard system are searched by default
77 by the linker (e.g. ``/lib`` and ``/usr/lib``). While these paths
78 will not cause any breakage, they do waste space and are unnecessary.
79 Depending on the build system used by the software being built, there
80 might be a configure option to disable rpath usage completely within
81 the build of the software.
82
83  
84.. _qa-check-file-rdeps:
85
86- ``<packagename> requires <files>, but no providers in its RDEPENDS [file-rdeps]``
87
88 A file-level dependency has been identified from the specified
89 package on the specified files, but there is no explicit
90 corresponding entry in :term:`RDEPENDS`. If
91 particular files are required at runtime then :term:`RDEPENDS` should be
92 declared in the recipe to ensure the packages providing them are
93 built.
94
95  
96.. _qa-check-build-deps:
97
98- ``<packagename1> rdepends on <packagename2>, but it isn't a build dependency? [build-deps]``
99
100 There is a runtime dependency between the two specified packages, but
101 there is nothing explicit within the recipe to enable the
102 OpenEmbedded build system to ensure that dependency is satisfied.
103 This condition is usually triggered by an
104 :term:`RDEPENDS` value being added at the packaging
105 stage rather than up front, which is usually automatic based on the
106 contents of the package. In most cases, you should change the recipe
107 to add an explicit :term:`RDEPENDS` for the dependency.
108
109  
110.. _qa-check-dev-so:
111
112- ``non -dev/-dbg/nativesdk- package contains symlink .so: <packagename> path '<path>' [dev-so]``
113
114 Symlink ``.so`` files are for development only, and should therefore
115 go into the ``-dev`` package. This situation might occur if you add
116 ``*.so*`` rather than ``*.so.*`` to a non-dev package. Change
117 :term:`FILES` (and possibly
118 :term:`PACKAGES`) such that the specified ``.so``
119 file goes into an appropriate ``-dev`` package.
120
121  
122.. _qa-check-staticdev:
123
124- ``non -staticdev package contains static .a library: <packagename> path '<path>' [staticdev]``
125
126 Static ``.a`` library files should go into a ``-staticdev`` package.
127 Change :term:`FILES` (and possibly
128 :term:`PACKAGES`) such that the specified ``.a`` file
129 goes into an appropriate ``-staticdev`` package.
130
131  
132.. _qa-check-libdir:
133
134- ``<packagename>: found library in wrong location [libdir]``
135
136 The specified file may have been installed into an incorrect
137 (possibly hardcoded) installation path. For example, this test will
138 catch recipes that install ``/lib/bar.so`` when ``${base_libdir}`` is
139 "lib32". Another example is when recipes install
140 ``/usr/lib64/foo.so`` when ``${libdir}`` is "/usr/lib". False
141 positives occasionally exist. For these cases add "libdir" to
142 :term:`INSANE_SKIP` for the package.
143
144  
145.. _qa-check-debug-files:
146 47
147- ``non debug package contains .debug directory: <packagename> path <path> [debug-files]`` 48- ``File '<file>' from <recipename> was already stripped, this will prevent future debugging! [already-stripped]``
148 49
149 The specified package contains a ``.debug`` directory, which should 50 Produced binaries have already been stripped prior to the build
150 not appear in anything but the ``-dbg`` package. This situation might 51 system extracting debug symbols. It is common for upstream software
151 occur if you add a path which contains a ``.debug`` directory and do 52 projects to default to stripping debug symbols for output binaries.
152 not explicitly add the ``.debug`` directory to the ``-dbg`` package. 53 In order for debugging to work on the target using ``-dbg`` packages,
153 If this is the case, add the ``.debug`` directory explicitly to 54 this stripping must be disabled.
154 ``FILES:${PN}-dbg``. See :term:`FILES` for additional
155 information on :term:`FILES`.
156 55
157.. _qa-check-empty-dirs: 56 Depending on the build system used by the software being built,
57 disabling this stripping could be as easy as specifying an additional
58 configure option. If not, disabling stripping might involve patching
59 the build scripts. In the latter case, look for references to "strip"
60 or "STRIP", or the "-s" or "-S" command-line options being specified
61 on the linker command line (possibly through the compiler command
62 line if preceded with "-Wl,").
158 63
159- ``<packagename> installs files in <path>, but it is expected to be empty [empty-dirs]`` 64 .. note::
160 65
161 The specified package is installing files into a directory that is 66 Disabling stripping here does not mean that the final packaged
162 normally expected to be empty (such as ``/tmp``). These files may 67 binaries will be unstripped. Once the OpenEmbedded build system
163 be more appropriately installed to a different location, or 68 splits out debug symbols to the ``-dbg`` package, it will then
164 perhaps alternatively not installed at all, usually by updating the 69 strip the symbols from the binaries.
165 :ref:`ref-tasks-install` task/function.
166 70
167.. _qa-check-arch: 71.. _qa-check-arch:
168 72
@@ -182,8 +86,6 @@ Errors and Warnings
182 option is to check the :ref:`ref-tasks-compile` log 86 option is to check the :ref:`ref-tasks-compile` log
183 and verify that the compiler options being used are correct. 87 and verify that the compiler options being used are correct.
184 88
185  
186
187- ``Bit size did not match (<file_bits>, expected <machine_bits>) in <file> [arch]`` 89- ``Bit size did not match (<file_bits>, expected <machine_bits>) in <file> [arch]``
188 90
189 By default, the OpenEmbedded build system checks the Executable and 91 By default, the OpenEmbedded build system checks the Executable and
@@ -200,8 +102,6 @@ Errors and Warnings
200 option is to check the :ref:`ref-tasks-compile` log 102 option is to check the :ref:`ref-tasks-compile` log
201 and verify that the compiler options being used are correct. 103 and verify that the compiler options being used are correct.
202 104
203  
204
205- ``Endianness did not match (<file_endianness>, expected <machine_endianness>) in <file> [arch]`` 105- ``Endianness did not match (<file_endianness>, expected <machine_endianness>) in <file> [arch]``
206 106
207 By default, the OpenEmbedded build system checks the Executable and 107 By default, the OpenEmbedded build system checks the Executable and
@@ -218,96 +118,55 @@ Errors and Warnings
218 option is to check the :ref:`ref-tasks-compile` log 118 option is to check the :ref:`ref-tasks-compile` log
219 and verify that the compiler options being used are correct. 119 and verify that the compiler options being used are correct.
220 120
221   121.. _qa-check-build-deps:
222.. _qa-check-textrel:
223
224- ``ELF binary '<file>' has relocations in .text [textrel]``
225
226 The specified ELF binary contains relocations in its ``.text``
227 sections. This situation can result in a performance impact at
228 runtime.
229
230 Typically, the way to solve this performance issue is to add "-fPIC"
231 or "-fpic" to the compiler command-line options. For example, given
232 software that reads :term:`CFLAGS` when you build it,
233 you could add the following to your recipe::
234
235 CFLAGS:append = " -fPIC "
236
237 For more information on text relocations at runtime, see
238 https://www.akkadia.org/drepper/textrelocs.html.
239
240  
241.. _qa-check-ldflags:
242
243- ``File '<file>' in package '<package>' doesn't have GNU_HASH (didn't pass LDFLAGS?) [ldflags]``
244
245 This indicates that binaries produced when building the recipe have
246 not been linked with the :term:`LDFLAGS` options
247 provided by the build system. Check to be sure that the :term:`LDFLAGS`
248 variable is being passed to the linker command. A common workaround
249 for this situation is to pass in :term:`LDFLAGS` using
250 :term:`TARGET_CC_ARCH` within the recipe as
251 follows::
252
253 TARGET_CC_ARCH += "${LDFLAGS}"
254
255  
256.. _qa-check-xorg-driver-abi:
257
258- ``Package <packagename> contains Xorg driver (<driver>) but no xorg-abi- dependencies [xorg-driver-abi]``
259
260 The specified package contains an Xorg driver, but does not have a
261 corresponding ABI package dependency. The xserver-xorg recipe
262 provides driver ABI names. All drivers should depend on the ABI
263 versions that they have been built against. Driver recipes that
264 include ``xorg-driver-input.inc`` or ``xorg-driver-video.inc`` will
265 automatically get these versions. Consequently, you should only need
266 to explicitly add dependencies to binary driver recipes.
267
268  
269.. _qa-check-infodir:
270 122
271- ``The /usr/share/info/dir file is not meant to be shipped in a particular package. [infodir]`` 123- ``<packagename1> rdepends on <packagename2>, but it isn't a build dependency? [build-deps]``
272 124
273 The ``/usr/share/info/dir`` should not be packaged. Add the following 125 There is a runtime dependency between the two specified packages, but
274 line to your :ref:`ref-tasks-install` task or to your 126 there is nothing explicit within the recipe to enable the
275 ``do_install:append`` within the recipe as follows:: 127 OpenEmbedded build system to ensure that dependency is satisfied.
128 This condition is usually triggered by an
129 :term:`RDEPENDS` value being added at the packaging
130 stage rather than up front, which is usually automatic based on the
131 contents of the package. In most cases, you should change the recipe
132 to add an explicit :term:`RDEPENDS` for the dependency.
276 133
277 rm ${D}${infodir}/dir 134.. _qa-check-buildpaths:
278  
279 135
280.. _qa-check-symlink-to-sysroot: 136- ``File <filename> in package <packagename> contains reference to TMPDIR [buildpaths]``
281 137
282- ``Symlink <path> in <packagename> points to TMPDIR [symlink-to-sysroot]`` 138 This check ensures that build system paths (including :term:`TMPDIR`) do not
139 appear in output files, which not only leaks build system configuration into
140 the target, but also hinders binary reproducibility as the output will change
141 if the build system configuration changes.
283 142
284 The specified symlink points into :term:`TMPDIR` on the 143 Typically these paths will enter the output through some mechanism in the
285 host. Such symlinks will work on the host. However, they are clearly 144 configuration or compilation of the software being built by the recipe. To
286 invalid when running on the target. You should either correct the 145 resolve this issue you will need to determine how the detected path is
287 symlink to use a relative path or remove the symlink. 146 entering the output. Sometimes it may require adjusting scripts or code to
147 use a relative path rather than an absolute one, or to pick up the path from
148 runtime configuration or environment variables.
288 149
289   150.. _qa-check-configure-gettext:
290.. _qa-check-la:
291 151
292- ``<file> failed sanity test (workdir) in path <path> [la]`` 152- ``AM_GNU_GETTEXT used but no inherit gettext [configure-gettext]``
293 153
294 The specified ``.la`` file contains :term:`TMPDIR` 154 If a recipe is building something that uses automake and the automake
295 paths. Any ``.la`` file containing these paths is incorrect since 155 files contain an ``AM_GNU_GETTEXT`` directive then this check will fail
296 ``libtool`` adds the correct sysroot prefix when using the files 156 if there is no ``inherit gettext`` statement in the recipe to ensure
297 automatically itself. 157 that gettext is available during the build. Add ``inherit gettext`` to
158 remove the warning.
298 159
299   160.. _qa-check-configure-unsafe:
300.. _qa-check-pkgconfig:
301 161
302- ``<file> failed sanity test (tmpdir) in path <path> [pkgconfig]`` 162- ``This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities. Rerun configure task after fixing this. [configure-unsafe]``
303 163
304 The specified ``.pc`` file contains 164 The log for the :ref:`ref-tasks-configure` task
305 :term:`TMPDIR`\ ``/``\ :term:`WORKDIR` 165 indicates that paths on the host were searched for files, which is
306 paths. Any ``.pc`` file containing these paths is incorrect since 166 not appropriate when cross-compiling. Look for "is unsafe for
307 ``pkg-config`` itself adds the correct sysroot prefix when the files 167 cross-compilation" or "CROSS COMPILE Badness" in the specified log
308 are accessed. 168 file.
309 169
310  
311.. _qa-check-debug-deps: 170.. _qa-check-debug-deps:
312 171
313- ``<packagename> rdepends on <debug_packagename> [debug-deps]`` 172- ``<packagename> rdepends on <debug_packagename> [debug-deps]``
@@ -330,30 +189,18 @@ Errors and Warnings
330 (e.g. a non-symlink ``.so`` file) or it might have been added 189 (e.g. a non-symlink ``.so`` file) or it might have been added
331 manually (e.g. by adding to :term:`RDEPENDS`). 190 manually (e.g. by adding to :term:`RDEPENDS`).
332 191
333   192.. _qa-check-debug-files:
334.. _qa-check-dev-deps:
335
336- ``<packagename> rdepends on <dev_packagename> [dev-deps]``
337
338 There is a dependency between the specified non-dev package (a package
339 whose name does not end in ``-dev``) and a package that is a ``dev``
340 package. The ``dev`` packages contain development headers and are
341 usually brought in using several different methods:
342
343 - Using the ``dev-pkgs``
344 :term:`IMAGE_FEATURES` value.
345
346 - Using :term:`IMAGE_INSTALL`.
347 193
348 - As a dependency of another ``dev`` package that was brought in 194- ``non debug package contains .debug directory: <packagename> path <path> [debug-files]``
349 using one of the above methods.
350 195
351 The dependency might have been automatically added (because the 196 The specified package contains a ``.debug`` directory, which should
352 ``dev`` package erroneously contains files that it should not have 197 not appear in anything but the ``-dbg`` package. This situation might
353 (e.g. a non-symlink ``.so`` file) or it might have been added 198 occur if you add a path which contains a ``.debug`` directory and do
354 manually (e.g. by adding to :term:`RDEPENDS`). 199 not explicitly add the ``.debug`` directory to the ``-dbg`` package.
200 If this is the case, add the ``.debug`` directory explicitly to
201 ``FILES:${PN}-dbg``. See :term:`FILES` for additional
202 information on :term:`FILES`.
355 203
356  
357.. _qa-check-dep-cmp: 204.. _qa-check-dep-cmp:
358 205
359- ``<var>:<packagename> is invalid: <comparison> (<value>) only comparisons <, =, >, <=, and >= are allowed [dep-cmp]`` 206- ``<var>:<packagename> is invalid: <comparison> (<value>) only comparisons <, =, >, <=, and >= are allowed [dep-cmp]``
@@ -368,159 +215,98 @@ Errors and Warnings
368 comparison operators. Change the versioned dependency values you are 215 comparison operators. Change the versioned dependency values you are
369 adding to match those listed in the message. 216 adding to match those listed in the message.
370 217
371   218.. _qa-check-dev-deps:
372.. _qa-check-compile-host-path:
373
374- ``<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]``
375
376 The log for the :ref:`ref-tasks-compile` task
377 indicates that paths on the host were searched for files, which is
378 not appropriate when cross-compiling. Look for "is unsafe for
379 cross-compilation" or "CROSS COMPILE Badness" in the specified log
380 file.
381
382  
383.. _qa-check-install-host-path:
384
385- ``<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]``
386
387 The log for the :ref:`ref-tasks-install` task
388 indicates that paths on the host were searched for files, which is
389 not appropriate when cross-compiling. Look for "is unsafe for
390 cross-compilation" or "CROSS COMPILE Badness" in the specified log
391 file.
392
393  
394.. _qa-check-configure-unsafe:
395
396- ``This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities. Rerun configure task after fixing this. [configure-unsafe]``
397
398 The log for the :ref:`ref-tasks-configure` task
399 indicates that paths on the host were searched for files, which is
400 not appropriate when cross-compiling. Look for "is unsafe for
401 cross-compilation" or "CROSS COMPILE Badness" in the specified log
402 file.
403 219
404   220- ``<packagename> rdepends on <dev_packagename> [dev-deps]``
405.. _qa-check-pkgname:
406 221
407- ``<packagename> doesn't match the [a-z0-9.+-]+ regex [pkgname]`` 222 There is a dependency between the specified non-dev package (a package
223 whose name does not end in ``-dev``) and a package that is a ``dev``
224 package. The ``dev`` packages contain development headers and are
225 usually brought in using several different methods:
408 226
409 The convention within the OpenEmbedded build system (sometimes 227 - Using the ``dev-pkgs``
410 enforced by the package manager itself) is to require that package 228 :term:`IMAGE_FEATURES` value.
411 names are all lower case and to allow a restricted set of characters.
412 If your recipe name does not match this, or you add packages to
413 :term:`PACKAGES` that do not conform to the
414 convention, then you will receive this error. Rename your recipe. Or,
415 if you have added a non-conforming package name to :term:`PACKAGES`,
416 change the package name appropriately.
417 229
418   230 - Using :term:`IMAGE_INSTALL`.
419.. _qa-check-unknown-configure-option:
420 231
421- ``<recipe>: configure was passed unrecognized options: <options> [unknown-configure-option]`` 232 - As a dependency of another ``dev`` package that was brought in
233 using one of the above methods.
422 234
423 The configure script is reporting that the specified options are 235 The dependency might have been automatically added (because the
424 unrecognized. This situation could be because the options were 236 ``dev`` package erroneously contains files that it should not have
425 previously valid but have been removed from the configure script. Or, 237 (e.g. a non-symlink ``.so`` file) or it might have been added
426 there was a mistake when the options were added and there is another 238 manually (e.g. by adding to :term:`RDEPENDS`).
427 option that should be used instead. If you are unsure, consult the
428 upstream build documentation, the ``./configure --help`` output, and
429 the upstream change log or release notes. Once you have worked out
430 what the appropriate change is, you can update
431 :term:`EXTRA_OECONF`,
432 :term:`PACKAGECONFIG_CONFARGS`, or the
433 individual :term:`PACKAGECONFIG` option values
434 accordingly.
435 239
436   240.. _qa-check-desktop:
437.. _qa-check-pn-overrides:
438 241
439- ``Recipe <recipefile> has PN of "<recipename>" which is in OVERRIDES, this can result in unexpected behavior. [pn-overrides]`` 242- ``"Desktop file issue: ... [desktop]``
440 243
441 The specified recipe has a name (:term:`PN`) value that 244 Runs the ``desktop-file-validate`` program against any
442 appears in :term:`OVERRIDES`. If a recipe is named 245 ``.desktop`` files to validate their contents against the
443 such that its :term:`PN` value matches something already in :term:`OVERRIDES` 246 specification for ``.desktop`` files.
444 (e.g. :term:`PN` happens to be the same as :term:`MACHINE`
445 or :term:`DISTRO`), it can have unexpected
446 consequences. For example, assignments such as
447 ``FILES:${PN} = "xyz"`` effectively turn into ``FILES = "xyz"``.
448 Rename your recipe (or if :term:`PN` is being set explicitly, change the
449 :term:`PN` value) so that the conflict does not occur. See
450 :term:`FILES` for additional information.
451 247
452   248.. _qa-check-dev-so:
453.. _qa-check-pkgvarcheck:
454 249
455- ``<recipefile>: Variable <variable> is set as not being package specific, please fix this. [pkgvarcheck]`` 250- ``non -dev/-dbg/nativesdk- package contains symlink .so: <packagename> path '<path>' [dev-so]``
456 251
457 Certain variables (:term:`RDEPENDS`, 252 Symlink ``.so`` files are for development only, and should therefore
458 :term:`RRECOMMENDS`, 253 go into the ``-dev`` package. This situation might occur if you add
459 :term:`RSUGGESTS`, 254 ``*.so*`` rather than ``*.so.*`` to a non-dev package. Change
460 :term:`RCONFLICTS`, 255 :term:`FILES` (and possibly
461 :term:`RPROVIDES`, 256 :term:`PACKAGES`) such that the specified ``.so``
462 :term:`RREPLACES`, :term:`FILES`, 257 file goes into an appropriate ``-dev`` package.
463 ``pkg_preinst``, ``pkg_postinst``, ``pkg_prerm``, ``pkg_postrm``, and
464 :term:`ALLOW_EMPTY`) should always be set specific
465 to a package (i.e. they should be set with a package name override
466 such as ``RDEPENDS:${PN} = "value"`` rather than
467 ``RDEPENDS = "value"``). If you receive this error, correct any
468 assignments to these variables within your recipe.
469 258
259.. _qa-check-empty-dirs:
470 260
471- ``recipe uses DEPENDS:${PN}, should use DEPENDS [pkgvarcheck]`` 261- ``<packagename> installs files in <path>, but it is expected to be empty [empty-dirs]``
472 262
473 This check looks for instances of setting ``DEPENDS:${PN}`` 263 The specified package is installing files into a directory that is
474 which is erroneous (:term:`DEPENDS` is a recipe-wide variable and thus 264 normally expected to be empty (such as ``/tmp``). These files may
475 it is not correct to specify it for a particular package, nor will such 265 be more appropriately installed to a different location, or
476 an assignment actually work.) Set :term:`DEPENDS` instead. 266 perhaps alternatively not installed at all, usually by updating the
267 :ref:`ref-tasks-install` task/function.
477 268
269.. _qa-check-file-rdeps:
478 270
479.. _qa-check-already-stripped: 271- ``<packagename> requires <files>, but no providers in its RDEPENDS [file-rdeps]``
480 272
481- ``File '<file>' from <recipename> was already stripped, this will prevent future debugging! [already-stripped]`` 273 A file-level dependency has been identified from the specified
274 package on the specified files, but there is no explicit
275 corresponding entry in :term:`RDEPENDS`. If
276 particular files are required at runtime then :term:`RDEPENDS` should be
277 declared in the recipe to ensure the packages providing them are
278 built.
482 279
483 Produced binaries have already been stripped prior to the build 280.. _qa-check-files-invalid:
484 system extracting debug symbols. It is common for upstream software
485 projects to default to stripping debug symbols for output binaries.
486 In order for debugging to work on the target using ``-dbg`` packages,
487 this stripping must be disabled.
488 281
489 Depending on the build system used by the software being built, 282- ``FILES variable for package <packagename> contains '//' which is invalid. Attempting to fix this but you should correct the metadata. [files-invalid]``
490 disabling this stripping could be as easy as specifying an additional
491 configure option. If not, disabling stripping might involve patching
492 the build scripts. In the latter case, look for references to "strip"
493 or "STRIP", or the "-s" or "-S" command-line options being specified
494 on the linker command line (possibly through the compiler command
495 line if preceded with "-Wl,").
496 283
497 .. note:: 284 The string "//" is invalid in a Unix path. Correct all occurrences
285 where this string appears in a :term:`FILES` variable so
286 that there is only a single "/".
498 287
499 Disabling stripping here does not mean that the final packaged 288.. _qa-check-host-user-contaminated:
500 binaries will be unstripped. Once the OpenEmbedded build system
501 splits out debug symbols to the ``-dbg`` package, it will then
502 strip the symbols from the binaries.
503 289
504   290- ``<package name>: <path> is owned by gid/uid <gid/uid>, which is the same as the user running bitbake. This may be due to host contamination [host-user-contaminated]``
505.. _qa-check-packages-list:
506 291
507- ``<packagename> is listed in PACKAGES multiple times, this leads to packaging errors. [packages-list]`` 292 Checks that no package produced by the
293 recipe contains any files outside of ``/home`` with a user or group
294 ID that matches the user running BitBake. A match usually indicates
295 that the files are being installed with an incorrect UID/GID, since
296 target IDs are independent from host IDs. For additional information,
297 see the section describing the
298 :ref:`ref-tasks-install` task.
508 299
509 Package names must appear only once in the 300.. _qa-check-infodir:
510 :term:`PACKAGES` variable. You might receive this
511 error if you are attempting to add a package to :term:`PACKAGES` that is
512 already in the variable's value.
513 301
514   302- ``The /usr/share/info/dir file is not meant to be shipped in a particular package. [infodir]``
515.. _qa-check-files-invalid:
516 303
517- ``FILES variable for package <packagename> contains '//' which is invalid. Attempting to fix this but you should correct the metadata. [files-invalid]`` 304 The ``/usr/share/info/dir`` should not be packaged. Add the following
305 line to your :ref:`ref-tasks-install` task or to your
306 ``do_install:append`` within the recipe as follows::
518 307
519 The string "//" is invalid in a Unix path. Correct all occurrences 308 rm ${D}${infodir}/dir
520 where this string appears in a :term:`FILES` variable so
521 that there is only a single "/".
522 309
523  
524.. _qa-check-installed-vs-shipped: 310.. _qa-check-installed-vs-shipped:
525 311
526- ``<recipename>: Files/directories were installed but not shipped in any package [installed-vs-shipped]`` 312- ``<recipename>: Files/directories were installed but not shipped in any package [installed-vs-shipped]``
@@ -539,8 +325,6 @@ Errors and Warnings
539 - Delete the files at the end of the :ref:`ref-tasks-install` task if the 325 - Delete the files at the end of the :ref:`ref-tasks-install` task if the
540 files are not needed in any package. 326 files are not needed in any package.
541 327
542  
543
544- ``<oldpackage>-<oldpkgversion> was registered as shlib provider for <library>, changing it to <newpackage>-<newpkgversion> because it was built later`` 328- ``<oldpackage>-<oldpkgversion> was registered as shlib provider for <library>, changing it to <newpackage>-<newpkgversion> because it was built later``
545 329
546 This message means that both ``<oldpackage>`` and ``<newpackage>`` 330 This message means that both ``<oldpackage>`` and ``<newpackage>``
@@ -552,27 +336,73 @@ Errors and Warnings
552 :term:`PRIVATE_LIBS` in the recipe that provides 336 :term:`PRIVATE_LIBS` in the recipe that provides
553 the private version of the library. 337 the private version of the library.
554 338
339.. _qa-check-incompatible-license:
555 340
556.. _qa-check-unlisted-pkg-lics: 341- ``Excluding <package> from packaging as it has incompatible license(s): <license> [incompatible-license]``
557 342
558- ``LICENSE:<packagename> includes licenses (<licenses>) that are not listed in LICENSE [unlisted-pkg-lics]`` 343 Report when packages are excluded from being created due to being marked with
344 a license that is in :term:`INCOMPATIBLE_LICENSE`.
559 345
560 The :term:`LICENSE` of the recipe should be a superset 346.. _qa-check-invalid-chars:
561 of all the licenses of all packages produced by this recipe. In other
562 words, any license in ``LICENSE:*`` should also appear in
563 :term:`LICENSE`.
564 347
348- ``<variable> has non <envoding> characters [invalid-chars]``
565 349
566.. _qa-check-configure-gettext: 350 Checks that the recipe metadata variables :term:`DESCRIPTION`,
351 :term:`SUMMARY`, :term:`LICENSE`, and :term:`SECTION` do not contain
352 non-UTF-8 characters. Some package managers do not support such characters.
567 353
568- ``AM_GNU_GETTEXT used but no inherit gettext [configure-gettext]`` 354.. _qa-check-invalid-packageconfig:
569 355
570 If a recipe is building something that uses automake and the automake 356- ``<package>: invalid PACKAGECONFIG(s): <configs> [invalid-packageconfig]``
571 files contain an ``AM_GNU_GETTEXT`` directive then this check will fail 357
572 if there is no ``inherit gettext`` statement in the recipe to ensure 358 Checks that no undefined features are being added to :term:`PACKAGECONFIG`.
573 that gettext is available during the build. Add ``inherit gettext`` to 359 For example, any name "foo" for which the following form does not exist::
574 remove the warning. 360
361 PACKAGECONFIG[foo] = "..."
362
363.. _qa-check-la:
364
365- ``<file> failed sanity test (workdir) in path <path> [la]``
366
367 The specified ``.la`` file contains :term:`TMPDIR`
368 paths. Any ``.la`` file containing these paths is incorrect since
369 ``libtool`` adds the correct sysroot prefix when using the files
370 automatically itself.
371
372.. _qa-check-ldflags:
373
374- ``File '<file>' in package '<package>' doesn't have GNU_HASH (didn't pass LDFLAGS?) [ldflags]``
375
376 This indicates that binaries produced when building the recipe have
377 not been linked with the :term:`LDFLAGS` options
378 provided by the build system. Check to be sure that the :term:`LDFLAGS`
379 variable is being passed to the linker command. A common workaround
380 for this situation is to pass in :term:`LDFLAGS` using
381 :term:`TARGET_CC_ARCH` within the recipe as
382 follows::
383
384 TARGET_CC_ARCH += "${LDFLAGS}"
385
386.. _qa-check-libdir:
387
388- ``<packagename>: found library in wrong location [libdir]``
389
390 The specified file may have been installed into an incorrect
391 (possibly hardcoded) installation path. For example, this test will
392 catch recipes that install ``/lib/bar.so`` when ``${base_libdir}`` is
393 "lib32". Another example is when recipes install
394 ``/usr/lib64/foo.so`` when ``${libdir}`` is "/usr/lib". False
395 positives occasionally exist. For these cases add "libdir" to
396 :term:`INSANE_SKIP` for the package.
575 397
398.. _qa-check-libexec:
399
400- ``<packagename>: <path> is using libexec please relocate to <libexecdir> [libexec]``
401
402 The specified package contains files in ``/usr/libexec`` when the
403 distro configuration uses a different path for ``<libexecdir>`` By
404 default, ``<libexecdir>`` is ``$prefix/libexec``. However, this
405 default can be changed (e.g. ``${libdir}``).
576 406
577.. _qa-check-mime: 407.. _qa-check-mime:
578 408
@@ -584,7 +414,6 @@ Errors and Warnings
584 properly installed. Either add ``inherit mime`` to the recipe or remove the 414 properly installed. Either add ``inherit mime`` to the recipe or remove the
585 files at the :ref:`ref-tasks-install` step if they are not needed. 415 files at the :ref:`ref-tasks-install` step if they are not needed.
586 416
587
588.. _qa-check-mime-xdg: 417.. _qa-check-mime-xdg:
589 418
590- ``package contains desktop file with key 'MimeType' but does not inhert mime-xdg: <packagename> path '<file>' [mime-xdg]`` 419- ``package contains desktop file with key 'MimeType' but does not inhert mime-xdg: <packagename> path '<file>' [mime-xdg]``
@@ -595,40 +424,6 @@ Errors and Warnings
595 ``inherit mime`` to the recipe or remove the files at the 424 ``inherit mime`` to the recipe or remove the files at the
596 :ref:`ref-tasks-install` step if they are not needed. 425 :ref:`ref-tasks-install` step if they are not needed.
597 426
598
599.. _qa-check-src-uri-bad:
600
601- ``<recipename>: SRC_URI uses unstable GitHub archives [src-uri-bad]``
602
603 GitHub provides "archive" tarballs, however these can be re-generated
604 on the fly and thus the file's signature will not necessarily match that
605 in the :term:`SRC_URI` checksums in future leading to build failures. It is
606 recommended that you use an official release tarball or switch to
607 pulling the corresponding revision in the actual git repository instead.
608
609
610- ``SRC_URI uses PN not BPN [src-uri-bad]``
611
612 If some part of :term:`SRC_URI` needs to reference the recipe name, it should do
613 so using ${:term:`BPN`} rather than ${:term:`PN`} as the latter will change
614 for different variants of the same recipe e.g. when :term:`BBCLASSEXTEND`
615 or multilib are being used. This check will fail if a reference to ``${PN}``
616 is found within the :term:`SRC_URI` value --- change it to ``${BPN}`` instead.
617
618
619.. _qa-check-unhandled-features-check:
620
621- ``<recipename>: recipe doesn't inherit features_check [unhandled-features-check]``
622
623 This check ensures that if one of the variables that the
624 :ref:`ref-classes-features_check` class supports (e.g.
625 :term:`REQUIRED_DISTRO_FEATURES`) is used, then the recipe
626 inherits :ref:`ref-classes-features_check` in order for
627 the requirement to actually work. If you are seeing this message, either
628 add ``inherit features_check`` to your recipe or remove the reference to
629 the variable if it is not needed.
630
631
632.. _qa-check-missing-update-alternatives: 427.. _qa-check-missing-update-alternatives:
633 428
634- ``<recipename>: recipe defines ALTERNATIVE:<packagename> but doesn't inherit update-alternatives. This might fail during do_rootfs later! [missing-update-alternatives]`` 429- ``<recipename>: recipe defines ALTERNATIVE:<packagename> but doesn't inherit update-alternatives. This might fail during do_rootfs later! [missing-update-alternatives]``
@@ -639,41 +434,14 @@ Errors and Warnings
639 add ``inherit update-alternatives`` to your recipe or remove the reference to the variable 434 add ``inherit update-alternatives`` to your recipe or remove the reference to the variable
640 if it is not needed. 435 if it is not needed.
641 436
437.. _qa-check-packages-list:
642 438
643.. _qa-check-shebang-size: 439- ``<packagename> is listed in PACKAGES multiple times, this leads to packaging errors. [packages-list]``
644
645- ``<packagename>: <file> maximum shebang size exceeded, the maximum size is 128. [shebang-size]``
646
647 This check ensures that the shebang line (``#!`` in the first line) for a script
648 is not longer than 128 characters, which can cause an error at runtime depending
649 on the operating system. If you are seeing this message then the specified script
650 may need to be patched to have a shorter in order to avoid runtime problems.
651
652
653.. _qa-check-perllocalpod:
654
655- ``<packagename> contains perllocal.pod (<files>), should not be installed [perllocalpod]``
656
657 ``perllocal.pod`` is an index file of locally installed modules and so shouldn't be
658 installed by any distribution packages. The :ref:`ref-classes-cpan` class
659 already sets ``NO_PERLLOCAL`` to stop this file being generated by most Perl recipes,
660 but if a recipe is using ``MakeMaker`` directly then they might not be doing this
661 correctly. This check ensures that perllocal.pod is not in any package in order to
662 avoid multiple packages shipping this file and thus their packages conflicting
663 if installed together.
664
665
666.. _qa-check-usrmerge:
667
668- ``<packagename> package is not obeying usrmerge distro feature. /<path> should be relocated to /usr. [usrmerge]``
669
670 If ``usrmerge`` is in :term:`DISTRO_FEATURES`, this check will ensure that no package
671 installs files to root (``/bin``, ``/sbin``, ``/lib``, ``/lib64``) directories. If you are seeing this
672 message, it indicates that the :ref:`ref-tasks-install` step (or perhaps the build process that
673 :ref:`ref-tasks-install` is calling into, e.g. ``make install`` is using hardcoded paths instead
674 of the variables set up for this (``bindir``, ``sbindir``, etc.), and should be
675 changed so that it does.
676 440
441 Package names must appear only once in the
442 :term:`PACKAGES` variable. You might receive this
443 error if you are attempting to add a package to :term:`PACKAGES` that is
444 already in the variable's value.
677 445
678.. _qa-check-patch-fuzz: 446.. _qa-check-patch-fuzz:
679 447
@@ -749,7 +517,6 @@ Errors and Warnings
749 the patch updates that modify the context. Devtool may also refresh 517 the patch updates that modify the context. Devtool may also refresh
750 other things in the patches, those can be discarded. 518 other things in the patches, those can be discarded.
751 519
752
753.. _qa-check-patch-status: 520.. _qa-check-patch-status:
754 521
755- ``Missing Upstream-Status in patch <patchfile> Please add according to <url> [patch-status]`` 522- ``Missing Upstream-Status in patch <patchfile> Please add according to <url> [patch-status]``
@@ -768,22 +535,208 @@ Errors and Warnings
768 it must be a specific format. See the "Missing Upstream-Status" entry above 535 it must be a specific format. See the "Missing Upstream-Status" entry above
769 for more information. 536 for more information.
770 537
538.. _qa-check-pep517-backend:
771 539
772.. _qa-check-buildpaths: 540- ``inherits setuptools3 but has pyproject.toml with <build backend>, use the correct class [pep517-backend]``
773 541
774- ``File <filename> in package <packagename> contains reference to TMPDIR [buildpaths]`` 542 Checks that a recipe inheriting :ref:`ref-classes-setuptools3` has a
543 PEP517-compliant backend.
775 544
776 This check ensures that build system paths (including :term:`TMPDIR`) do not 545.. _qa-check-perllocalpod:
777 appear in output files, which not only leaks build system configuration into
778 the target, but also hinders binary reproducibility as the output will change
779 if the build system configuration changes.
780 546
781 Typically these paths will enter the output through some mechanism in the 547- ``<packagename> contains perllocal.pod (<files>), should not be installed [perllocalpod]``
782 configuration or compilation of the software being built by the recipe. To 548
783 resolve this issue you will need to determine how the detected path is 549 ``perllocal.pod`` is an index file of locally installed modules and so shouldn't be
784 entering the output. Sometimes it may require adjusting scripts or code to 550 installed by any distribution packages. The :ref:`ref-classes-cpan` class
785 use a relative path rather than an absolute one, or to pick up the path from 551 already sets ``NO_PERLLOCAL`` to stop this file being generated by most Perl recipes,
786 runtime configuration or environment variables. 552 but if a recipe is using ``MakeMaker`` directly then they might not be doing this
553 correctly. This check ensures that perllocal.pod is not in any package in order to
554 avoid multiple packages shipping this file and thus their packages conflicting
555 if installed together.
556
557.. _qa-check-perm-config:
558
559- ``Fixup Perms: invalid config line <line> [perm-config]``
560
561 Reports lines in ``fs-perms.txt`` that have an invalid format.
562
563.. _qa-check-perm-line:
564
565- ``Fixup perms: <config> invalid line: <line> [perm-line]``
566
567 Reports lines in ``fs-perms.txt`` that have an invalid format.
568
569.. _qa-check-perm-link:
570
571- ``Fixup Perms: Unable to correct directory link, target already exists: <directory> -> <target> [perm-link]``
572
573 Reports lines in ``fs-perms.txt`` that specify 'link' where the specified
574 target already exists.
575
576.. _qa-check-perms:
577
578- ``perms``: Currently, this check is unused but reserved.
579
580.. _qa-check-pkgconfig:
581
582- ``<file> failed sanity test (tmpdir) in path <path> [pkgconfig]``
583
584 The specified ``.pc`` file contains
585 :term:`TMPDIR`\ ``/``\ :term:`WORKDIR`
586 paths. Any ``.pc`` file containing these paths is incorrect since
587 ``pkg-config`` itself adds the correct sysroot prefix when the files
588 are accessed.
589
590.. _qa-check-pkgname:
591
592- ``<packagename> doesn't match the [a-z0-9.+-]+ regex [pkgname]``
593
594 The convention within the OpenEmbedded build system (sometimes
595 enforced by the package manager itself) is to require that package
596 names are all lower case and to allow a restricted set of characters.
597 If your recipe name does not match this, or you add packages to
598 :term:`PACKAGES` that do not conform to the
599 convention, then you will receive this error. Rename your recipe. Or,
600 if you have added a non-conforming package name to :term:`PACKAGES`,
601 change the package name appropriately.
602
603.. _qa-check-pkgvarcheck:
604
605- ``<recipefile>: Variable <variable> is set as not being package specific, please fix this. [pkgvarcheck]``
606
607 Certain variables (:term:`RDEPENDS`,
608 :term:`RRECOMMENDS`,
609 :term:`RSUGGESTS`,
610 :term:`RCONFLICTS`,
611 :term:`RPROVIDES`,
612 :term:`RREPLACES`, :term:`FILES`,
613 ``pkg_preinst``, ``pkg_postinst``, ``pkg_prerm``, ``pkg_postrm``, and
614 :term:`ALLOW_EMPTY`) should always be set specific
615 to a package (i.e. they should be set with a package name override
616 such as ``RDEPENDS:${PN} = "value"`` rather than
617 ``RDEPENDS = "value"``). If you receive this error, correct any
618 assignments to these variables within your recipe.
619
620
621- ``recipe uses DEPENDS:${PN}, should use DEPENDS [pkgvarcheck]``
622
623 This check looks for instances of setting ``DEPENDS:${PN}``
624 which is erroneous (:term:`DEPENDS` is a recipe-wide variable and thus
625 it is not correct to specify it for a particular package, nor will such
626 an assignment actually work.) Set :term:`DEPENDS` instead.
627
628.. _qa-check-pn-overrides:
629
630- ``Recipe <recipefile> has PN of "<recipename>" which is in OVERRIDES, this can result in unexpected behavior. [pn-overrides]``
631
632 The specified recipe has a name (:term:`PN`) value that
633 appears in :term:`OVERRIDES`. If a recipe is named
634 such that its :term:`PN` value matches something already in :term:`OVERRIDES`
635 (e.g. :term:`PN` happens to be the same as :term:`MACHINE`
636 or :term:`DISTRO`), it can have unexpected
637 consequences. For example, assignments such as
638 ``FILES:${PN} = "xyz"`` effectively turn into ``FILES = "xyz"``.
639 Rename your recipe (or if :term:`PN` is being set explicitly, change the
640 :term:`PN` value) so that the conflict does not occur. See
641 :term:`FILES` for additional information.
642
643.. _qa-check-shebang-size:
644
645- ``<packagename>: <file> maximum shebang size exceeded, the maximum size is 128. [shebang-size]``
646
647 This check ensures that the shebang line (``#!`` in the first line) for a script
648 is not longer than 128 characters, which can cause an error at runtime depending
649 on the operating system. If you are seeing this message then the specified script
650 may need to be patched to have a shorter in order to avoid runtime problems.
651
652.. _qa-check-src-uri-bad:
653
654- ``<recipename>: SRC_URI uses unstable GitHub archives [src-uri-bad]``
655
656 GitHub provides "archive" tarballs, however these can be re-generated
657 on the fly and thus the file's signature will not necessarily match that
658 in the :term:`SRC_URI` checksums in future leading to build failures. It is
659 recommended that you use an official release tarball or switch to
660 pulling the corresponding revision in the actual git repository instead.
661
662
663- ``SRC_URI uses PN not BPN [src-uri-bad]``
664
665 If some part of :term:`SRC_URI` needs to reference the recipe name, it should do
666 so using ${:term:`BPN`} rather than ${:term:`PN`} as the latter will change
667 for different variants of the same recipe e.g. when :term:`BBCLASSEXTEND`
668 or multilib are being used. This check will fail if a reference to ``${PN}``
669 is found within the :term:`SRC_URI` value --- change it to ``${BPN}`` instead.
670
671.. _qa-check-staticdev:
672
673- ``non -staticdev package contains static .a library: <packagename> path '<path>' [staticdev]``
674
675 Static ``.a`` library files should go into a ``-staticdev`` package.
676 Change :term:`FILES` (and possibly
677 :term:`PACKAGES`) such that the specified ``.a`` file
678 goes into an appropriate ``-staticdev`` package.
679
680.. _qa-check-symlink-to-sysroot:
681
682- ``Symlink <path> in <packagename> points to TMPDIR [symlink-to-sysroot]``
683
684 The specified symlink points into :term:`TMPDIR` on the
685 host. Such symlinks will work on the host. However, they are clearly
686 invalid when running on the target. You should either correct the
687 symlink to use a relative path or remove the symlink.
688
689.. _qa-check-recipe-naming:
690
691- ``Recipe <recipe> appears native/nativesdk but is not, should inherit native/nativesdk``
692
693 Checks that the recipe name and recipe class match, so that ``*-native``
694 recipes inherit :ref:`ref-classes-native` and ``nativesdk-*`` recipes
695 inherit :ref:`ref-classes-nativesdk`.
696
697.. _qa-check-rpaths:
698
699- ``package <packagename> contains bad RPATH <rpath> in file <file> [rpaths]``
700
701 The specified binary produced by the recipe contains dynamic library
702 load paths (rpaths) that contain build system paths such as
703 :term:`TMPDIR`, which are incorrect for the target and
704 could potentially be a security issue. Check for bad ``-rpath``
705 options being passed to the linker in your
706 :ref:`ref-tasks-compile` log. Depending on the build
707 system used by the software being built, there might be a configure
708 option to disable rpath usage completely within the build of the
709 software.
710
711.. _qa-check-textrel:
712
713- ``ELF binary '<file>' has relocations in .text [textrel]``
714
715 The specified ELF binary contains relocations in its ``.text``
716 sections. This situation can result in a performance impact at
717 runtime.
718
719 Typically, the way to solve this performance issue is to add "-fPIC"
720 or "-fpic" to the compiler command-line options. For example, given
721 software that reads :term:`CFLAGS` when you build it,
722 you could add the following to your recipe::
723
724 CFLAGS:append = " -fPIC "
725
726 For more information on text relocations at runtime, see
727 https://www.akkadia.org/drepper/textrelocs.html.
728
729.. _qa-check-unhandled-features-check:
730
731- ``<recipename>: recipe doesn't inherit features_check [unhandled-features-check]``
732
733 This check ensures that if one of the variables that the
734 :ref:`ref-classes-features_check` class supports (e.g.
735 :term:`REQUIRED_DISTRO_FEATURES`) is used, then the recipe
736 inherits :ref:`ref-classes-features_check` in order for
737 the requirement to actually work. If you are seeing this message, either
738 add ``inherit features_check`` to your recipe or remove the reference to
739 the variable if it is not needed.
787 740
788.. _qa-check-unimplemented-ptest: 741.. _qa-check-unimplemented-ptest:
789 742
@@ -795,6 +748,79 @@ Errors and Warnings
795 section in the Yocto Project Development Tasks Manual. See also the 748 section in the Yocto Project Development Tasks Manual. See also the
796 ":ref:`ref-classes-ptest`" section. 749 ":ref:`ref-classes-ptest`" section.
797 750
751.. _qa-check-unknown-configure-option:
752
753- ``<recipe>: configure was passed unrecognized options: <options> [unknown-configure-option]``
754
755 The configure script is reporting that the specified options are
756 unrecognized. This situation could be because the options were
757 previously valid but have been removed from the configure script. Or,
758 there was a mistake when the options were added and there is another
759 option that should be used instead. If you are unsure, consult the
760 upstream build documentation, the ``./configure --help`` output, and
761 the upstream change log or release notes. Once you have worked out
762 what the appropriate change is, you can update
763 :term:`EXTRA_OECONF`,
764 :term:`PACKAGECONFIG_CONFARGS`, or the
765 individual :term:`PACKAGECONFIG` option values
766 accordingly.
767
768.. _qa-check-unlisted-pkg-lics:
769
770- ``LICENSE:<packagename> includes licenses (<licenses>) that are not listed in LICENSE [unlisted-pkg-lics]``
771
772 The :term:`LICENSE` of the recipe should be a superset
773 of all the licenses of all packages produced by this recipe. In other
774 words, any license in ``LICENSE:*`` should also appear in
775 :term:`LICENSE`.
776
777.. _qa-check-useless-rpaths:
778
779- ``<packagename>: <file> contains probably-redundant RPATH <rpath> [useless-rpaths]``
780
781 The specified binary produced by the recipe contains dynamic library
782 load paths (rpaths) that on a standard system are searched by default
783 by the linker (e.g. ``/lib`` and ``/usr/lib``). While these paths
784 will not cause any breakage, they do waste space and are unnecessary.
785 Depending on the build system used by the software being built, there
786 might be a configure option to disable rpath usage completely within
787 the build of the software.
788
789.. _qa-check-usrmerge:
790
791- ``<packagename> package is not obeying usrmerge distro feature. /<path> should be relocated to /usr. [usrmerge]``
792
793 If ``usrmerge`` is in :term:`DISTRO_FEATURES`, this check will ensure that no package
794 installs files to root (``/bin``, ``/sbin``, ``/lib``, ``/lib64``) directories. If you are seeing this
795 message, it indicates that the :ref:`ref-tasks-install` step (or perhaps the build process that
796 :ref:`ref-tasks-install` is calling into, e.g. ``make install`` is using hardcoded paths instead
797 of the variables set up for this (``bindir``, ``sbindir``, etc.), and should be
798 changed so that it does.
799
800.. _qa-check-var-undefined:
801
802- ``WORKDIR, DEPLOY_DIR, D, PN and PKGD all must be defined, unable to package [var-undefined]``
803
804 Reports when variables fundamental to packaging (i.e. :term:`WORKDIR`,
805 :term:`DEPLOY_DIR`, :term:`D`, :term:`PN`, and :term:`PKGD`) are undefined
806 during :ref:`ref-tasks-package`.
807
808.. _qa-check-version-going-backwards:
809
810- ``Package version for package <package> went backwards which would break package feeds (from <version2> to <version1>) [version-going-backwards]``
811
812 If the :ref:`ref-classes-buildhistory` class is enabled, reports when a
813 package being written out has a lower version than the previously written
814 package under the same name. If you are placing output packages into a feed
815 and upgrading packages on a target system using that feed, the version of a
816 package going backwards can result in the target system not correctly
817 upgrading to the "new" version of the package.
818
819 .. note::
820
821 This is only relevant when you are using runtime package management
822 on your target system.
823
798.. _qa-check-virtual-slash: 824.. _qa-check-virtual-slash:
799 825
800- ``<variable> is set to <value> but the substring 'virtual/' holds no meaning in this context. It only works for build time dependencies, not runtime ones. It is suggested to use 'VIRTUAL-RUNTIME_' variables instead.`` 826- ``<variable> is set to <value> but the substring 'virtual/' holds no meaning in this context. It only works for build time dependencies, not runtime ones. It is suggested to use 'VIRTUAL-RUNTIME_' variables instead.``
@@ -804,6 +830,17 @@ Errors and Warnings
804 context (i.e. :term:`RPROVIDES` and :term:`RDEPENDS`). Use 830 context (i.e. :term:`RPROVIDES` and :term:`RDEPENDS`). Use
805 :term:`VIRTUAL-RUNTIME` variables instead for the latter. 831 :term:`VIRTUAL-RUNTIME` variables instead for the latter.
806 832
833.. _qa-check-xorg-driver-abi:
834
835- ``Package <packagename> contains Xorg driver (<driver>) but no xorg-abi- dependencies [xorg-driver-abi]``
836
837 The specified package contains an Xorg driver, but does not have a
838 corresponding ABI package dependency. The xserver-xorg recipe
839 provides driver ABI names. All drivers should depend on the ABI
840 versions that they have been built against. Driver recipes that
841 include ``xorg-driver-input.inc`` or ``xorg-driver-video.inc`` will
842 automatically get these versions. Consequently, you should only need
843 to explicitly add dependencies to binary driver recipes.
807 844
808Configuring and Disabling QA Checks 845Configuring and Disabling QA Checks
809=================================== 846===================================