[OE-core] [PATCH 1/1] insane.bbclass: Added QA test for unexpanded ${D}
Mark Hatle
mark.hatle at windriver.com
Wed Dec 3 17:25:07 UTC 2014
On 12/3/14, 11:00 AM, Alejandro Hernandez wrote:
> Checks in FILES and pkg_* variables ,solves common mistake
> of using ${D} instead of $D and warns the user accordingly.
>
> [YOCTO #6642]
>
> Signed-off-by: Alejandro Hernandez <alejandro.hernandez at linux.intel.com>
> ---
> meta/classes/insane.bbclass | 34 +++++++++++++++++++++++++++++++++-
> 1 file changed, 33 insertions(+), 1 deletion(-)
>
> diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
> index 0b45374..419c89b 100644
> --- a/meta/classes/insane.bbclass
> +++ b/meta/classes/insane.bbclass
> @@ -906,6 +906,39 @@ def package_qa_check_deps(pkg, pkgdest, skip, d):
>
> return sane
>
> +def package_qa_check_unexpanded_d(d):
> + """
> + Check for unexpanded D variable in pkg_* and FILES
> + variables, warn the user to use it correctly.
> + """
> +
> + sane = True
> +
> + # Get variables for current package
> + pkg = d.getVar('PN', True)
> + localdata = bb.data.createCopy(d)
> + localdata.setVar('OVERRIDES', pkg)
> + bb.data.update_data(localdata)
> +
> + # Go through all variables and check if unexpanded D is found, warn the user accordingly
> + for var in 'FILES','pkg_preinst', 'pkg_postinst', 'pkg_prerm', 'pkg_postrm':
> + bbvar = localdata.getVar(var, False)
> + if bbvar:
> + if "${D}" in bbvar:
> + if var == 'FILES':
> + bb.error("FILES should not contain the ${D} variable as it references the local build directory not the target filesystem, best solution is to remove the ${D} reference")
> + sane = False
> + else:
> + bb.error("%s in %s recipe contains ${D}, it should be replaced by $D instead" % (var, pkg))
> + sane = False
> + return sane
> +
> +# Actual task to check for ${D
> +python do_qa_check_unexpanded_d(){
> + package_qa_check_unexpanded_d(d)
> +}
> +addtask qa_check_unexpanded_d before do_compile
> +
would it make more sense to have a qa check -before- compile, then add this to
that task.. and then have one (current place) after install?
That way we could add additional checks (as needed) for things that are
setup/confgiured incorrectly.. and checks for the build/install stuff..
--Mark
> # The PACKAGE FUNC to scan each package
> python do_package_qa () {
> import subprocess
> @@ -1000,7 +1033,6 @@ python do_package_qa () {
> if not package_qa_check_deps(package, pkgdest, skip, d):
> deps_sane = False
>
> -
> if 'libdir' in d.getVar("ALL_QA", True).split():
> package_qa_check_libdir(d)
>
>
More information about the Openembedded-core
mailing list