[U-Boot] [PATCH] buildman: crash when fetching i386 toolchain from kernel.org
Heiko Schocher
hs at denx.de
Wed Mar 4 10:19:43 CET 2015
Currently buildman crashes when fetching i386 toolchain from
kernel.org.
solution:
- first check, if the directory in which buildman will search exists
- second, pass a string not a list of strings when instantiating
a Toolchain object
Signed-off-by: Heiko Schocher <hs at denx.de>
---
Tried to fetch toolchain for i386 with buildman, and get this
error:
$ ./tools/buildman/buildman sandbox --fetch-arch i386
Checking: https://www.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/
Downloading: https://www.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/x86_64-gcc-4.6.3-nolibc_i386-linux.tar.xz
Unpacking to: /home/hs/.buildman-toolchains
Testing
- looking in '/home/hs/.buildman-toolchains/gcc-4.6.3-nolibc/i386-linux/.'
- looking in '/home/hs/.buildman-toolchains/gcc-4.6.3-nolibc/i386-linux/bin'
- found '/home/hs/.buildman-toolchains/gcc-4.6.3-nolibc/i386-linux/bin/i386-linux-gcc'
- looking in '/home/hs/.buildman-toolchains/gcc-4.6.3-nolibc/i386-linux/usr/bin'
Traceback (most recent call last):
File "./tools/buildman/buildman", line 64, in <module>
ret_code = control.DoBuildman(options, args)
File "/home/hs/zug/u-boot/tools/buildman/control.py", line 132, in DoBuildman
ret = toolchains.FetchAndInstall(arch)
File "/home/hs/zug/u-boot/tools/buildman/toolchain.py", line 472, in FetchAndInstall
toolchain = Toolchain(compiler_fname, True, True)
File "/home/hs/zug/u-boot/tools/buildman/toolchain.py", line 62, in __init__
self.path = os.path.dirname(fname)
File "/usr/lib64/python2.7/posixpath.py", line 129, in dirname
i = p.rfind('/') + 1
AttributeError: 'list' object has no attribute 'rfind'
$
with this patch I see:
$ ./tools/buildman/buildman sandbox --fetch-arch i386
Checking: https://www.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/
Downloading: https://www.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/x86_64-gcc-4.6.3-nolibc_i386-linux.tar.xz
Unpacking to: /home/hs/.buildman-toolchains
Testing
- looking in '/home/hs/.buildman-toolchains/gcc-4.6.3-nolibc/i386-linux/.'
- looking in '/home/hs/.buildman-toolchains/gcc-4.6.3-nolibc/i386-linux/bin'
- found '/home/hs/.buildman-toolchains/gcc-4.6.3-nolibc/i386-linux/bin/i386-linux-gcc'
Tool chain test: OK
$
tools/buildman/toolchain.py | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/tools/buildman/toolchain.py b/tools/buildman/toolchain.py
index 537797a..93811ea 100644
--- a/tools/buildman/toolchain.py
+++ b/tools/buildman/toolchain.py
@@ -200,10 +200,11 @@ class Toolchains:
fnames = []
for subdir in ['.', 'bin', 'usr/bin']:
dirname = os.path.join(path, subdir)
- if verbose: print " - looking in '%s'" % dirname
- for fname in glob.glob(dirname + '/*gcc'):
- if verbose: print " - found '%s'" % fname
- fnames.append(fname)
+ if os.path.exists(dirname):
+ if verbose: print " - looking in '%s'" % dirname
+ for fname in glob.glob(dirname + '/*gcc'):
+ if verbose: print " - found '%s'" % fname
+ fnames.append(fname)
return fnames
@@ -469,7 +470,7 @@ class Toolchains:
if not compiler_fname:
print 'Could not locate C compiler - fetch failed.'
return 1
- toolchain = Toolchain(compiler_fname, True, True)
+ toolchain = Toolchain(compiler_fname[0], True, True)
# Make sure that it will be found by buildman
if not self.TestSettingsHasPath(dirpath):
--
2.1.0
More information about the U-Boot
mailing list