[U-Boot] Suggestion for building all boards

Hello experts, custodians.
U-Boot Wiki page (http://www.denx.de/wiki/U-Boot/Patches) says like follows:
Before sending the patch, you must run the MAKEALL script on your patched source tree and make sure that no errors or warnings are reported for any of the boards. Well, at least not any more warnings than without your patch.
For sending a patch that changes across all architectures, we need to build all target boards. (I am really eager to do this, for example, Kbuild-related patches, a new warning option, etc.)
In stead of ./MAKEALL, we can also use tools/buildman/buildman for the same purpose.
But getting suitable toolchains is beyond the scope of them.
I want to focus on this issue.
My question is: Where can I get suitable toolchains for all architectures supported by U-Boot?
Gerhard Sittig told me this site: ftp://ftp.kernel.org/pub/tools/crosstool/
But I could not get the crosstool for some architectures (nds32, nios2) in this site.
I tried to compile as much boards as possible with crosstools I could download from the site.
arm, avr32, sandbox, x86 are perfect! I successfully compiled all board without any warnings.
For the other architectures, I can't compile at least some boards.
This means the toolchain I chose was not appropriate or a bug in the source code.
So, I'd like to suggest: We collect pre-built toolchains for all architectures on U-Boot ftp site. They become RECOMMENDED toolchans, which means it is garanteed all boards should be successfully compiled with such toolchains.
At least custodians must have a suitable toolchain because they routinely build boards of their assigned architecture. If it is impossible to upload it to U-Boot ftp site, the link should be prepared to another download site.
If there are some variations (for ex. soft/hard float) for supported cross tools, all of them should be collected.
My basic idea is: Building all boards should be easy enough for everyone. Of course basic skills of U-boot is required, but arch-specific skills should not be required just for compile.
If everyone can do this compiling check, it should be done automatically. The crontab daemon can do it and send the result to this mailing list. (everyday? once a week? every time u-boot/master is updated?)
We will soon notice a broken board before someone raise the flag. When a board is found to be broken, notification e-mail should also be sent to the architecture custodian and board maintainer (if the board is not orphan).
The board maintainer (written in boards.cfg) is responsible to fix the broken board. The custodian should guide this.
Now we have the Active/Orphan status in the first column of boards.cfg.
I'd like to suggest new status:
Active: can be compiled without any warnings Warn: still can be compiled, but with warnings Broken: cannot be compiled
Suggestion for better terms is welcome :-)
(BTW, I'd like to abolish Orphan status. We can refer the last column for the board maintainer. If it is blank, it means unknown maintainer.)
If we notice a newly broken board, we should change the status in boards.cfg from Active to Warn or Broken.
If nobody fix the board for a long time (3 month or so?), it should go to the scrap yard.
To sum up my suggestion,
- Collect pre-built suitable crosstools for all architectures on U-boot ftp site.
- Check all boards automatically using those recommended crosstools and post the result to the mailing list.
- Add new status to boards.cfg to mark boards with a problem.
Best Regards Masahiro

Hi Masahiro,
On 11.10.2013 13:29, Masahiro Yamada wrote:
My question is: Where can I get suitable toolchains for all architectures supported by U-Boot?
Gerhard Sittig told me this site: ftp://ftp.kernel.org/pub/tools/crosstool/
But I could not get the crosstool for some architectures (nds32, nios2) in this site.
I tried to compile as much boards as possible with crosstools I could download from the site.
arm, avr32, sandbox, x86 are perfect! I successfully compiled all board without any warnings.
For the other architectures, I can't compile at least some boards.
Mike Frysinger (unfortunately not active with U-Boot development any more) did some work on cross-toolchain builds. With nice and small packages. Please take a look at this thread:
http://marc.info/?l=u-boot&m=132164771013203&w=1
Here a link to the binaries:
http://dev.gentoo.org/~vapier/u-boot/
Its a bit outdated, but better than nothing. Perhaps its possible to generate more current toolchain versions easily? Mike?
This means the toolchain I chose was not appropriate or a bug in the source code.
So, I'd like to suggest: We collect pre-built toolchains for all architectures on U-Boot ftp site. They become RECOMMENDED toolchans, which means it is garanteed all boards should be successfully compiled with such toolchains.
Its usually recommended to use the ELDK toolchains. But yes, not all architectures are supported right now.
At least custodians must have a suitable toolchain because they routinely build boards of their assigned architecture. If it is impossible to upload it to U-Boot ftp site, the link should be prepared to another download site.
If there are some variations (for ex. soft/hard float) for supported cross tools, all of them should be collected.
My basic idea is: Building all boards should be easy enough for everyone. Of course basic skills of U-boot is required, but arch-specific skills should not be required just for compile.
If everyone can do this compiling check, it should be done automatically. The crontab daemon can do it and send the result to this mailing list. (everyday? once a week? every time u-boot/master is updated?)
We will soon notice a broken board before someone raise the flag. When a board is found to be broken, notification e-mail should also be sent to the architecture custodian and board maintainer (if the board is not orphan).
The board maintainer (written in boards.cfg) is responsible to fix the broken board. The custodian should guide this.
Now we have the Active/Orphan status in the first column of boards.cfg.
I'd like to suggest new status:
Active: can be compiled without any warnings Warn: still can be compiled, but with warnings Broken: cannot be compiled
Suggestion for better terms is welcome :-)
(BTW, I'd like to abolish Orphan status. We can refer the last column for the board maintainer. If it is blank, it means unknown maintainer.)
If we notice a newly broken board, we should change the status in boards.cfg from Active to Warn or Broken.
If nobody fix the board for a long time (3 month or so?), it should go to the scrap yard.
I like this idea.
To sum up my suggestion,
- Collect pre-built suitable crosstools for all architectures on U-boot ftp site.
Perhaps Mike's work can be used as a starting point for this?
Thanks, Stefan

Hi Masahiro,
On Fri, Oct 11, 2013 at 5:29 AM, Masahiro Yamada yamada.m@jp.panasonic.com wrote:
Hello experts, custodians.
To sum up my suggestion,
- Collect pre-built suitable crosstools for all architectures on U-boot ftp site.
Great idea. If you can organize a tarball (or more than one) and a place to put it then we could make buildman fetch and setup automatically.
- Check all boards automatically using those recommended crosstools and post the result to the mailing list.
Would be very helpful.
- Add new status to boards.cfg to mark boards with a problem.
This is for boards that are already broken I think.
Best Regards Masahiro
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

Hi Simon,
On Fri, 11 Oct 2013 16:00:37 -0600, Simon Glass sjg@chromium.org wrote:
Hi Masahiro,
On Fri, Oct 11, 2013 at 5:29 AM, Masahiro Yamada yamada.m@jp.panasonic.com wrote:
Hello experts, custodians.
To sum up my suggestion,
- Collect pre-built suitable crosstools for all architectures on U-boot ftp site.
Great idea. If you can organize a tarball (or more than one) and a place to put it then we could make buildman fetch and setup automatically.
- Check all boards automatically using those recommended crosstools and post the result to the mailing list.
Would be very helpful.
- Add new status to boards.cfg to mark boards with a problem.
This is for boards that are already broken I think.
There is some discussion about the Status field in boards.cfg, which might result in moving it from its current "build/don't build" semantics into something more like "maintainers mentioned at the end are active / inactive, but the board still builds anyway".
Still, boards.Cfg is for long-term board info, whereas the build breaks discussed here are short-term: if someone submits a patch which breaks some board, we don't apply it until there is a new version that fixes the break. Granted, we may detect board breaks after a patch is applied, but then we as the submitter to provide a separate fix patch within the same release cycle.
Also, adding some "builds / doesn't build right now" info in boards.cfg will IMO cause either one of two bad side effects: an observable volume of patches submitted just to keep boards.cfg up to date wrt which board builds or not; or a burden to submitters whose patch (series) break or fix some board(s) and who would then have to also update boards.cfg with this.
I don't think we want to ask any submitter to add this to their work, or even to build-test across all of U-Boot's boards to see if they're breaking some board they don't know in an architecture they know nothing about. That's for custodians to do, not for submitters.
Amicalement,
participants (4)
-
Albert ARIBAUD
-
Masahiro Yamada
-
Simon Glass
-
Stefan Roese