Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Saul Wold <sgw@linux.intel.com>
To: Robert Yang <liezhi.yang@windriver.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH 1/3] insane/package: let package.bbclass inherit insane.bbclass
Date: Wed, 15 May 2013 11:12:42 +0300	[thread overview]
Message-ID: <5193437A.9090808@linux.intel.com> (raw)
In-Reply-To: <85e2938623fec682acb72bc6288a7528c94adca7.1368425946.git.liezhi.yang@windriver.com>

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@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 \
>



  reply	other threads:[~2013-05-15  8:31 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-13  9:09 [PATCH 0/3] insane/package: refactor packaging sanity tests Robert Yang
2013-05-13  9:09 ` [PATCH 1/3] insane/package: let package.bbclass inherit insane.bbclass Robert Yang
2013-05-15  8:12   ` Saul Wold [this message]
2013-05-13  9:09 ` [PATCH 2/3] defaultsetup.conf: remove INHERIT_INSANE Robert Yang
2013-05-13  9:09 ` [PATCH 3/3] insane/package: refactor packaging sanity tests Robert Yang
2013-05-13  9:55 ` [PATCH 0/3] " Martin Jansa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5193437A.9090808@linux.intel.com \
    --to=sgw@linux.intel.com \
    --cc=liezhi.yang@windriver.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox