
Hi Tom,
On 4 August 2014 15:23, Tom Rini trini@ti.com wrote:
On Mon, Aug 04, 2014 at 02:41:45PM -0600, Simon Glass wrote:
Hi Tom,
On 4 August 2014 07:23, Tom Rini trini@ti.com wrote:
On Mon, Jul 28, 2014 at 11:53:27PM -0600, Simon Glass wrote:
Buildman has been around for a little over a year and is used by a fair number of U-Boot developers. However quite a few people still use MAKEALL.
Buildman was intended to replace MAKEALL, so perhaps now is a good time to start that process.
OK, lets start. First, I had to make up a special directory with symlinks to the various toolchains, in order to get them to work with buildman, due to the various layouts:
$ ls -l ~/work/u-boot/toolchain-links/ total 4 lrwxrwxrwx 1 trini trini 38 Aug 1 17:09 arc_gnu_4.8-R2_prebuilt_uclibc_be -> /opt/arc_gnu_4.8-R2_prebuilt_uclibc_be lrwxrwxrwx 1 trini trini 38 Aug 1 17:09 arc_gnu_4.8-R2_prebuilt_uclibc_le -> /opt/arc_gnu_4.8-R2_prebuilt_uclibc_le lrwxrwxrwx 1 trini trini 24 Aug 1 17:10 bfin-elf -> /opt/uClinux-45/bfin-elf lrwxrwxrwx 1 trini trini 32 Aug 1 17:09 m68k-linux -> /opt/gcc-4.9.0-nolibc/m68k-linux lrwxrwxrwx 1 trini trini 34 Aug 1 17:09 microblazeel-xilinx-linux-gnu -> /opt/microblazeel-xilinx-linux-gnu lrwxrwxrwx 1 trini trini 32 Aug 1 17:09 microblaze-xilinx-linux-gnu -> /opt/microblaze-xilinx-linux-gnu lrwxrwxrwx 1 trini trini 66 Aug 1 17:15 mips32-linux -> /opt/eldk-5.2.1/mips/sysroots/i686-eldk-linux/usr/bin/mips32-linux lrwxrwxrwx 1 trini trini 36 Aug 1 17:09 nds32le-linux-glibc-v1f -> /opt/nds32le/nds32le-linux-glibc-v1f lrwxrwxrwx 1 trini trini 20 Aug 1 17:09 sparc-elf-3.4.4 -> /opt/sparc-elf-3.4.4
I tried a few things but I couldn't get a toolchain section setup that found all of those. Second:
OK, can you give me a trace of the output of 'buildman --list-tool-chains' - I should be able to figure out what is wrong.
Sure but I think the problem was I couldn't get it to recurse all the way down, just a few levels (which isn't a bad thing exactly, it'd be going pretty deep otherwise).
It looks at the path you give, and then appends bin/ and usr/bin as well. Then it looks for something ending in gcc in each directory. You may need to specify additional search paths to make this work. My output with ~/.buildman:
# Buildman settings file
[toolchain] root: / #rest: /home/sjg/c/buildall/toolchains/* #eldk: /opt/eldk4.2/usr/bin #arm: /home/sjg/c/tools/arm-unknown-eabi avr32: /home/sjg/c/buildall/toolchains/avr32 #m68k: /home/sjg/c/buildall/toolchains/m68k-linux m68k: /usr/local/m68k-uclinux-tools arm: /opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux eldk: /opt/eldk-5.2.1/powerpc/sysroots/i686-eldk-linux/usr/bin/powerpc-linux
[toolchain-alias] x86: i386
[make-flags] src=/home/sjg/c/src chroot=/home/sjg/c/chroot vboot=USE_STDINT=1 VBOOT_DEBUG=1 MAKEFLAGS_VBOOT=DEBUG=1 CFLAGS_EXTRA_VBOOT=-DUN ROLL_LOOPS VBOOT_SOURCE=${src}/platform/vboot_reference chromeos_coreboot=VBOOT=${chroot}/build/link/usr ${vboot} chromeos_daisy=VBOOT=${chroot}/build/daisy/usr ${vboot}
is:
./tools/buildman/buildman --list-tool-chains Scanning for tool chains - scanning path '/' - looking in '/.' - looking in '/bin' - looking in '/usr/bin' - found '/usr/bin/gcc' Tool chain test: OK - found '/usr/bin/c89-gcc' Tool chain test: OK - found '/usr/bin/c99-gcc' Tool chain test: OK - found '/usr/bin/x86_64-linux-gnu-gcc' Tool chain test: OK - scanning path '/home/sjg/c/buildall/toolchains/avr32' - looking in '/home/sjg/c/buildall/toolchains/avr32/.' - looking in '/home/sjg/c/buildall/toolchains/avr32/bin' - looking in '/home/sjg/c/buildall/toolchains/avr32/usr/bin' - found '/home/sjg/c/buildall/toolchains/avr32/usr/bin/avr32-buildroot-linux-uclibc-gcc' Tool chain test: OK - found '/home/sjg/c/buildall/toolchains/avr32/usr/bin/avr32-linux-gcc' Tool chain test: OK - scanning path '/usr/local/m68k-uclinux-tools' - looking in '/usr/local/m68k-uclinux-tools/.' - looking in '/usr/local/m68k-uclinux-tools/bin' - looking in '/usr/local/m68k-uclinux-tools/usr/bin' - scanning path '/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux' - looking in '/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux/.' - looking in '/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux/bin' - found '/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux/bin/arm-linux-gnueabihf-gcc' Tool chain test: OK - looking in '/opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux/usr/bin' - scanning path '/opt/eldk-5.2.1/powerpc/sysroots/i686-eldk-linux/usr/bin/powerpc-linux' - looking in '/opt/eldk-5.2.1/powerpc/sysroots/i686-eldk-linux/usr/bin/powerpc-linux/.' - found '/opt/eldk-5.2.1/powerpc/sysroots/i686-eldk-linux/usr/bin/powerpc-linux/./powerpc-linux-gcc' Tool chain test: OK - found '/opt/eldk-5.2.1/powerpc/sysroots/i686-eldk-linux/usr/bin/powerpc-linux/./powerpc-gcc' Tool chain test: OK - looking in '/opt/eldk-5.2.1/powerpc/sysroots/i686-eldk-linux/usr/bin/powerpc-linux/bin' - looking in '/opt/eldk-5.2.1/powerpc/sysroots/i686-eldk-linux/usr/bin/powerpc-linux/usr/bin' List of available toolchains (7): arm : /opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux/bin/arm-linux-gnueabihf-gcc avr32 : /home/sjg/c/buildall/toolchains/avr32/usr/bin/avr32-buildroot-linux-uclibc-gcc c89 : /usr/bin/c89-gcc c99 : /usr/bin/c99-gcc powerpc : /opt/eldk-5.2.1/powerpc/sysroots/i686-eldk-linux/usr/bin/powerpc-linux/./powerpc-linux-gcc sandbox : /usr/bin/gcc x86_64 : /usr/bin/x86_64-linux-gnu-gcc
(testing the MMC pull request) $ ./tools/buildman/buildman -b master 'arc|blackfin|m68k|microblaze|nds32|sparc|mips' No section: 'make-flags' Building 11 commits for 121 boards (6 threads, 1 job per thread) Cloning repo for thread 0 Cloning repo for thread 1 Cloning repo for thread 2 Cloning repo for thread 3 Cloning repo for thread 4 Cloning repo for thread 5 1155 88 88 /1331 axs101
So it's nice that it spit out a thread per commit, but I really only care right now if master builds right. And I've gone blind and can't find the end result logs of what failed to build (88 failures doesn't quite match the warning/errors I get for my wrapper around toolchains+MAKEALL).
You can use the -s flag to see the broken builds, and -se to see errors also. Is that what you mean?
That's closer, yeah. Oh, and -c 1 seems to do be what I want, except I get: $ ./tools/buildman/buildman -se 'blackfin' -c 1 No section: 'make-flags' Traceback (most recent call last): File "./tools/buildman/buildman", line 135, in <module> control.DoBuildman(options, args) File "/home/trini/work/u-boot/u-boot/tools/buildman/control.py", line 138, in DoBuildman 1) File "/home/trini/work/u-boot/u-boot/tools/buildman/../patman/patchstream.py", line 389, in GetMetaDataForList stdout = command.RunPipe(pipe, capture=True).stdout File "/home/trini/work/u-boot/u-boot/tools/buildman/../patman/command.py", line 50, in RunPipe user_pipestr = '|'.join([' '.join(pipe) for pipe in pipe_list]) TypeError: sequence item 8: expected string, NoneType found
That's because it doesn't have a branch (-b <branch>). If you are just wanting to build the current checked-out tree, you could apply the v3 series which supports that.
The output is in ../<branch>/<commit>/<board> but if you want to keep the binaries, you need -k also.
Ah, OK.
I also didn't quite see how to plugin an arm64 toolchain.
I haven't tried - can you please point me to one and I'll give it a go.
There should be something newer than https://launchpad.net/linaro-toolchain-binaries but I'm failing to find it quickly.
OK I'll take a look.
Next up, is there some way to have multiple toolchains for an arch available? On some compute resources I have at work I throw arm/eldk4.2, arm/eldk5.2, arm/linaro-2013.03 (since we've pinned to that for some projects) and some various combos for powerpc as well. I didn't see how to do that with buildman aside from different ~/.buildman files per invocation.
Yes I remember you talking about this before. One option would be to add toolchain as a new dimension in the matrix. It might be painful though. So to be clear, you want to define multiple toolchains for an arch, and have buildman always build with all of them?
Well, a --config-file= would be good enough so I could have buildman-eldk54.cfg, buildman-eldk42.cfg, etc, etc.
OK I'll add a new patch to a v4 series to implement that. It's pretty trivial so should get to it today.
Regards, Simon