diff options
-rw-r--r-- | meta/classes/sanity.bbclass | 87 |
1 files changed, 50 insertions, 37 deletions
diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass index 7fc334388b..37b90289f5 100644 --- a/meta/classes/sanity.bbclass +++ b/meta/classes/sanity.bbclass | |||
@@ -154,6 +154,48 @@ def check_supported_distro(e): | |||
154 | else: | 154 | else: |
155 | bb.warn('Host distribution could not be determined; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.') | 155 | bb.warn('Host distribution could not be determined; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.') |
156 | 156 | ||
157 | # Checks we should only make if MACHINE is set correctly | ||
158 | def check_sanity_validmachine(e): | ||
159 | from bb import data | ||
160 | |||
161 | messages = "" | ||
162 | |||
163 | # Check TUNE_ARCH is set | ||
164 | if data.getVar('TUNE_ARCH', e.data, True) == 'INVALID': | ||
165 | messages = messages + 'TUNE_ARCH is unset. Please ensure your MACHINE configuration includes a valid tune configuration file which will set this correctly.\n' | ||
166 | |||
167 | # Check TARGET_ARCH is set correctly | ||
168 | if data.getVar('TARGE_ARCH', e.data, False) == '${TUNE_ARCH}': | ||
169 | messages = messages + 'TARGET_ARCH is being overwritten, likely by your MACHINE configuration files.\nPlease use a valid tune configuration file which should set this correctly automatically\nand avoid setting this in the machine configuration. See the OE-Core mailing list for more information.\n' | ||
170 | |||
171 | # Check TARGET_OS is set | ||
172 | if data.getVar('TARGET_OS', e.data, True) == 'INVALID': | ||
173 | messages = messages + 'Please set TARGET_OS directly, or choose a MACHINE or DISTRO that does so.\n' | ||
174 | |||
175 | # Check that we don't have duplicate entries in PACKAGE_ARCHS & that TUNE_PKGARCH is in PACKAGE_ARCHS | ||
176 | pkgarchs = data.getVar('PACKAGE_ARCHS', e.data, True) | ||
177 | tunepkg = data.getVar('TUNE_PKGARCH', e.data, True) | ||
178 | tunefound = False | ||
179 | seen = {} | ||
180 | dups = [] | ||
181 | |||
182 | for pa in pkgarchs.split(): | ||
183 | if seen.get(pa, 0) == 1: | ||
184 | dups.append(pa) | ||
185 | else: | ||
186 | seen[pa] = 1 | ||
187 | if pa == tunepkg: | ||
188 | tunefound = True | ||
189 | |||
190 | if len(dups): | ||
191 | messages = messages + "Error, the PACKAGE_ARCHS variable contains duplicates. The following archs are listed more than once: %s" % " ".join(dups) | ||
192 | |||
193 | if tunefound == False: | ||
194 | messages = messages + "Error, the PACKAGE_ARCHS variable does not contain TUNE_PKGARCH (%s)." % tunepkg | ||
195 | |||
196 | return messages | ||
197 | |||
198 | |||
157 | def check_sanity(e): | 199 | def check_sanity(e): |
158 | from bb import note, error, data, __version__ | 200 | from bb import note, error, data, __version__ |
159 | 201 | ||
@@ -185,17 +227,14 @@ def check_sanity(e): | |||
185 | if (LooseVersion(__version__) < LooseVersion(minversion)): | 227 | if (LooseVersion(__version__) < LooseVersion(minversion)): |
186 | messages = messages + 'Bitbake version %s is required and version %s was found\n' % (minversion, __version__) | 228 | messages = messages + 'Bitbake version %s is required and version %s was found\n' % (minversion, __version__) |
187 | 229 | ||
188 | # Check TUNE_ARCH is set | 230 | # Check that the MACHINE is valid, if it is set |
189 | if data.getVar('TUNE_ARCH', e.data, True) == 'INVALID': | 231 | if data.getVar('MACHINE', e.data, True): |
190 | messages = messages + 'TUNE_ARCH is unset. Please ensure your MACHINE configuration includes a valid tune configuration file which will set this correctly.\n' | 232 | if not check_conf_exists("conf/machine/${MACHINE}.conf", e.data): |
191 | 233 | messages = messages + 'Please set a valid MACHINE in your local.conf or environment\n' | |
192 | # Check TARGET_ARCH is set correctly | 234 | else: |
193 | if data.getVar('TARGE_ARCH', e.data, False) == '${TUNE_ARCH}': | 235 | messages = messages + check_sanity_validmachine(e) |
194 | messages = messages + 'TARGET_ARCH is being overwritten, likely by your MACHINE configuration files.\nPlease use a valid tune configuration file which should set this correctly automatically\nand avoid setting this in the machine configuration. See the OE-Core mailing list for more information.\n' | 236 | else: |
195 | 237 | messages = messages + 'Please set a MACHINE in your local.conf or environment\n' | |
196 | # Check TARGET_OS is set | ||
197 | if data.getVar('TARGET_OS', e.data, True) == 'INVALID': | ||
198 | messages = messages + 'Please set TARGET_OS directly, or choose a MACHINE or DISTRO that does so.\n' | ||
199 | 238 | ||
200 | # Check we are using a valid lacal.conf | 239 | # Check we are using a valid lacal.conf |
201 | current_conf = data.getVar('CONF_VERSION', e.data, True) | 240 | current_conf = data.getVar('CONF_VERSION', e.data, True) |
@@ -221,11 +260,6 @@ def check_sanity(e): | |||
221 | # Check user doesn't have ASSUME_PROVIDED = instead of += in local.conf | 260 | # Check user doesn't have ASSUME_PROVIDED = instead of += in local.conf |
222 | if "diffstat-native" not in assume_provided: | 261 | if "diffstat-native" not in assume_provided: |
223 | messages = messages + 'Please use ASSUME_PROVIDED +=, not ASSUME_PROVIDED = in your local.conf\n' | 262 | messages = messages + 'Please use ASSUME_PROVIDED +=, not ASSUME_PROVIDED = in your local.conf\n' |
224 | |||
225 | # Check that the MACHINE is valid, if it is set | ||
226 | if data.getVar('MACHINE', e.data, True): | ||
227 | if not check_conf_exists("conf/machine/${MACHINE}.conf", e.data): | ||
228 | messages = messages + 'Please set a valid MACHINE in your local.conf\n' | ||
229 | 263 | ||
230 | # Check that DL_DIR is set, exists and is writable. In theory, we should never even hit the check if DL_DIR isn't | 264 | # Check that DL_DIR is set, exists and is writable. In theory, we should never even hit the check if DL_DIR isn't |
231 | # set, since so much relies on it being set. | 265 | # set, since so much relies on it being set. |
@@ -415,27 +449,6 @@ def check_sanity(e): | |||
415 | elif oeroot.find (' ') != -1: | 449 | elif oeroot.find (' ') != -1: |
416 | 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." | 450 | 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." |
417 | 451 | ||
418 | # Check that we don't have duplicate entries in PACKAGE_ARCHS & that TUNE_PKGARCH is in PACKAGE_ARCHS | ||
419 | pkgarchs = data.getVar('PACKAGE_ARCHS', e.data, True) | ||
420 | tunepkg = data.getVar('TUNE_PKGARCH', e.data, True) | ||
421 | tunefound = False | ||
422 | seen = {} | ||
423 | dups = [] | ||
424 | |||
425 | for pa in pkgarchs.split(): | ||
426 | if seen.get(pa, 0) == 1: | ||
427 | dups.append(pa) | ||
428 | else: | ||
429 | seen[pa] = 1 | ||
430 | if pa == tunepkg: | ||
431 | tunefound = True | ||
432 | |||
433 | if len(dups): | ||
434 | messages = messages + "Error, the PACKAGE_ARCHS variable contains duplicates. The following archs are listed more than once: %s" % " ".join(dups) | ||
435 | |||
436 | if tunefound == False: | ||
437 | messages = messages + "Error, the PACKAGE_ARCHS variable does not contain TUNE_PKGARCH (%s)." % tunepkg | ||
438 | |||
439 | if messages != "": | 452 | if messages != "": |
440 | raise_sanity_error(messages) | 453 | raise_sanity_error(messages) |
441 | 454 | ||