Skip to contentSkip to conversation

Add some missing buildman features and deprecate MAKEALL

PATCH Superseded Simon Glass 4 participants 14 messages Jul 29, 2014 – Aug 5, 2014

v2 of 10 Superseded Latest is v10 →

lore
Share & tools
lore
#0 lore raw

v2 cover Add some missing buildman features and deprecate MAKEALL

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.

The reasons to deprecate MAKEALL are:
- We don't want to maintain two build systems
- Buildman is typically faster
- Buildman has a lot more features

This series adds a few features to buildman to fill some gaps, adds some infomation into the README on how to migrate from MAKEALL, and adds a deprecation message to MAKEALL.

Changes in v2:
- Add new patch to fix existing typos
- Minor changes to the text

Simon Glass (3):
buildman: Fix a few typos
buildman: Add some notes about moving from MAKEALL
RFC: Deprecate MAKEALL

 MAKEALL               |   4 ++
 tools/buildman/README | 104 +++++++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 102 insertions(+), 6 deletions(-)
Signature · 1 line
2.0.0.526.g5318336
#1 lore raw

PATCH v2 1/3 buildman: Fix a few typos

There are several typos in the README - fix them.

---

Changes in v2:
- Add new patch to fix existing typos

 tools/buildman/README | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
tools/buildman/README +6 -6
index c30c1d4..a5d181c 100644
@@ -71,8 +71,8 @@ directory. It clones this repository into a copy for each thread, and the
 threads do not affect the state of your git repository. Any checkouts done
 by the thread affect only the working directory for that thread.
 
-Buildman automatically selects the correct toolchain for each board. You
-must supply suitable toolchains, but buildman takes care of selecting the
+Buildman automatically selects the correct tool chain for each board. You
+must supply suitable tool chains, but buildman takes care of selecting the
 right one.
 
 Buildman always builds a branch, and always builds the upstream commit as
@@ -287,7 +287,7 @@ If it can't detect the upstream branch, try checking out the branch, and
 doing something like 'git branch --set-upstream <branch> upstream/master'
 or something similar.
 
-As an exmmple:
+As an example:
 
 Dry run, so not doing much. But I would do this:
 
@@ -339,7 +339,7 @@ Building 18 commits for 1059 boards (4 threads, 1 job per thread)
   528   36  124 /19062  1:13:30  : SIMPC8313_SP
 
 This means that it is building 19062 board/commit combinations. So far it
-has managed to succesfully build 528. Another 36 have built with warnings,
+has managed to successfully build 528. Another 36 have built with warnings,
 and 124 more didn't build at all. Buildman expects to complete the process
 in an hour and 15 minutes. Use this time to buy a faster computer.
 
@@ -413,7 +413,7 @@ again.
 
 At commit 16, the error moves - you can see that the old error at line 120
 is fixed, but there is a new one at line 126. This is probably only because
-we added some code and moved the broken line futher down the file.
+we added some code and moved the broken line father down the file.
 
 If many boards have the same error, then -e will display the error only
 once. This makes the output as concise as possible.
@@ -491,7 +491,7 @@ You can also use -d to see a detailed size breakdown for each board. This
 list is sorted in order from largest growth to largest reduction.
 
 It is possible to go a little further with the -B option (--bloat). This
-shows where U-Boot has bloted, breaking the size change down to the function
+shows where U-Boot has bloated, breaking the size change down to the function
 level. Example output is below:
 
 $ ./tools/buildman/buildman -b us-mem4 -sSdB
Signature · 1 line
2.0.0.526.g5318336
#2 lore raw

PATCH v2 2/3 buildman: Add some notes about moving from MAKEALL

In reply to Simon Glass

For those used to MAKEALL, buildman seems strange. Add some notes to ease the transition.

---

Changes in v2:
- Minor changes to the text

 tools/buildman/README | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 92 insertions(+)
tools/buildman/README +92 -0
index a5d181c..1c919af 100644
@@ -3,6 +3,8 @@
 # SPDX-License-Identifier:	GPL-2.0+
 #
 
+(Please read 'How to change from MAKEALL' if you are used to that tool)
+
 What is this?
 =============
 
@@ -663,6 +665,96 @@ Other options
 Buildman has various other command line options. Try --help to see them.
 
 
