ref-manual: Added more QA checks to the insane.bbclass.

Fixes [YOCTO #4788]

Added a bunch of new checks to the list of checks in this
class.  I also recast the section head to just have the
class file as the section heading.  This resulted in a link
that needed changed.

(From yocto-docs rev: 4a4df80c0b6012ad09ea526d2893e729aa06965b)

Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Scott Rifenbark 2013-08-13 12:02:59 +03:00 committed by Richard Purdie
parent e26f253059
commit a89b418d3f
2 changed files with 193 additions and 7 deletions

View File

@ -454,11 +454,12 @@
</section>
<section id='ref-classes-insane'>
<title>Generated Output Quality Assurance Checks - <filename>insane.bbclass</filename></title>
<title><filename>insane.bbclass</filename></title>
<para>
This class adds a step to the package generation process that sanity checks the
packages generated by the OpenEmbedded build system.
This class adds a step to the package generation process so that
output quality assurance checks are generated by the OpenEmbedded
build system.
A range of checks are performed that check the build's output
for common problems that show up during runtime.
Distribution policy usually dictates whether to include this class.
@ -588,9 +589,194 @@
<filename>libtool</filename> adds the correct sysroot prefix when using the
files automatically itself.</para></listitem>
<listitem><para><emphasis><filename>desktop:</filename></emphasis>
Runs the <filename>desktop-file-validate</filename> program against any
<filename>.desktop</filename> files to validate their contents against
the specification for <filename>.desktop</filename> files.</para></listitem>
Runs the <filename>desktop-file-validate</filename> program
against any <filename>.desktop</filename> files to validate
their contents against the specification for
<filename>.desktop</filename> files.</para></listitem>
<listitem><para><emphasis><filename>already-stripped:</filename></emphasis>
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 to work on the target using
<filename>-dbg</filename> packages, this stripping must be
disabled.
</para></listitem>
<listitem><para><emphasis><filename>split-strip:</filename></emphasis>
Reports that splitting or stripping debug symbols from binaries
has failed.
</para></listitem>
<listitem><para><emphasis><filename>arch:</filename></emphasis>
Checks to ensure the architecture, bit size, and endianness
of all output binaries matches that of the target.
This test can detect when the wrong compiler or compiler options
have been used.
</para></listitem>
<listitem><para><emphasis><filename>installed-vs-shipped:</filename></emphasis>
Reports when files have been installed within
<filename>do_install</filename> but have not been included in
any package by way of the
<link linkend='var-FILES'><filename>FILES</filename></link>
variable.
Files that do not appear in any package cannot be present in
an image later on in the build process.
Ideally, all installed files should be packaged or not
installed at all.
These files can be deleted at the end of
<filename>do_install</filename> if that is easier.
</para></listitem>
<listitem><para><emphasis><filename>dep-cmp:</filename></emphasis>
Checks for invalid version comparison statements in runtime
dependency relationships between packages (i.e. in
<link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>,
<link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>,
<link linkend='var-RSUGGESTS'><filename>RSUGGESTS</filename></link>,
<link linkend='var-RPROVIDES'><filename>RPROVIDES</filename></link>,
<link linkend='var-RREPLACES'><filename>RREPLACES</filename></link>,
and
<link linkend='var-RCONFLICTS'><filename>RCONFLICTS</filename></link>
variable values).
Any invalid comparisons might trigger failures or undesirable
behavior when passed to the package manager.
</para></listitem>
<listitem><para><emphasis><filename>files-invalid:</filename></emphasis>
Checks for
<link linkend='var-FILES'><filename>FILES</filename></link>
variable values that contain "//", which is invalid.
</para></listitem>
<listitem><para><emphasis><filename>incompatible-license:</filename></emphasis>
Report when packages are excluded from being created due to
being marked with a license that is in
<filename>INCOMPATIBLE_LICENSE</filename>.
</para></listitem>
<listitem><para><emphasis><filename>compile-host-path:</filename></emphasis>
Checks the <filename>do_compile</filename> log for indications
that paths to locations on the build host were used.
Using such paths might result in host contamination of the
build output.
</para></listitem>
<listitem><para><emphasis><filename>install-host-path:</filename></emphasis>
Checks the <filename>do_install</filename> log for indications
that paths to locations on the build host were used.
Using such paths might result in host contamination of the
build output.
</para></listitem>
<listitem><para><emphasis><filename>libdir:</filename></emphasis>
Checks for libraries being installed into incorrect
(possibly hardcoded) installation paths.
For example, this test will catch recipes that install
<filename>/lib/bar.so</filename> when
<filename>${base_libdir}</filename> is "lib32".
Another example is when recipes install
<filename>/usr/lib64/foo.so</filename> when
<filename>${libdir}</filename> is "/usr/lib".
</para></listitem>
<listitem><para><emphasis><filename>packages-list:</filename></emphasis>
Checks for the same package being listed multiple times through
the <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
variable value.
Installing the package in this manner can cause errors during
packaging.
</para></listitem>
<listitem><para><emphasis><filename>perm-config:</filename></emphasis>
Reports lines in <filename>fs-perms.txt</filename> that have
an invalid format.
</para></listitem>
<listitem><para><emphasis><filename>perm-line:</filename></emphasis>
Reports lines in <filename>fs-perms.txt</filename> that have
an invalid format.
</para></listitem>
<listitem><para><emphasis><filename>perm-link:</filename></emphasis>
Reports lines in <filename>fs-perms.txt</filename> that
specify 'link' where the specified target already exists.
</para></listitem>
<listitem><para><emphasis><filename>pkgname:</filename></emphasis>
Checks that all packages in
<link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
have names that do not contain invalid characters (i.e.
characters other than 0-9, a-z, ., +, and -).
</para></listitem>
<listitem><para><emphasis><filename>pn-overrides:</filename></emphasis>
Checks that a recipe does not have a name
(<link linkend='var-PN'><filename>PN</filename></link>) value
that appears in
<link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>.
If a recipe is named such that its <filename>PN</filename>
value matches something already in
<filename>OVERRIDES</filename> (e.g. <filename>PN</filename>
happens to be the same as
<link linkend='var-MACHINE'><filename>MACHINE</filename></link>
or
<link linkend='var-DISTRO'><filename>DISTRO</filename></link>),
it can have unexpected consequences.
For example, assignments such as
<filename>FILES_${PN} = "xyz"</filename> effectively turn into
<filename>FILES = "xyz"</filename>.
</para></listitem>
<listitem><para><emphasis><filename>unsafe-references-in-binaries:</filename></emphasis>
Reports when a binary installed in
<filename>${base_libdir}</filename>,
<filename>${base_bindir}</filename>, or
<filename>${base_sbindir}</filename>, depends on another
binary installed under <filename>${exec_prefix}</filename>.
This dependency is a concern if you want the system to remain
basically operable if <filename>/usr</filename> is mounted
separately and is not mounted.
<note>
Defaults for binaries installed in
<filename>${base_libdir}</filename>,
<filename>${base_bindir}</filename>, and
<filename>${base_sbindir}</filename> are
<filename>/lib</filename>, <filename>/bin</filename>, and
<filename>/sbin</filename>, respectively.
The default for a binary installed
under <filename>${exec_prefix}</filename> is
<filename>/usr</filename>.
</note>
</para></listitem>
<listitem><para><emphasis><filename>unsafe-references-in-scripts:</filename></emphasis>
Reports when a script file installed in
<filename>${base_libdir}</filename>,
<filename>${base_bindir}</filename>, or
<filename>${base_sbindir}</filename>, depends on files
installed under <filename>${exec_prefix}</filename>.
This dependency is a concern if you want the system to remain
basically operable if <filename>/usr</filename> is mounted
separately and is not mounted.
<note>
Defaults for binaries installed in
<filename>${base_libdir}</filename>,
<filename>${base_bindir}</filename>, and
<filename>${base_sbindir}</filename> are
<filename>/lib</filename>, <filename>/bin</filename>, and
<filename>/sbin</filename>, respectively.
The default for a binary installed
under <filename>${exec_prefix}</filename> is
<filename>/usr</filename>.
</note>
</para></listitem>
<listitem><para><emphasis><filename>var-undefined:</filename></emphasis>
Reports when variables fundamental to packaging (i.e.
<link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>,
<link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>,
<link linkend='var-D'><filename>D</filename></link>,
<link linkend='var-PN'><filename>PN</filename></link>, and
<filename>PKGD</filename>) are undefined during
<filename>do_package</filename>.
</para></listitem>
<listitem><para><emphasis><filename>pkgv-undefined:</filename></emphasis>
Checks to see if the <filename>PKGV</filename> variable
is undefined during <filename>do_package</filename>.
</para></listitem>
<listitem><para><emphasis><filename>buildpaths:</filename></emphasis>
Checks for paths to locations on the build host inside the
output files.
Currently, this test triggers too many false positives and
thus is not normally enabled.
</para></listitem>
<listitem><para><emphasis><filename>perms:</filename></emphasis>
Currently, this check is unused but reserved.
</para></listitem>
</itemizedlist>
</para>
<note>

View File

@ -2116,7 +2116,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
</literallayout>
</para>
<para>
See the "<link linkend='ref-classes-insane'>Generated Output Quality Assurance Checks - <filename>insane.bbclass</filename></link>"
See the "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>"
section for a list of the valid QA checks you can
specify using this variable.
</para>