[oe-commits] org.oe.dev sanity.bbclass: Add ABI version number and checks so we can warn users when the 'abi' of TMPDIR changes. Add checks for qemu in various scenarios from poky. Add check TMPDIR hasn't moved from poky. Remove now unneeded bitbake version check.

rpurdie commit openembedded-commits at lists.openembedded.org
Thu Feb 21 14:36:41 UTC 2008


sanity.bbclass: Add ABI version number and checks so we can warn users when the 'abi' of TMPDIR changes. Add checks for qemu in various scenarios from poky. Add check TMPDIR hasn't moved from poky. Remove now unneeded bitbake version check.

Author: rpurdie at openembedded.org
Branch: org.openembedded.dev
Revision: 572f8a9e138fdfcf2db206180ca705b00b696a64
ViewMTN: http://monotone.openembedded.org/revision/info/572f8a9e138fdfcf2db206180ca705b00b696a64
Files:
1
classes/sanity.bbclass
Diffs:

#
# mt diff -rbd822ce6a034d341ed9363569e38ed3734989867 -r572f8a9e138fdfcf2db206180ca705b00b696a64
#
# 
# 
# patch "classes/sanity.bbclass"
#  from [ebf6cc13d544c4d677c13e3ea8dd18655c21e172]
#    to [476edb8104e59b309dc8324d39e691ffd1116e3a]
# 
============================================================
--- classes/sanity.bbclass	ebf6cc13d544c4d677c13e3ea8dd18655c21e172
+++ classes/sanity.bbclass	476edb8104e59b309dc8324d39e691ffd1116e3a
@@ -1,7 +1,16 @@
 #
 # Sanity check the users setup for common misconfigurations
 #
 
+#
+# SANITY_ABI allows us to notify users when the format of TMPDIR changes in 
+# an incompatible way. Such changes should usually be detailed in the commit
+# that breaks the format and have been previously discussed on the mailing list 
+# with general agreement from the core team.
+#
+SANITY_ABI = "0"
+SANITY_ABIFILE = "${TMPDIR}/abi_version"
+
 def raise_sanity_error(msg):
 	import bb
 	bb.fatal(""" Openembedded's config sanity checker detected a potential misconfiguration.
@@ -31,7 +40,7 @@ def check_sanity(e):
 		from distutils.version import LooseVersion
 	except ImportError:
 		def LooseVersion(v): print "WARNING: sanity.bbclass can't compare versions without python-distutils"; return 1
-	import os
+	import os, commands
 
 	# Check the bitbake version meets minimum requirements
 	minversion = data.getVar('BB_MIN_VERSION', e.data , True)
@@ -64,8 +73,8 @@ def check_sanity(e):
 	
 	# Check that the MACHINE is valid, if it is set
 	if data.getVar('MACHINE', e.data, True):
-	    if not check_conf_exists("conf/machine/${MACHINE}.conf", e.data):
-		messages = messages + 'Please set a valid MACHINE in your local.conf\n'
+		if not check_conf_exists("conf/machine/${MACHINE}.conf", e.data):
+			messages = messages + 'Please set a valid MACHINE in your local.conf\n'
 	
 	# Check that the DISTRO is valid
 	# need to take into account DISTRO renaming DISTRO
@@ -85,6 +94,19 @@ def check_sanity(e):
 
 	required_utilities = "patch help2man diffstat texi2html makeinfo cvs svn bzip2 tar gzip gawk md5sum"
 
+	if data.getVar('TARGET_ARCH', e.data, True) == "arm":
+		# qemu-native needs gcc 3.x
+		if "qemu-native" not in assume_provided and "gcc3-native" in assume_provided:
+			gcc_version = commands.getoutput("${BUILD_PREFIX}gcc --version | head -n 1 | cut -f 3 -d ' '")
+
+			if not check_gcc3(e.data) and gcc_version[0] != '3':
+				messages = messages + "gcc3-native was in ASSUME_PROVIDED but the gcc-3.x binary can't be found in PATH"
+				missing = missing + "gcc-3.x (needed for qemu-native),"
+
+		if "qemu-native" in assume_provided:
+			if not check_app_exists("qemu-arm", e.data):
+				messages = messages + "qemu-native was in ASSUME_PROVIDED but the QEMU binaries (qemu-arm) can't be found in PATH"
+
 	for util in required_utilities.split():
 		if not check_app_exists( util, e.data ):
 			missing = missing + "%s," % util
@@ -100,8 +122,38 @@ def check_sanity(e):
 
 	oes_bb_conf = data.getVar( 'OES_BITBAKE_CONF', e.data, True )
 	if not oes_bb_conf:
-		messages = messages + 'You do not include OpenEmbeddeds version of conf/bitbake.conf\n'
+		messages = messages + 'You do not include OpenEmbeddeds version of conf/bitbake.conf. This means your environment is misconfigured, in particular check BBPATH.\n'
 
+	#
+	# Check that TMPDIR hasn't changed location since the last time we were run
+	#
+	tmpdir = data.getVar('TMPDIR', e.data, True)
+	checkfile = os.path.join(tmpdir, "saved_tmpdir")
+	if os.path.exists(checkfile):
+		f = file(checkfile, "r")
+		if (f.read().strip() != tmpdir):
+			messages = messages + "Error, TMPDIR has changed location. You need to either move it back to %s or rebuild\n" % tmpdir
+	else:
+		f = file(checkfile, "w")
+		f.write(tmpdir)
+	f.close()
+
+	#
+	# Check the 'ABI' of TMPDIR
+	#
+	current_abi = data.getVar('SANITY_ABI', e.data, True)
+	abifile = data.getVar('SANITY_ABIFILE', e.data, True)
+	if os.path.exists(abifile):
+		f = file(abifile, "r")
+		abi = f.read().strip()
+		if (abi != current_abi):
+			# Code to convert from one ABI to another could go here if possible.
+			messages = messages + "Error, TMPDIR has changed ABI (%s to %s) and you need to either rebuild, revert or adjust it at your own risk.\n" % (abi, current_abi)
+	else:
+		f = file(abifile, "w")
+		f.write(current_abi)
+	f.close()
+
 	if messages != "":
 		raise_sanity_error(messages)
 
@@ -115,12 +167,7 @@ python check_sanity_eventhandler() {
     except ImportError:
         def LooseVersion(v): print "WARNING: sanity.bbclass can't compare versions without python-distutils"; return 1
 
-    if (LooseVersion(bb.__version__) > LooseVersion("1.8.6")):
-        if getName(e) == "ConfigParsed":
-            check_sanity(e)
-        return NotHandled
-
-    if getName(e) == "BuildStarted":
+    if getName(e) == "ConfigParsed":
         check_sanity(e)
 
     return NotHandled






More information about the Openembedded-commits mailing list