[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