+How to change from MAKEALL
+==========================
+
+Buildman includes most of the features of MAKEALL and is generally faster
+and easier to use. In particular it builds entire branches: if a particular
+commit introduces an error in a particular board, buildman can easily show
+you this, even if a later commit fixes that error.
+
+The reasons to deprecate MAKEALL are:
+- We don't want to maintain two build systems
+- Buildman is typically faster
+- Buildman has a lot more features
+
+But still, many people will be sad to lose MAKEALL. If you are used to
+MAKEALL, here are a few pointers.
+
+First you need to set up your tool chains - see the 'Setting up' section
+for details. Once you have your required toolchain(s) detected then you are
+ready to go.
+
+Buildman works on entire branches, so the normal use is:
+
+   ./tools/buildman/buildman -b <branch_name> <list of things to build>
+
+followed by (afterwards, or perhaps concurrently in another terminal):
+
+   ./tools/buildman/buildman -b <branch_name> -s <list of things to build>
+
+to see the results of the build. Rather than showing you all the output,
+buildman just shows a summary, with red indicating that a commit introduced
+an error and green indicating that a commit fixed an error. Use the -e
+flag to see the full errors.
+
+You don't need to stick around on that branch while buildman is running. It
+checks out its own copy of the source code, so you can change branches,
+add commits, etc. without affecting the build in progress.
+
+The <list of things to build> can include board names, architectures or the
+like. There are no flags to disambiguate since ambiguities are rare. Using
+the examples from MAKEALL:
+
+Examples:
+  - build all Power Architecture boards:
+      MAKEALL -a powerpc
+      MAKEALL --arch powerpc
+      MAKEALL powerpc
+          ** buildman -b <branch> powerpc
+  - build all PowerPC boards manufactured by vendor "esd":
+      MAKEALL -a powerpc -v esd
+          ** buildman -b <branch> esd
+  - build all PowerPC boards manufactured either by "keymile" or "siemens":
+      MAKEALL -a powerpc -v keymile -v siemens
+          ** buildman -b <branch> keymile siemens
+  - build all Freescale boards with MPC83xx CPUs, plus all 4xx boards:
+      MAKEALL -c mpc83xx -v freescale 4xx
+          ** buildman -b <branch> mpc83xx freescale 4xx
+
+Buildman automatically tries to use all the CPUs in your machine. If you
+are building a lot of boards it will use one thread for every CPU core
+it detects in your machine. This is like MAKEALL's BUILD_NBUILDS option.
+You can use the -T flag to change the number of threads. If you are only
+building a few boards, buildman will automatically run make with the -j
+flag to increase the number of concurrent make tasks. It isn't normally
+that helpful to fiddle with this option, but if you use the BUILD_NCPUS
+option in MAKEALL then -j is the equivalent in buildman.
+
+Buildman puts its output in ../<branch_name> by default but you can change
+this with the -o option. Buildman normally does out-of-tree builds: use -i
+to disable that if you really want to. But be careful that once you have
+used -i you pollute buildman's copies of the source tree, and you will need
+to remove the build directory (normally ../<branch_name>) to run buildman
+in normal mode (without -i).
+
+Buildman doesn't keep the output result normally, but use the -k option to
+do this.
+
+Please read 'Theory of Operation' a few times as it will make a lot of
+things clearer.
+
+Some options you might like are:
+
+   -B shows which functions are growing/shrinking in which commit - great
+        for finding code bloat.
+   -S shows image sizes for each commit (just an overall summary)
+   -u shows boards that you haven't built yet
+   --step 0 will build just the upstream commit and the last commit of your
+        branch. This is often a quick sanity check that your branch doesn't
+        break anything. But note this does not check bisectability!
+
+
 TODO
 ====
 
Signature · 1 line
2.0.0.526.g5318336
#3 lore raw

PATCH v2 2/3 buildman: Add some notes about moving from MAKEALL

Hi.

Quoted 45 lines · On Mon, 28 Jul 2014 23:53:29 -0600 Simon Glass <[email protected]> wrote:

For those used to MAKEALL, buildman seems strange. Add some notes to ease the transition.

---

Changes in v2:
- Minor changes to the text

 tools/buildman/README | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 92 insertions(+)
