summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2012-07-05 16:57:33 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-07-09 16:58:57 +0100
commit2dee999ab2731c2a96e82762ae04fe44f27edac6 (patch)
treefb4bbc4e6ca80d9de7d743265c1e23ab31e764b2
parent12c8d9d4512cd9159ba862a4f7cf8608d4b57e65 (diff)
downloadpoky-2dee999ab2731c2a96e82762ae04fe44f27edac6.tar.gz
sanity.bbclass: the tmpdir can't be longer than 410
There will be errors when the length of the tmpdir is longer than 410: 1) Longer than 420: Can't exec "/bin/sh": Argument list too long at /usr/lib/perl/5.10/IO/File.pm line 66. This error happens on both Ubuntu 10.04 and 10.10 when the pkg needs run "autoreconf", this is because it passes many files with absolute path to aclocal, aclocal passes them to perl, this is a limitation of the perl on Ubuntu 10.04 and 10.10, and the perl-native is not ready at this very early stage. 2) Longer than 490: bitbake/lib/bb/persist_data.py", line 197, in connect(database=...) > return sqlite3.connect(database, timeout=5, isolation_level=None) OperationalError: unable to open database file This error happens on Ubuntu 10.04, 10.10 and Fedora 17. This is because the length of the database in sqlite3 module (host's) can't be longer than 490 (or little smaller). The python-native is not ready at this very early stage. The 2 errors are host related, I think that limit the length of the TMPDIR to 410 is OK for most of the build, rarely build sets TMPDIR's longer than 410. [YOCTO #2434] (From OE-Core rev: ebcf949853ff667478a1ea1d3f1f8f41d643e708) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/sanity.bbclass8
1 files changed, 8 insertions, 0 deletions
diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
index 6ed1e6f4c6..765958e2e0 100644
--- a/meta/classes/sanity.bbclass
+++ b/meta/classes/sanity.bbclass
@@ -171,6 +171,11 @@ def check_create_long_filename(filepath, pathname):
171 return "Failed to create %s directory in which to run long name sanity check: %s.\n" % (pathname, strerror) 171 return "Failed to create %s directory in which to run long name sanity check: %s.\n" % (pathname, strerror)
172 return "" 172 return ""
173 173
174def check_path_length(filepath, pathname, limit):
175 if len(filepath) > limit:
176 return "The length of %s is longer than 410, this would cause unexpected errors, please use a shorter path.\n" % pathname
177 return ""
178
174def check_connectivity(d): 179def check_connectivity(d):
175 # URI's to check can be set in the CONNECTIVITY_CHECK_URIS variable 180 # URI's to check can be set in the CONNECTIVITY_CHECK_URIS variable
176 # using the same syntax as for SRC_URI. If the variable is not set 181 # using the same syntax as for SRC_URI. If the variable is not set
@@ -453,6 +458,9 @@ def check_sanity(sanity_data):
453 tmpdir = sanity_data.getVar('TMPDIR', True) 458 tmpdir = sanity_data.getVar('TMPDIR', True)
454 sstate_dir = sanity_data.getVar('SSTATE_DIR', True) 459 sstate_dir = sanity_data.getVar('SSTATE_DIR', True)
455 460
461 # The length of tmpdir can't be longer than 410
462 messages = messages + check_path_length(tmpdir, "TMPDIR", 410)
463
456 # Check saved sanity info 464 # Check saved sanity info
457 last_sanity_version = 0 465 last_sanity_version = 0
458 last_tmpdir = "" 466 last_tmpdir = ""