classes/sanity: send sanity check failure as a separate event for Hob

In order to show a friendlier error message within Hob that does not
bury the actual sanity error in our typical preamble about disabling
sanity checks, use a separate event to indicate that sanity checks
failed.

This change is intended to work together with the related change to
BitBake, however it has a check to ensure that it does not fail with
older versions that do not include that change.

Fixes [YOCTO #2336].

(From OE-Core rev: 49d8b7b8c3b18da64583637db207f1f064a5bdb2)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton
2012-05-28 18:10:50 +01:00
committed by Richard Purdie
parent 0fd6a47ddf
commit 7a619c235f

View File

@@ -4,7 +4,16 @@
SANITY_REQUIRED_UTILITIES ?= "patch diffstat texi2html makeinfo svn bzip2 tar gzip gawk chrpath wget cpio" SANITY_REQUIRED_UTILITIES ?= "patch diffstat texi2html makeinfo svn bzip2 tar gzip gawk chrpath wget cpio"
def raise_sanity_error(msg): def raise_sanity_error(msg, d):
if d.getVar("SANITY_USE_EVENTS", True) == "1":
# FIXME: handle when BitBake version is too old to support bb.event.SanityCheckFailed
# We can just fire the event directly once the minimum version is bumped beyond 1.15.1
try:
bb.event.fire(bb.event.SanityCheckFailed(msg), d)
return
except AttributeError:
pass
bb.fatal(""" OE-core's config sanity checker detected a potential misconfiguration. bb.fatal(""" OE-core's config sanity checker detected a potential misconfiguration.
Either fix the cause of this error or at your own risk disable the checker (see sanity.conf). Either fix the cause of this error or at your own risk disable the checker (see sanity.conf).
Following is the list of potential problems / advisories: Following is the list of potential problems / advisories:
@@ -295,7 +304,7 @@ def check_sanity(sanity_data):
return return
if 0 == os.getuid(): if 0 == os.getuid():
raise_sanity_error("Do not use Bitbake as root.") raise_sanity_error("Do not use Bitbake as root.", sanity_data)
messages = "" messages = ""
@@ -529,7 +538,7 @@ def check_sanity(sanity_data):
messages = messages + "Error, you have a space in your COREBASE directory path. Please move the installation to a directory which doesn't include a space." messages = messages + "Error, you have a space in your COREBASE directory path. Please move the installation to a directory which doesn't include a space."
if messages != "": if messages != "":
raise_sanity_error(messages) raise_sanity_error(messages, sanity_data)
# Create a copy of the datastore and finalise it to ensure appends and # Create a copy of the datastore and finalise it to ensure appends and
# overrides are set - the datastore has yet to be finalised at ConfigParsed # overrides are set - the datastore has yet to be finalised at ConfigParsed
@@ -545,6 +554,7 @@ python check_sanity_eventhandler() {
check_sanity(sanity_data) check_sanity(sanity_data)
elif bb.event.getName(e) == "SanityCheck": elif bb.event.getName(e) == "SanityCheck":
sanity_data = copy_data(e) sanity_data = copy_data(e)
sanity_data.setVar("SANITY_USE_EVENTS", "1")
check_sanity(sanity_data) check_sanity(sanity_data)
bb.event.fire(bb.event.SanityCheckPassed(), e.data) bb.event.fire(bb.event.SanityCheckPassed(), e.data)