Bug 4788

Summary: Add missing QA checks
Product: [Documentation] Reference Reporter: Paul Eggleton <bluelightning>
Component: handbookAssignee: Scott Rifenbark <srifenbark>
Status: VERIFIED FIXED QA Contact:
Severity: enhancement    
Priority: Medium CC: alexandrux.palalau, bluelightning, poky.doc.watcher, poky.watcher, sgw, srifenbark
Version: unspecified   
Target Milestone: 1.5   
Hardware: All   
OS: Multiple   
URL: http://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/commit/?id=4a4df80c0b6012ad09ea526d2893e729aa06965b
Whiteboard: 18 September 2013: IN PROGRESS REVIEW
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: Done (doc changes complete)

Description Paul Eggleton 2013-06-28 15:40:40 UTC
The following QA checks are not mentioned in the classes reference section on insane.bbclass:

already-stripped
compile-host-path
dep-cmp
files-invalid
incompatible-license
installed-vs-shipped
install-host-path
libdir
packages-list
perm-config
perm-line
perm-link
pkgname
pkgv-undefined
pn-overrides
split-strip
unsafe-references-in-binaries
unsafe-references-in-scripts
var-undefined
arch
buildpaths
perms

(I can provide background for these)
Comment 1 Scott Rifenbark 2013-07-15 06:12:35 UTC
Paul, 

Here is the link to the existing section on insane.bbclass - http://www.yoctoproject.org/docs/1.5/ref-manual/ref-manual.html#ref-classes-insane.  Can you look at this to see the level of information we provide for checks.  Then, provides some detail for the missing checks for this bug?  I will then add them to the section.

Thanks, 
Scott
Comment 2 Paul Eggleton 2013-07-17 09:47:14 UTC
Here's some explanatory text for the missing items:

already-stripped: checks that produced binaries have not already been stripped prior to the build system extracting debug symbols. It is common for upstream software projects to default to stripping debug symbols for output binaries; in order for debugging on the target using -dbg packages to work, this stripping must be disabled.

split-strip: report when splitting/stripping debug symbols from binaries fails.

arch: checks to ensure the architecture, bit size and endianness of all output binaries matches that of the target. This can detect when the wrong compiler or compiler options have been used.

installed-vs-shipped: report when files have been installed within do_install but haven't been included in any package (via FILES). Files that don't appear in any package will not be able to be present in an image later on. Ideally all installed files should be packaged, or not be installed at all (or deleted at the end of do_install if this is easier).

dep-cmp: checks for invalid version comparison statements in runtime dependency relationships between packages (in RDEPENDS, RRECOMMENDS, RSUGGESTS, RPROVIDES, RREPLACES and RCONFLICTS variable values). Any invalid comparisons may trigger failures or undesirable behaviour when passed to the package manager.

files-invalid: checks for FILES variable values containing '//', which is invalid.

incompatible-license: report when packages are excluded from being created because they are marked with a license that is in INCOMPATIBLE_LICENSE.

compile-host-path: checks the do_compile log for indications that paths to locations on the build host were used, which may result in host contamination of the build output.

install-host-path: checks the do_install log for indications that paths to locations on the build host were used, which may result in host contamination of the build output.

libdir: checks for libraries being installed into incorrect (possibly hardcoded) installation paths. For instance, this will catch recipes installing /lib/bar.so when ${base_libdir} is "lib32", or installing /usr/lib64/foo.so when ${libdir} is "/usr/lib".

packages-list: checks for the same package being listed multiple times in the PACKAGES variable value, which can cause errors during packaging.

perm-config: reports lines in fs-perms.txt with an invalid format.

perm-line: reports lines in fs-perms.txt with an invalid format.

perm-link: reports lines in fs-perms.txt specifying 'link' where the specified target already exists.

pkgname: checks that all packages in PACKAGES have names that do not contain invalid characters (i.e. characters other than 0-9, a-z, ., +, and -)

pn-overrides: checks that a recipe does not have a name (PN) value that appears in OVERRIDES. If a recipe is named such that its PN value matches something already in OVERRIDES (such as when PN happens to be the same as MACHINE or DISTRO), it can have unexpected consequences. For example, assignments such as FILES_${PN} = "xyz" will effectively turn into FILES = "xyz".

unsafe-references-in-binaries: report when a binary installed in ${base_libdir}, ${base_bindir}, or ${base_sbindir} (/lib, /bin and /sbin respectively by default) depends on another binary installed under ${exec_prefix} (/usr by default). This is a concern if you wish the system to remain basically operable if /usr is mounted separately and is not mounted.

unsafe-references-in-scripts: report when a script file installed in ${base_libdir}, ${base_bindir}, or ${base_sbindir} (/lib, /bin and /sbin respectively by default) depends on files installed under ${exec_prefix} (/usr by default). This is a concern if you wish the system to remain basically operable if /usr is mounted separately and is not mounted.

var-undefined: reports when variables fundamental to packaging (such as WORKDIR, DEPLOY_DIR, D, PN and PKGD) are undefined during do_package.

pkgv-undefined: checks for the PKGV variable being undefined during do_package.

buildpaths: checks for paths to locations on the build host inside output files. (In practice this currently triggers too many false positives and thus is not normally enabled.)

perms: Not currently used, but reserved.
Comment 3 Scott Rifenbark 2013-08-13 09:06:47 UTC
See the http://www.yoctoproject.org/docs/1.5/ref-manual/ref-manual.html#ref-classes-insane section for the additional check documentation.  Send me feedback for any changes.

Scott
Comment 4 Scott Rifenbark 2013-09-19 00:53:40 UTC
No comments on the fix put in place last August so I am marking this bug RESOLVED.

Scott
Comment 5 Alexandru Palalau 2013-10-02 09:40:25 UTC
Switching to resolved.