tools/buildman/README +18 -0
index a5d181c..1c919af 100644
@@ -3,6 +3,8 @@
 # SPDX-License-Identifier:	GPL-2.0+
 #
 
+(Please read 'How to change from MAKEALL' if you are used to that tool)
+
 What is this?
 =============
 
@@ -663,6 +665,96 @@ Other options
 Buildman has various other command line options. Try --help to see them.
 
 
+How to change from MAKEALL
+==========================
+
+Buildman includes most of the features of MAKEALL and is generally faster
+and easier to use. In particular it builds entire branches: if a particular
+commit introduces an error in a particular board, buildman can easily show
+you this, even if a later commit fixes that error.
+
+The reasons to deprecate MAKEALL are:
+- We don't want to maintain two build systems
+- Buildman is typically faster
+- Buildman has a lot more features
+
+But still, many people will be sad to lose MAKEALL. If you are used to
+MAKEALL, here are a few pointers.
+First you need to set up your tool chains - see the 'Setting up' section

tools/buildman/README Other options · line 693

Quoted 10 lines
tools/buildman/README +10 -0
+for details. Once you have your required toolchain(s) detected then you are
+ready to go.
+
+Buildman works on entire branches, so the normal use is:
+
+   ./tools/buildman/buildman -b <branch_name> <list of things to build>
+
+followed by (afterwards, or perhaps concurrently in another terminal):
+
+   ./tools/buildman/buildman -b <branch_name> -s <list of things to build>

The biggest difference I see between buildman and MAKEALL is that buildman tests commits in git-log,
whereas MAKEALL tests the current source tree.

It means buildman does not work for tarball users.
Maybe we can excuse because I guess most develpers are working on a git-repo.

But I find MAKEALL is much eaiser for a quick test. It is very useful for my work flow;
Just change some code and invoke "./MAKEALL -s uniphier" I can test local changes without commiting them.

In buildman, I need to commit the local changes once and do git branch --set-upstream-to <upstream-branch> tools/buildman/buildman -b <topic-branch>
which requires me lots of typing.

Best Regards
Masahiro Yamada

#4 lore raw

PATCH v2 2/3 buildman: Add some notes about moving from MAKEALL

Hi Masahiro,

Quoted 76 lines · Masahiro Yamada

Hi.

Quoted 45 lines · On Mon, 28 Jul 2014 23:53:29 -0600 Simon Glass <[email protected]> wrote:

For those used to MAKEALL, buildman seems strange. Add some notes to ease the transition.

---

Changes in v2:
- Minor changes to the text

 tools/buildman/README | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 92 insertions(+)
tools/buildman/README +18 -0
index a5d181c..1c919af 100644
@@ -3,6 +3,8 @@
 # SPDX-License-Identifier:   GPL-2.0+
 #
 
+(Please read 'How to change from MAKEALL' if you are used to that tool)
+
 What is this?
 =============
 
@@ -663,6 +665,96 @@ Other options
 Buildman has various other command line options. Try --help to see them.
 
 
+How to change from MAKEALL
+==========================
+
+Buildman includes most of the features of MAKEALL and is generally faster
+and easier to use. In particular it builds entire branches: if a particular
+commit introduces an error in a particular board, buildman can easily show
+you this, even if a later commit fixes that error.
+
+The reasons to deprecate MAKEALL are:
+- We don't want to maintain two build systems
+- Buildman is typically faster
+- Buildman has a lot more features
+
+But still, many people will be sad to lose MAKEALL. If you are used to
+MAKEALL, here are a few pointers.
+First you need to set up your tool chains - see the 'Setting up' section

tools/buildman/README Other options · line 693

Quoted 10 lines
tools/buildman/README +10 -0
+for details. Once you have your required toolchain(s) detected then you are
+ready to go.
+
+Buildman works on entire branches, so the normal use is:
+
+   ./tools/buildman/buildman -b <branch_name> <list of things to build>
+
+followed by (afterwards, or perhaps concurrently in another terminal):
+
+   ./tools/buildman/buildman -b <branch_name> -s <list of things to build>

The biggest difference I see between buildman and MAKEALL is that buildman tests commits in git-log,
whereas MAKEALL tests the current source tree.

