summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meta/classes/sanity.bbclass39
1 files changed, 31 insertions, 8 deletions
diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
index 969cc2e59b..9d183e352f 100644
--- a/meta/classes/sanity.bbclass
+++ b/meta/classes/sanity.bbclass
@@ -21,18 +21,41 @@ def check_conf_exists(fn, data):
return True
return False
-def check_sanity_sstate_dir_change():
+def check_sanity_sstate_dir_change(sstate_dir):
# Sanity checks to be done when the value of SSTATE_DIR changes
- return ""
-def check_sanity_tmpdir_change():
+ # Check that SSTATE_DIR isn't on a filesystem with limited filename length (eg. eCryptFS)
+ testmsg = ""
+ if sstate_dir != "":
+ testmsg = check_create_long_filename(sstate_dir, "SSTATE_DIR")
+ return testmsg
+
+def check_sanity_tmpdir_change(tmpdir):
# Sanity checks to be done when the value of TMPDIR changes
- return ""
+
+ # Check that TMPDIR isn't on a filesystem with limited filename length (eg. eCryptFS)
+ testmsg = check_create_long_filename(tmpdir, "TMPDIR")
+ return testmsg
def check_sanity_version_change():
# Sanity checks to be done when SANITY_VERSION changes
return ""
+def check_create_long_filename(filepath, pathname):
+ testfile = os.path.join(filepath, ''.join([`num`[-1] for num in xrange(1,200)]))
+ try:
+ if not os.path.exists(filepath):
+ bb.utils.mkdirhier(filepath)
+ f = file(testfile, "w")
+ f.close()
+ os.remove(testfile)
+ except IOError as (errno, strerror):
+ if errno == 36: # ENAMETOOLONG
+ return "Failed to create a file with a long name in %s. Please use a filesystem that does not unreasonably limit filename length.\n" % pathname
+ else:
+ return "Failed to create a file in %s: %s" % (pathname, strerror)
+ return ""
+
def check_sanity(e):
from bb import note, error, data, __version__
@@ -206,13 +229,13 @@ def check_sanity(e):
sanity_version = int(data.getVar('SANITY_VERSION', e.data, True) or 1)
if last_sanity_version < sanity_version:
messages = messages + check_sanity_version_change()
- messages = messages + check_sanity_tmpdir_change()
- messages = messages + check_sanity_sstate_dir_change()
+ messages = messages + check_sanity_tmpdir_change(tmpdir)
+ messages = messages + check_sanity_sstate_dir_change(sstate_dir)
else:
if last_tmpdir != tmpdir:
- messages = messages + check_sanity_tmpdir_change()
+ messages = messages + check_sanity_tmpdir_change(tmpdir)
if last_sstate_dir != sstate_dir:
- messages = messages + check_sanity_sstate_dir_change()
+ messages = messages + check_sanity_sstate_dir_change(sstate_dir)
if os.path.exists("conf"):
f = file(sanityverfile, 'w')