aboutsummaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorJoshua Lock <josh@linux.intel.com>2011-06-29 14:55:03 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-07-07 13:30:56 +0100
commit8fdea2a1ac8875a42b3a57f0fd7b530f851c20e9 (patch)
treedc2788e0be2a948ebb7c7f03e83b5b1312c4ee2c /meta
parent465692552eae360e9053df1fd26a2e24f21785c1 (diff)
downloadopenembedded-core-contrib-8fdea2a1ac8875a42b3a57f0fd7b530f851c20e9.tar.gz
sanity: implement network connectivity test
Sanity test to verify files can be fetched from the network using git, http and https fetchers point users at a page to help get set up in the case of a failure. Requires a variable CONNECTIVITY_CHECK_URIS to be set, using the same pattern as SRC_URI, of URI's to test against. The variable CONNECTIVITY_CHECK_MSG can be set to provide a custom error message, such as a pointer to some help, when this check fails. Addresses [YOCTO #933] Signed-off-by: Joshua Lock <josh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/sanity.bbclass37
1 files changed, 37 insertions, 0 deletions
diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
index 720777a399..c9d37c9d88 100644
--- a/meta/classes/sanity.bbclass
+++ b/meta/classes/sanity.bbclass
@@ -35,6 +35,8 @@ def check_sanity_tmpdir_change(tmpdir, data):
# Check that TMPDIR isn't on a filesystem with limited filename length (eg. eCryptFS)
testmsg = check_create_long_filename(tmpdir, "TMPDIR")
+ # Check that we can fetch from various network transports
+ testmsg = testmsg + check_connectivity(data)
return testmsg
def check_sanity_version_change(data):
@@ -79,6 +81,41 @@ def check_create_long_filename(filepath, pathname):
return "Failed to create a file in %s: %s" % (pathname, strerror)
return ""
+def check_connectivity(d):
+ # URI's to check can be set in the CONNECTIVITY_CHECK_URIS variable
+ # using the same syntax as for SRC_URI. If the variable is not set
+ # the check is skipped
+ test_uris = (bb.data.getVar('CONNECTIVITY_CHECK_URIS', d, True) or "").split()
+ retval = ""
+
+ # Only check connectivity if network enabled and the
+ # CONNECTIVITY_CHECK_URIS are set
+ network_enabled = not bb.data.getVar('BB_NO_NETWORK', d, True)
+ check_enabled = len(test_uris)
+ if check_enabled and network_enabled:
+ data = bb.data.createCopy(d)
+ bookmark = os.getcwd()
+ dldir = bb.data.expand('${TMPDIR}/sanity', data)
+ bb.data.setVar('DL_DIR', dldir, data)
+
+ try:
+ fetcher = bb.fetch2.Fetch(test_uris, data)
+ fetcher.download()
+ fetcher.clean(test_uris)
+ except Exception:
+ # Allow the message to be configured so that users can be
+ # pointed to a support mechanism.
+ msg = bb.data.getVar('CONNECTIVITY_CHECK_MSG', d, True) or ""
+ if len(msg) == 0:
+ msg = "Failed to fetch test data from the network. Please ensure your network is configured correctly.\n"
+ retval = msg
+ finally:
+ # Make sure we tidy up the cruft
+ oe.path.remove(dldir)
+ os.chdir(bookmark)
+
+ return retval
+
def check_sanity(e):
from bb import note, error, data, __version__