Some source archive are not standard format.
For example, sometimes, we still need decompress file once again after base_do_unpack,
in such case, the following warning will be caught.
WARNING: xxx : the directory ${WORKDIR}/xxxx (xxxxxx) pointed to by the S variable doesn't exist \
- please set S within the recipe to point to where the source has been unpacked to
So, we should do this QA check after all of unpack jobs been completed.
(From OE-Core rev: 81216da9fa90dc8a67a0f367742b1e73afec0aa1)
Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Rather than just use d.getVar(X), use the more explict d.getVar(X, False)
since at some point in the future, having the default of expansion would
be nice. This is the first step towards that.
This patch was mostly made using the command:
sed -e 's:\(getVar([^,()]*\)\s*):\1, False):g' -i `grep -ril getVar *`
(From OE-Core rev: ab7c1d239b122c8e549e8112c88fd46c9e2b061b)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
When a recipe called 'foobar-test' links against 'foobar' without
listing that in DEPENDS, the build-deps check misses that error
because it looks for 'foobar' in a package string containing (among
others) the 'foobar-test' name, leading to the incorrect conclusion
that the package is listed as dependency.
The 'packages' string needs to be split into individual package names
before the check. Doing that once directly after reading the value is
more efficient than splitting inside package_qa_check_rdepends() because
the caller also needs the individual components.
Also use a set to speed up the 'package in packages' check.
(From OE-Core rev: 9f5792088315ab42f77fe1a1af7d2225e7ad5418)
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Use package_qa_handle_error to handle the QA issue.
(From OE-Core rev: c925847dea7b0480c901e94b6a071a18f5e00d45)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
If a prebuilt binary is installed via a recipe that
inherits allarch, an odd-looking traceback is thrown out.
Fixed by implementing a proper check and outputting an
error message that clarifies the issue.
Fixes [YOCTO #7662].
(From OE-Core rev: a938f2117989b596c50d9d7f3929dd3c0f893d08)
Signed-off-by: Cristian Iorga <cristian.iorga@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Add the target info for the 'microblazeeb' target which matches the
default MicroBlaze target info
(From OE-Core rev: 9c02b5af28f43b0b8ac825dffdbfa49a71c63132)
Signed-off-by: Nathan Rossi <nathan.rossi@xilinx.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Adds symlink-to-sysroot check to QA_WARN to detect symlinks that
point to locations under TMPDIR, which are most likely broken.
Changes filerdepends from set() to dict(), hence methods for adding
or deleting items had to change too. Now it keeps track of key:value
relationship, flags the QA issue; warning the user about which
file/package causes the problem, making it easier to debug.
[YOCTO #7126]
(From OE-Core rev: 9946909dc95c3274a98112cf786d171547b3ed75)
Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Add mappings for i586-elf, x86_64-elf and arm-eabi to binary lookup
table which allows for a variety of baremetal toolchain generation.
(From OE-Core rev: bf628a2fb1da704ff2a0f24c774eafdd12a081fb)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Checks in FILES and pkg_* variables, solves common mistake of
using ${D} instead of $D and warns the user accordingly.
[YOCTO #6642]
(From OE-Core rev: e3ea62b370f69d2435e76f6e444f5d3a3b25eb17)
Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The unknown-configure-option check is generally useful and should be enabled by
default.
(From OE-Core rev: 2f1909a6a78dec943800a0e8a39f890c007165b7)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The desktop-file-utils-native lacks a space.
(From OE-Core rev: 95f7d2c8fd5ee6ad0b7d202906073066f35a268d)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Add condition for build-deps, then we can use it in INSANE_SKIP.
(From OE-Core rev: 1cb62dbb1ecedc6232be3509a2887e92def2b8db)
Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The ipk or deb can't depend on file such as "/bin/bash" or
"/usr/bin/perl", so it knows nothing about the pkg depends bash or perl,
thus there would be dependencies problems when we run "apt-get
install/remove <pkg>" on the target, this check can help us find the
issues and then fix them manually.
* Benefits:
- Help to fix file rdepends issues for ipk and deb
- Help to fix abnormal rdepends.
- Help to check whether the rdepends is OK or not after build each
recipe (don't have to install to the image), for example, a recipe may
generate 10 binary packages, only a part of them will be installed to
the image by default, we can know whether the rdepends are OK or
not for the ones which are installed, but can't know the ones which
are not installed, this patch can help check all the 10 binary
packages' rdepends.
* Basic designs:
- Get all the RDEPENDS on the chain.
- Get the pkg's FILERPROVIDES from oe.packagedata.read_subpkgdata()
and save to set filerdepends.
- Get each RPDEPENDS' FILERPROVIDES, RPROVIDES and FILERPROVIDESFLIST,
and save to set rdep_rprovides.
- Do the set "filerdepends -= rdep_rprovides" and QA issue if
filerdepends is not null.
[YOCTO #1662]
(From OE-Core rev: cd5e0f01cdb4e7c759c01cf3f87952a20253737c)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
When adding patches or config files from bbappend files, it requires
the use of FILESEXTRAPATHS, which has been an issue and failure point
for people starting to work with bitbake and oe-core.
We add checking to standardize how to use FILESEXTRAPATHS. Only the
format of:
FILESEXTRAPATHS_append := ":${THISDIR}/Your_Files_Path" or
FILESEXTRAPATHS_prepend := "${THISDIR}/Your_Files_Path:"
is acceptable.
[YOCTO #5412]
(From OE-Core rev: 69e083237e632f7d84a7b218dd12d1a5ad95a229)
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Now that we can get the task dependency tree from bitbake, we can start
to use this to strengthen our QA checks. If a dependency is added on
something which isn't in our dependency tree, that is obviously a bad
thing for example.
This patch therefore checks the RDEPENDS against the list of tasks and
ensures we do have a dependency present, if not a QA warning or error
can be issued through the usual mechanism.
The implementation is complicated by needing to resolve the RDEPENDS to
a PN using pkgdata. Its possible that can be an RPROVIDES of another
package so we need to check that too if it isn't a direct RDEPENDS.
To allow this test to work, we need to extend the do_package_qa
dependencies to include all RDEPENDS. In practise the do_package_write_*
tasks already do this so there should be no new circular dependencies or
any issues like that.
For now the issues are warnings as there are issues this finds in
OE-Core which need to be resolved and certainly will be in other layers
too. This change should simplify and assist some of Martin's dependency
scripts, the idea for this came from a discussion with Martin. It has
changed in that it doesn't just cover shlibs dependencies but checks all
dependencies.
(From OE-Core rev: f6cb24cf2255297308ef57399a6be407129d9b8f)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
A series of commits had been integrated to avoid qa checking code
throwing the bitsize not matched error for x32 kernel files, the
same logic is also needed by n32 kernel which was not addressed in
that series.
This commit extends the condition for n32 kernel files.
(From OE-Core rev: 6a169be15439f12169869ecef890594796e70e58)
Signed-off-by: Ming Liu <ming.liu@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
QA errors/warnings would show the name of the QA failure in the error/warning message.
The format is listed:
<message> [QA check name]
You can see which QA check you need to disable if you want to disable it.
[YOCTO #6160]
(From OE-Core rev: a5ea622a8e012d3263bc36b6239ee43a4d1fb0ee)
Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
We're relying on the packagedata being available for this task to work
correctly so lets ensure it is with the correct dependency.
(From OE-Core rev: fa325e44f5b429b4038022b31285af9c94672943)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Its possible to run the package QA checks as a separate task rather than
as part of the do_package task. This offers more parallelism but the
fact that made me propose this is that ideally we'd like to access
pkgdata to help add new tests and to do that, we need to run later in
the task list. We also need to add in RDEPENDS to the task which apply
to do_package_write_* but not do_package. See the subsequent patches
for why this is desireable.
If we split into a separate task, we need to add in calls to read
the sub package data, build the cache structure used by do_package and
cover the task with sstate (which is empty and just acts as a stamp
saying it passed package QA). We also need to handle our own
dependencies.
(From OE-Core rev: d31f75a72cb2322f753d945da86d5f3287eef06b)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
We will use '-musl' to identify musl based systems
this patch lays the foundation for recognising those
and map them to internal variable representations
(From OE-Core rev: 9cd77aed67373e33dc69158ab02b94d7045c1119)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The Kernel module packages for x32 target have 64 bit binaries, which
breaks the QA_check expecting all the packages to be 32bit.
Make a special case for kernel module packages for x32 targets, to avoid
this false error.
Fixes Bug:
[YOCTO #5903]
(From OE-Core rev: a4261ab92735abfba835e916931d2e920f335aaa)
Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Add a sanity test that checks for symlinks in packages that point into the
TMPDIR on the host.
(From OE-Core rev: 9e28808a6d6f47dc10ad87b878c7e912c2bbe16f)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
OE-Core rev ec8590aa81e201e28e500935d31cd7266114471f (by me)
unintentionally disabled printing the actual checksum value if no
checksum was specified, i.e.:
LIC_FILES_CHKSUM = "file://COPYING;md5="
Printing the actual checksum in this case is really useful when writing
a new recipe, so put this back in.
(From OE-Core rev: e58cdd385584d7449236e6b1dc1bce0cbc8f2a0a)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Some recipes have configure scripts that recursively call other configure
scripts (e.g. dropbear). These multiple-line matches were not being handled
correctly, so iterate over every matching line instead of assuming only one line
was found.
[ YOCTO #5646 ]
(From OE-Core rev: b226ab4cf7779f4dfaa78210cb6249766ed564c1)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* If the md5 parameter is specified with no value, report that the
checksum is not specified instead of reporting that it has changed
* If the md5 checksum has changed, point directly to the license file in
a way that is easy to copy and paste and give the line numbers in an
easy to read form, as well as asking the user to verify that the new
contents matches the current LICENSE value.
(From OE-Core rev: ec8590aa81e201e28e500935d31cd7266114471f)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
bb.fetch.decodeurl() will throw if it doesn't like the look of the URL that
it's given. (Bitbake's idea of what constitutes a valid URL is somewhat
idiosyncratic so it is fairly easy to trip over this by mistake when writing
a recipe.)
If these exceptions are allowed to propagate all the way up to better_exec()
then we will get a large amount of python stack trace spew when they are
finally caught. Avoid that by catching them locally and throwing
bb.build.FuncFailed() with a suitable explanation instead.
(From OE-Core rev: ef35e164c62d89806367b822e3baeff482ec237f)
Signed-off-by: Phil Blundell <philb@gnu.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* we correctly have
${STAGING_DIR_NATIVE}${base_sbindir_native}
and then double slash in
${STAGING_DIR_NATIVE}/${base_bindir_native}
* similar in PKG_CONFIG_DIR where libdir also starts with slash
${STAGING_DIR_HOST}/${libdir}/pkgconfig
* also fix double slash in insane.bbclass and staging.bbclass
* I was a bit nervous about staging change (in case the / was important
in some weird use-case, but the extra slash is there since following
commit where other extra slashes were removed only the one before
libdir was kept:
commit 6ea78d6489
Author: Richard Purdie <rpurdie@linux.intel.com>
Date: Mon Nov 2 17:10:51 2009 +0000
autotools.bbclass: Separate out useful staging functions into
base.bbclass and call from autotools classes
* this isn't fixing any real-world issue AFAIK, I was just trying to
debug one weird case where debugedit fails with
canonicalization unexpectedly shrank by one character
and it's easier to grep for '//' without many harmless instances
already in run* scripts etc
(From OE-Core rev: 0ddaf52e9e344986ae2b016cc068d9eee71b4347)
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The BASE_WORKDIR variable can be used instead of enforcing WORKDIR being
TMPDIR/work (and aborting the build if it isn't).
(From OE-Core rev: 176a36ace1624f3bbe498307aeabbd7935de14e6)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
These have been deprecated for a long time, convert the remaining
references to the correct modules and prepare for removal of the
compatibility support from bitbake.
(From OE-Core rev: 6a39835af2b2b3c7797fe05479341d71a3f3aaf6)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* this way it's easier for distro to select if such issue should be
error, warning or ignored and also it gets recorded in qa.log
(From OE-Core rev: 44624853de8c88abdcae2ccd0902b390ff546d4c)
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This path check isn't handled in the normal way where a QA check
function is called for every file (there's some minor setup that we want
to avoid doing for every file) so we need to check INSANE_SKIP
explicitly.
In the process, change the code structure a little bit so that we can
report the package that contains the errant file.
Fixes [YOCTO #4822].
(From OE-Core rev: 3bdbec1bdecc52828cbbf8108786ff076c981845)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
There was a slight mistake in the recent change to the lib_re regex -
it still needs to begin with a /.
(From OE-Core rev: 194e47e6d8d9b9ee98e0203f0ebb574084277c46)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
/usr/share/info/dir should be generated at install time in a postinst.
Added QA warning to check at build time for this file. The warning
is disabled by default.
[YOCTO #3969]
(From OE-Core rev: be93fa1d8fd601d95147980938217142c7d98c62)
Signed-off-by: Mihai Prica <mihai.prica@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Ensure these do not pick up e.g. /lib/systemd/system/uuidd.socket, but
ensure we pickup e.g. /usr/lib/libnss3.so.1d (example from Debian). This
also fixes the broken exec_re regex (lib*.).
(From OE-Core rev: 391a361190d7da19ad3381121649a41a28516cb5)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This check was actually removed a very long time ago in
6656381714, before we even changed the QA
checks to use names instead of numbers - the name was probably added
ERROR_QA mistakenly because it hadn't also been removed from the comment
listing the QA checks or the function that determined which ones were
errors.
(From OE-Core rev: ff65497cd9a96d5ab49b16ba1f7e30a216ff4a42)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Currently, if a package QA type from package.bbclass is not listed in
ERROR_QA, it gets shown, regardless of whether it's in WARN_QA. This differs
from the behavior of the rest of the QA handling (which doesn't call
package_qa_handle_error at all if it's in neither _QA variable), and is
nonintuitive. Change this to use bb.note() if it's listed neither in ERROR_QA
nor WARN_QA, so it ends up in the task logs, but doesn't clutter up the user's
output.
(From OE-Core rev: 8f5675e6d3eb8473f367de72d2d3d8a702011a47)
Signed-off-by: Christopher Larson <chris_larson@mentor.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Refactor packaging sanity tests from package.bbclass to insane.bbclass
so that the message can respect WARN_QA (print the warning message and
go on the task) and ERROR_QA (print the error message and fail the
task).
- For the bb.warn(), give it a message name and add it to WARN_QA, then
use package_qa_handle_error() to handle it.
- For the bb.error(), give it a message name and add it to ERROR_QA,
then use package_qa_handle_error() to handle it.
- All the bb.warn() and bb.error() have been replaced in
package.bbclass.
- A few bb.warn() and bb.error() in insane.bbclass have been kept since
they can not be replaced or doesn't have to, for example the
bb.error() in package_qa_check_license(), it will print the error
message and then invoke bb.fatal() to fail the task, I think that we
don't have to replace it with package_qa_handle_error().
- Put all the WARN_QA and ERROR_QA in one line, so that they can be
redefined by the user easily.
[YOCTO #3190]
[YOCTO #4396]
(From OE-Core rev: 2f117ee615b703db07d3274ac592e2bd653743dd)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
RP's comment:
"What we're trying to do is move everything to use a standard mechanism
for reporting issues of this type (do_package). With insane.bbclass, you
can elect whether a given type of error is a warning or error and fails
the task."
* The package.bbclass had used package_qa_handle_error() which is from
insane.bbclass, and we will use it for handling other warnings and
errors, so let package.bbclass inherit insane.bbclass, this change will
make the insane as a requirement (always included).
* Change the "PACKAGEFUNCS ?=" to "+=", otherwise there would be an
error like:
Exception: variable SUMMARY references itself!
This is because we let package.bbclass inherit insane.bbclass, and
PACKAGEFUNCS has been set in insane.bbclass, so the "PACKAGEFUNCS ?="
will set nothing, then the "emit_pkgdata" doesn't run which will
cause this error.
* Add a QA_SANE variable in insane.bbclass, once the error type
is ERROR_QA, it will fail the task and stop the build.
[YOCTO #3190]
[YOCTO #4396]
(From OE-Core rev: 852dead71387c66ec0cba7c71e3814a74e409560)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The bb.fatal() is defined as:
def fatal(*args):
logger.critical(''.join(args))
sys.exit(1)
So anything after bb.fatal() in the same code block doesn't have any
effect, e.g.:
bb.fatal("%s_%s: %s" % (var, pkg, e))
raise e
The "raise e" should be removed.
I searched all the files which use bb.fatal(), only the following 3
classes have this issues:
insane.bbclass
package.bbclass
package_rpm.bbclass
[YOCTO #4461]
(From OE-Core rev: 4c47525c5a171b1282615c9fbc7d84addef85f92)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
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. Assignments such as
FILES_${PN} = "xyz" effectively turn into FILES = "xyz".
Implements [YOCTO #4288].
(From OE-Core rev: c331f0a5cac765174a1b5de5c12aec7e965d4158)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
There are various bits of cruft that have built up around our file accesses. This patch
cleans some of them up, specifically:
* Remove pointless "from __builtin__ import file"
* Use open(), not file()
* Wrap file usage in a with container to ensure files are closed
* Add missing .close() calls in some cases
(From OE-Core rev: a43e0a8ecd0441131e929daf998c3cd454d9c8f3)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
We open the file we're writing to in binary mode so open the input stream with the
same mode so things match. This avoids errors with python3.
(From OE-Core rev: 4f47b3a4726dd47e8a6db228fcaf25d1890e3e52)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>