It means buildman does not work for tarball users.
Maybe we can excuse because I guess most develpers are working on a git-repo.

But I find MAKEALL is much eaiser for a quick test. It is very useful for my work flow;
Just change some code and invoke "./MAKEALL -s uniphier" I can test local changes without commiting them.

Quoted 4 lines

In buildman, I need to commit the local changes once and do git branch --set-upstream-to <upstream-branch> tools/buildman/buildman -b <topic-branch>
which requires me lots of typing.

OK thanks for pointing that out. That feature existed in an early pre-submission version of buildman but I dropped it. I'll see if I can implement ti again.

Regards,
Simon

#5 lore raw

PATCH v2 3/3 RFC: Deprecate MAKEALL

In reply to Simon Glass

Since buildman now includes most of the features of MAKEALL it is proabably time to talk about deprecating MAKEALL.

Comments welcome.

---

Changes in v2: None

 MAKEALL | 4 ++++
 1 file changed, 4 insertions(+)
MAKEALL +4 -0
index 020e65f..6443814 100755
@@ -60,6 +60,10 @@ usage()
 	exit ${ret}
 }
 
+echo "** Note: MAKEALL is deprecated - please use buildman instead"
+echo "** See tools/buildman/README for details"
+echo
+
 SHORT_OPTS="ha:c:v:s:b:lmMCnr"
 LONG_OPTS="help,arch:,cpu:,vendor:,soc:,board:,list,maintainers,mails,check,continue,rebuild-errors"
 
Signature · 1 line
2.0.0.526.g5318336
#6 lore raw

v2 cover Add some missing buildman features and deprecate MAKEALL

In reply to Simon Glass
Quoted 5 lines · Simon Glass

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:
(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).

I also didn't quite see how to plugin an arm64 toolchain.

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.

Thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140804/a101f6fa/attachment.pgp>
#7 lore raw

v2 cover Add some missing buildman features and deprecate MAKEALL

Hi Tom,

Quoted 24 lines · Tom Rini
Quoted 5 lines · Simon Glass

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
Quoted 2 lines

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.

Quoted 13 lines

