diff options
author | Richard Purdie <richard@openedhand.com> | 2006-03-20 15:06:33 +0000 |
---|---|---|
committer | Richard Purdie <richard@openedhand.com> | 2006-03-20 15:06:33 +0000 |
commit | 3cd47ad235d54a9c539ae6fe4a5a2b4b5f7e5621 (patch) | |
tree | 36f8d8fec79a664ba060803f77cefe9b2e23ab61 /openembedded/classes/sanity.bbclass | |
parent | 78c5069d658152181870174362d90f6bf9ef59d7 (diff) | |
download | poky-3cd47ad235d54a9c539ae6fe4a5a2b4b5f7e5621.tar.gz |
Add new sanity checking infrstructure and class
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@308 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'openembedded/classes/sanity.bbclass')
-rw-r--r-- | openembedded/classes/sanity.bbclass | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/openembedded/classes/sanity.bbclass b/openembedded/classes/sanity.bbclass new file mode 100644 index 0000000000..f82af18d74 --- /dev/null +++ b/openembedded/classes/sanity.bbclass | |||
@@ -0,0 +1,69 @@ | |||
1 | # | ||
2 | # Sanity check the users setup for common misconfigurations | ||
3 | # | ||
4 | |||
5 | BB_MIN_VERSION = "1.3.3" | ||
6 | |||
7 | def raise_sanity_error(msg): | ||
8 | import bb | ||
9 | bb.fatal("Openembedded's config sanity checker detected a potential misconfiguration.\nEither fix cause of this error or at your own risk disable the checker (see sanity.conf).\n%s" % msg) | ||
10 | |||
11 | def check_conf_exists(fn, data): | ||
12 | import bb, os | ||
13 | |||
14 | bbpath = [] | ||
15 | fn = bb.data.expand(fn, data) | ||
16 | vbbpath = bb.data.getVar("BBPATH", data) | ||
17 | if vbbpath: | ||
18 | bbpath += vbbpath.split(":") | ||
19 | for p in bbpath: | ||
20 | currname = os.path.join(bb.data.expand(p, data), fn) | ||
21 | if os.access(currname, os.R_OK): | ||
22 | return True | ||
23 | return False | ||
24 | |||
25 | addhandler check_sanity_eventhandler | ||
26 | python check_sanity_eventhandler() { | ||
27 | from bb import note, error, data, __version__ | ||
28 | from bb.event import Handled, NotHandled, getName | ||
29 | from distutils.version import LooseVersion | ||
30 | import os | ||
31 | |||
32 | sanity_checked = bb.data.getVar('SANITY_CHECKED', e.data) | ||
33 | if sanity_checked == "1": | ||
34 | return | ||
35 | |||
36 | # Check the bitbake version meets minimum requirements | ||
37 | minversion = bb.data.getVar('BB_MIN_VERSION', e.data , True) | ||
38 | if not minversion: | ||
39 | # Hack: BB_MIN_VERSION hasn't been parsed yet so return | ||
40 | # and wait for the next call | ||
41 | return | ||
42 | |||
43 | if (LooseVersion(bb.__version__) < LooseVersion(minversion)): | ||
44 | raise_sanity_error('Bitbake version %s is required and version %s was found' % (minversion, bb.__version__)) | ||
45 | |||
46 | # Check TARGET_ARCH is set | ||
47 | if bb.data.getVar('TARGET_ARCH', e.data, True) == 'INVALID': | ||
48 | raise_sanity_error('Please set TARGET_ARCH directly, or choose a MACHINE or DISTRO that does so.') | ||
49 | |||
50 | # Check TARGET_OS is set | ||
51 | if bb.data.getVar('TARGET_OS', e.data, True) == 'INVALID': | ||
52 | raise_sanity_error('Please set TARGET_OS directly, or choose a MACHINE or DISTRO that does so.') | ||
53 | |||
54 | # Check user doesn't have ASSUME_PROVIDED = instead of += in local.conf | ||
55 | if "diffstat-native" not in bb.data.getVar('ASSUME_PROVIDED', e.data, True).split(): | ||
56 | raise_sanity_error('Please use ASSUME_PROVIDED +=, not ASSUME_PROVIDED = in your local.conf') | ||
57 | |||
58 | # Check the MACHINE is valid | ||
59 | if not check_conf_exists("conf/machine/${MACHINE}.conf", e.data): | ||
60 | raise_sanity_error('Please set a valid MACHINE in your local.conf') | ||
61 | |||
62 | # Check the distro is valid | ||
63 | if not check_conf_exists("conf/distro/${DISTRO}.conf", e.data): | ||
64 | raise_sanity_error('Please set a valid DISTRO in your local.conf') | ||
65 | |||
66 | bb.data.setVar('SANITY_CHECKED', "1", e.data) | ||
67 | return | ||
68 | } | ||
69 | |||