Paul,
I've been having some thoughts about CBuild and Lava and the TCWG
integration of them both. I wish to share them and open them up for general
discussion.
The background to this has been the flakiness of the Panda's (due to heat),
the Arndale (due to board 'set-up' issues), and getting a batch of Calxeda
nodes working.
The following discussion refers to building and testing only, *not*
benchmarking.
If you look at http://cbuild.validation.linaro.org/helpers/scheduler you
will see a bunch of calxeda01_* nodes have been added to CBuild. After a
week of sorting them out they provide builds twice as fast as the Panda
boards. However, during the setup of the boards I came to the conclusion
that we set build slaves up incorrectly, and that there is a better way.
The issues I encountered were:
* The Calxeda's run quantal - yet we want to build on precise.
* Its hard to get a machine running in hard-float to bootstrap a
soft-float compiler and vice-versa.
* My understanding of how the Lava integration works is that it runs the
cbuild install scripts each time, and so we can't necessarily reproduce a
build if the upstream packages have been changed.
Having thought about this a bit I came to the conclusion that the simple
solution is to use chroots (managed by schroot), and to change the
architecture a bit. The old architecture is everything is put into the main
file-system as one layer. The new architecture would be to split this into two:
1. Rootfs - Contains just enough to boot the system and knows how to
download an appropriate chroot and start it.
2. Chroots - these contain a setup build system that can be used for
particular builds.
The rootfs can be machine type specific (as necessary), and for builds can
be a stock linaro root filesystem. It will contain scripts to set the users
needed up, and then to download an appropriate chroot and run it.
The chroot will be set up for a particular type of build (soft-float vs
hard-float) and will be the same for all platforms. The advantage of this
is that I can then download a chroot to my ChromeBook and reproduce a build
locally in the same environment to diagnose issues.
The Calxeda nodes in cbuild use this type of infrastructure - the rootfs is
running quantal (and I have no idea how it is configured - it is what Steve
supplied me with). Each node then runs two chroots (precise armel and
precise armhf) which take it in turns to ask the cbuild scheduler whether
there is a job available.
So my first question is does any of the above make sense?
Next steps as I see it are:
1. Paul/Dave - what stage is getting the Pandaboards in the Lava farm
cooled at? One advantage of the above architecture is we could use a stock
Pandaboard kernel & rootfs that has thermal limiting turned on for builds,
so that things don't fall over all the time.
2. Paul - how hard would it be to try and fire up a Calxeda node into
Lava? We can use one of the ones assigned to me. I don't need any fancy
multinode stuff that Michael Hudson-Doyle is working on - each node can be
considered a separate board. I feel guilty that I put the nodes into CBuild
without looking at Lava - but it was easier to do and got me going - I think
correcting that is important
3. Generally - What's the state of the Arndale boards in Lava? Fathi has
got GCC building reliably, although I believe he is now facing networking
issues.
4. Paul - If Arndale boards are available in Lava - how much effort would
it be to make them available to CBuild?
One issue the above doesn't solve as far as I see it is being able to say to
Lava that we can do a build on any ARMv7-A CBuild compatible board. I don't
generally care whether the build happens on an Arndale, Panda, or Calxeda
board - I want the result in the shortest possible time.
A final note on benchmarking. I think the above scheme could work for
benchmarking targets all we need to do is build a kernel/rootfs that is
setup to provide a system that produces repeatable benchmarking results.
Comments welcome from all.
Thanks,
Matt
--
Matthew Gretton-Dann
Toolchain Working Group, Linaro
Hi all,
I'm moving this question from Zendesk to the mailing list. Could you
please assist Mailme (CC'd on this email) with his download errors. He has
provided links for the log messages in his request. Thank you all in
advance for you help in this matter. Mailme please add any additional
information you may want the team to know.
******* Question Below ******
I am trying to add support for a device in LAVA.
I have HW pack and Binary Pack for my board.
The problem I am getting is in downloading it through LAVA, while
deploying.
The log message can be seen at
http://paste.ubuntu.com/5715609/
It is "urllib2.HTTPError: HTTP Error 403: Forbidden" , but I am able to
download the package from the browser as well as
using wget command.
For this you can see the log at
http://paste.ubuntu.com/5715553/
Please help me on this issue as it is a big blockage for my work.
*********************************************************
Again thank you all in advance for you help.
~Amber
--
Amber Graner
Community and Social Media Manager
Linaro.org <http://www.linaro.org/>* **│ *Open source software for ARM SoCs*
***
Follow *Linaro: *Facebook <http://www.facebook.com/pages/Linaro> |
Twitter<http://twitter.com/#%21/linaroorg>
| Blog <http://www.linaro.org/linaro-blog/>
*+1.828.582.9469* cell
*+1.828.395.1049* office
irc: akgraner
amber.graner(a)linaro.org (email and Google chat)
*
Hi,
Greetings from LAVA Team!
We are very happy to announce you that there are new features getting
added to validation.linaro.org. In order to serve you better we are
trying to collect metadata from lava-test-shell tests that you are
running in validation.linaro.org.
On 2013-04-16 we will be deploying a new version of lava-dashboard in
validation.linaro.org which requires all lava-test-shell test
definitions, which you run should have metadata to be complete.
When we say metadata to be complete, following is a sample test
definition we refer to:
metadata:
name: device-tree
format: "Lava-Test-Shell Test Definition 1.0"
description: "Device tree test to check folder structure."
os:
- ubuntu
devices:
- origen
- snowball
- panda
- panda-es
- vexpress
environment:
- lava-test-shell
install:
bzr-repos:
-
lp:~linaro-foundations/linaro-ubuntu/lava-test-device-tree
run:
steps:
- "cd lava-test-device-tree; sudo bash -x ./run-test.sh"
parse:
pattern:
"(?P<test_case_id>[a-zA-Z0-9_-]+):\\s(?P<result>\\w+)"
However, the sections such as os, devices, environment are optional in
the above, but other parameters such as name, format, description are
mandatory in the metadata section.
If your test definition is not part of a bzr or git repository then it
is mandatory to have a 'version' parameter in metadata section. The
following example shows how a test definition metadata section will
look like for a test definition which is not part of bzr or git
repository:
metadata:
name: device-tree
format: "Lava-Test-Shell Test Definition 1.0"
version: 1.0
description: "Device tree test to check folder structure."
os:
- ubuntu
devices:
- origen
- snowball
- panda
- panda-es
- vexpress
environment:
- lava-test-shell
The documentation has been updated to reflect this change:
https://lava-dispatcher.readthedocs.org/en/latest/lava_test_shell.html
If you have any doubts in the above, please approach linaro-validation
<linaro-validation(a)lists.linaro.org>. Remember test definitions that
do not adhere to the above notification will fail when run on
validation.linaro.org after 2013-04-16.
If you want to test the correctness of your test definitions before
2013-04-16 feel free to use staging.validation.linaro.org.
Thank You.
LAVA Team!
*--
Tyler Baker
Technical Architect, Automation & CI
Linaro.org | Open source software for ARM SoCs
Follow Linaro: http://www.facebook.com/pages/Linarohttp://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog
[beware of the x-post!]
[resend from correct email address...]
Hi all,
As discussed briefly with some of you, I've been hacking on some scripts
to allow us to run some tests / benchmarks that make use of more than
one calxeda node before we get proper support in LAVA. The script is
here:
http://bazaar.launchpad.net/~mwhudson/+junk/highbank-bench-scripts/view/hea…
but it's pretty terrible code, you probably don't want to look at it.
More interesting might be the test code branch:
http://bazaar.launchpad.net/~mwhudson/+junk/highbank-bench-1/files
If it's not clear, the idea here is that:
1) devices.yaml file defines roles for nodes and says how many of each
role you want,
2) the test code branch is copied to each node,
3) the run-$rolename.sh script is run on each node,
4) finally the contents of the /lava/results directory on each node is
copied back to the system the tests were run from.
Coordination between nodes is done via lava-wait-for and lava-send shell
scripts as proposed in the connect session.
fakedispatcher is invoked with the URL of the test code branch, e.g.:
python fakedispatcher.py lp:~mwhudson/+junk/highbank-bench-1
Some notes:
1) I hope that using an "API" like that proposed in the connect session
will let us figure out if it's actually a useful api.
2) fakedispatcher is still pretty terrible in many ways (e.g. it has a
hardcoded list of (currently just 2) calxeda nodes to use), and
either gives obscure errors or just hangs when things go wrong.
3) Despite 2), it does actually work. So I'm pretty happy about that,
and would like to talk to all of you about how to write your test
cases in a form that works with fakedispatcher :)
Cheers,
mwh