(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
Quoted 5 lines

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?

The output is in ../<branch>/<commit>/<board> but if you want to keep the binaries, you need -k also.

Quoted 2 lines

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.

Quoted 7 lines

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?

Regards,
Simon

#8 lore raw

v2 cover Add some missing buildman features and deprecate MAKEALL

Hello Simon,

Quoted 26 lines · Simon Glass

Hi Tom,

Quoted 23 lines · Tom Rini
Quoted 5 lines · Simon Glass

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
Quoted 4 lines
Quoted 2 lines

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.

Like Tom, I tried this a bit. (and ended up faking clang is gcc). There are at least some assumptions cc = gcc and strlen(cc) == 3.

Quoted 18 lines
Quoted 13 lines

(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
Quoted 5 lines

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).

Quoted 5 lines

You can use the -s flag to see the broken builds, and -se to see errors also. Is that what you mean?

The output is in ../<branch>/<commit>/<board> but if you want to keep the binaries, you need -k also.

Like Tom, I saw fancy output, like merged not being a property or something. I like to see the warnings and errors directly, but -e? failed to do so. (or at least I didn't spend enough time to get it to work)

Quoted 9 lines
Quoted 1 line

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.

Quoted 6 lines

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.

Quoted 5 lines

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?

I would like this as well. For serious changing I typically build with MAKEALL with clang and gcc (for ARM) + gcc for powerpc if it is a overall change.

But since clang always warns it is actually not a viable target for buildman at all.

Regards,
Jeroen

#9 lore raw

v2 cover Add some missing buildman features and deprecate MAKEALL

Hi Jeroen,

Quoted 47 lines · Jeroen Hofstee

Hello Simon,

Quoted 43 lines · Simon Glass

Hi Tom,

Quoted 38 lines · Tom Rini
Quoted 7 lines · Simon Glass

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:

Quoted 6 lines
Quoted 2 lines

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.

Like Tom, I tried this a bit. (and ended up faking clang is gcc). There are at least some assumptions cc = gcc and strlen(cc) == 3.

OK I will change that in v4.

Quoted 23 lines
Quoted 23 lines
Quoted 14 lines

(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
Quoted 5 lines

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?

Quoted 7 lines
Quoted 2 lines

The output is in ../<branch>/<commit>/<board> but if you want to keep the binaries, you need -k also.

Like Tom, I saw fancy output, like merged not being a property or something. I like to see the warnings and errors directly, but -e? failed to do so. (or at least I didn't spend enough time to get it to work)

With the v3 series you can use the -v option to display all output while it builds. The -e option displays summarised information, interned to avoid you getting the same error 100 times for 100 different boards.

Quoted 18 lines
Quoted 12 lines
Quoted 2 lines

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.

Quoted 6 lines

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.

Quoted 5 lines

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?

Quoted 3 lines

I would like this as well. For serious changing I typically build with MAKEALL with clang and gcc (for ARM) + gcc for powerpc if it is a overall change.

OK I'll add a config file option.

Quoted 3 lines

But since clang always warns it is actually not a viable target for buildman at all.

Why does it always warn?

Regards,
Simon

#10 lore raw

v2 cover Add some missing buildman features and deprecate MAKEALL

In reply to Simon Glass
Quoted 27 lines · Simon Glass

Hi Tom,

Quoted 24 lines · Tom Rini
Quoted 5 lines · Simon Glass

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
Quoted 5 lines
Quoted 2 lines

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).

Quoted 13 lines
Quoted 13 lines

(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
Quoted 8 lines
Quoted 5 lines

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
Quoted 2 lines

The output is in ../<branch>/<commit>/<board> but if you want to keep the binaries, you need -k also.

Ah, OK.

Quoted 3 lines
Quoted 1 line

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.

Quoted 11 lines
Quoted 6 lines

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.

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140804/d612919b/attachment.pgp>
#11 lore raw

v2 cover Add some missing buildman features and deprecate MAKEALL

Hi Tom,

Quoted 31 lines · Tom Rini
Quoted 30 lines · Simon Glass

Hi Tom,

Quoted 26 lines · Tom Rini
Quoted 5 lines · Simon Glass

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:

Quoted 6 lines
Quoted 2 lines

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

Quoted 25 lines
Quoted 14 lines
Quoted 14 lines

(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
Quoted 8 lines
Quoted 5 lines

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:

Quoted 12 lines
$ ./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.

Quoted 6 lines
Quoted 3 lines

The output is in ../<branch>/<commit>/<board> but if you want to keep the binaries, you need -k also.

Ah, OK.

Quoted 7 lines
Quoted 3 lines
Quoted 1 line

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.

Quoted 8 lines
Quoted 8 lines
Quoted 7 lines

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.

Quoted 7 lines
Quoted 4 lines

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

#12 lore raw

v2 cover Add some missing buildman features and deprecate MAKEALL

Hi Tom,

Quoted 7 lines · Simon Glass

Hi Tom,

Quoted 4 lines · Tom Rini
Quoted 3 lines · Simon Glass

Hi Tom,

On 4 August 2014 07:23, Tom Rini <[email protected]> wrote:

[ship]

Quoted 9 lines
Quoted 7 lines
Quoted 3 lines
Quoted 1 line

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.

This line in ~/.buildman works for me:

aarch64: /opt/linaro/gcc-linaro-aarch64-none-elf-4.8-2013.10_linux

Regards,
Simon

#13 lore raw

v2 cover Add some missing buildman features and deprecate MAKEALL

In reply to Simon Glass
Quoted 48 lines · Simon Glass

Hi Tom,

Quoted 31 lines · Tom Rini
Quoted 30 lines · Simon Glass

Hi Tom,

Quoted 26 lines · Tom Rini
Quoted 5 lines · Simon Glass

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:

Quoted 6 lines
Quoted 2 lines

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

Quoted 10 lines

[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

Ah-ha, OK. I think we need to update the README slightly, I was thinking it was just a few keywords based on how it is now. So I would need to re-work my config similar to yours and then yes, it would find everything as well.

[snip]

Quoted 15 lines
Quoted 14 lines

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
Quoted 3 lines

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.

ah, ok.

Quoted 12 lines
Quoted 12 lines
Quoted 11 lines
Quoted 6 lines

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?

Quoted 5 lines
Quoted 2 lines

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.

Thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140805/ab2903a0/attachment.pgp>