[OE-core] [PATCH 1/3] insane/package: let package.bbclass inherit insane.bbclass
Saul Wold
sgw at linux.intel.com
Wed May 15 08:12:42 UTC 2013
On 05/13/2013 12:09 PM, Robert Yang wrote:
> 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!
>
Robert,
Did you test this with a multilib build? I am seeing this error with
your change set on the Autobuilder.
Below is from the world build, you can see more examples of this failure
in the nightly-multilib
http://autobuilder.yoctoproject.org:8011/builders/nightly-multilib/builds/138/steps/Building%20Images/logs/stdio
Sau!
> ERROR: Error executing a python function in /srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-world/build/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_3.8.bb:
>
> The stack trace of python calls that resulted in this exception/failure was:
> File: 'write_specfile', lineno: 505, function: <module>
> 0501:
> 0502: specfile.close()
> 0503:
> 0504:
> *** 0505:write_specfile(d)
> 0506:
> File: 'write_specfile', lineno: 209, function: write_specfile
> 0205: conffiles = (localdata.getVar('CONFFILES', True) or "").split()
> 0206:
> 0207: splitname = strip_multilib(pkgname, d)
> 0208:
> *** 0209: splitsummary = (localdata.getVar('SUMMARY', True) or localdata.getVar('DESCRIPTION', True) or ".")
> 0210: splitversion = (localdata.getVar('PKGV', True) or "").replace('-', '+')
> 0211: splitrelease = (localdata.getVar('PKGR', True) or "")
> 0212: splitepoch = (localdata.getVar('PKGE', True) or "")
> 0213: splitlicense = (localdata.getVar('LICENSE', True) or "")
> File: '/srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-world/build/bitbake/lib/bb/data_smart.py', lineno: 503, function: getVar
> 0499: value = self.getVarFlag(var, "_content", False, noweakdefault)
> 0500:
> 0501: # Call expand() separately to make use of the expand cache
> 0502: if expand and value:
> *** 0503: return self.expand(value, var)
> 0504: return value
> 0505:
> 0506: def renameVar(self, key, newkey, **loginfo):
> 0507: """
> File: '/srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-world/build/bitbake/lib/bb/data_smart.py', lineno: 336, function: expand
> 0332:
> 0333: return varparse
> 0334:
> 0335: def expand(self, s, varname = None):
> *** 0336: return self.expandWithRefs(s, varname).value
> 0337:
> 0338:
> 0339: def finalize(self, parent = False):
> 0340: """Performs final steps upon the datastore, including application of overrides"""
> File: '/srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-world/build/bitbake/lib/bb/data_smart.py', lineno: 326, function: expandWithRefs
> 0322: raise
> 0323: except bb.parse.SkipPackage:
> 0324: raise
> 0325: except Exception as exc:
> *** 0326: raise ExpansionError(varname, s, exc)
> 0327:
> 0328: varparse.value = s
> 0329:
> 0330: if varname:
> Exception: ExpansionError: Failure expanding variable SUMMARY, expression was ${SUMMARY} - Debugging files which triggered exception Exception: variable SUMMARY references itself!
>
> ERROR: Function failed: write_specfile
> ERROR: Logfile of failure stored in: /srv/home/pokybuild/yocto-autobuilder-new/yocto-slave/nightly-world/build/build/tmp/work/x86-pokymllib32-linux/lib32-linux-libc-headers/3.8-r0/temp/log.do_package_write_rpm.32203
> 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]
>
> Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
> ---
> meta/classes/insane.bbclass | 6 ++++--
> meta/classes/package.bbclass | 5 ++++-
> 2 files changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
> index fb18022..c3e4b1e 100644
> --- a/meta/classes/insane.bbclass
> +++ b/meta/classes/insane.bbclass
> @@ -17,7 +17,6 @@
> # files under exec_prefix
>
>
> -inherit package
> PACKAGE_DEPENDS += "${QADEPENDS}"
> PACKAGEFUNCS += " do_package_qa "
>
> @@ -26,6 +25,7 @@ PACKAGEFUNCS += " do_package_qa "
> QADEPENDS = "prelink-native"
> QADEPENDS_class-native = ""
> QADEPENDS_class-nativesdk = ""
> +QA_SANE = "True"
>
> #
> # dictionary for elf headers
> @@ -133,6 +133,7 @@ def package_qa_handle_error(error_class, error_msg, d):
> package_qa_write_error(error_msg, d)
> if error_class in (d.getVar("ERROR_QA", True) or "").split():
> bb.error("QA Issue: %s" % error_msg)
> + d.setVar("QA_SANE", False)
> return False
> else:
> bb.warn("QA Issue: %s" % error_msg)
> @@ -821,7 +822,8 @@ python do_package_qa () {
> if 'libdir' in d.getVar("ALL_QA", True).split():
> package_qa_check_libdir(d)
>
> - if not walk_sane or not rdepends_sane or not deps_sane:
> + qa_sane = d.getVar("QA_SANE", True)
> + if not walk_sane or not rdepends_sane or not deps_sane or not qa_sane:
> bb.fatal("QA run found fatal errors. Please consider fixing them.")
> bb.note("DONE with PACKAGE QA")
> }
> diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
> index 36b3ae5..e9a324e 100644
> --- a/meta/classes/package.bbclass
> +++ b/meta/classes/package.bbclass
> @@ -42,6 +42,9 @@ inherit packagedata
> inherit prserv
> inherit chrpath
>
> +# Need the package_qa_handle_error() in insane.bbclass
> +inherit insane
> +
> PKGD = "${WORKDIR}/package"
> PKGDEST = "${WORKDIR}/packages-split"
>
> @@ -1814,7 +1817,7 @@ PACKAGESPLITFUNCS ?= " \
> package_do_split_locales \
> populate_packages"
> # Functions which process metadata based on split packages
> -PACKAGEFUNCS ?= " \
> +PACKAGEFUNCS += " \
> package_fixsymlinks \
> package_name_hook \
> package_do_filedeps \
>
More information about the Openembedded-core
mailing list