[U-Boot] [PATCH] buildman: crash when fetching i386 toolchain from kernel.org
Simon Glass
sjg at chromium.org
Wed Mar 4 16:01:27 CET 2015
Hi Heiko,
On 4 March 2015 at 02:19, Heiko Schocher <hs at denx.de> wrote:
> 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>
Yes this was broken by a recent change - please see here:
http://patchwork.ozlabs.org/patch/445496/
>
> ---
>
> 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
>
Regards,
Simon
More information about the U-Boot
mailing list