summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/sanity.bbclass87
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
158def 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
157def check_sanity(e): 199def 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