diff options
-rw-r--r-- | meta/classes/sanity.bbclass | 39 |
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') |