Request for stable, automated build process

Holger Freyther zecke at openmoko.org
Sat May 3 00:12:41 CEST 2008


On Thursday 01 May 2008 18:01:38 Bobby Martin wrote:
> I sent this before to openmoko-devel and was greeted with a deafening
> silence, so I'm resending to a broader audience.  As evidenced by a recent
> post to openmoko-devel by saurabh gupta, one of the GSoC selectees, this
> really is a problem.  The longer it's put off, the more potential benefits
> (in the form of community contributors who give up rather than improve OM)
> are lost.

Well, the reason I didn't reply to the first mail is because it is touching 
way too many topics to answer all of them in depth and finding a time slot to 
do this.

I'm working on the april software update. I have my branch and it has a high 
probablity of always building. Everything we built for the 
openmoko-qtopia-x11-image (just for testing) is set to a fixed 
version/srcdate. I can rebuild the whole distribution without internet 
(because I don't have internet at home) and I have written a task for 
base.bbclass to help me to lock down the built to versions.


The obvious downside is: To upgrade certain components I have to spent close 
to a day to build, and test the result.

The good thing: I can make sure to have an always building image, which allows 
you to make phone calls, sms,...



> ---------------------------------------------------------------------------
>-----
>
> I really think OM is shortchanging themselves with the current build
> process.  As far as I can tell:
>
>     * there is no way to run a build that has a high probability of working
> all the way through

Not true for my org.openmoko.zecke.april-update branch because everything is 
locked down (I can build without internet if I have fetched all sources 
before)


>     * there is no way to identify the latest code that builds together

You know the SRCDATE, SRCREVS, tarballs you are going to use. The information 
for a whole system is massive though.


>     * there is no automated build process, nor even a stable script one can
> follow to do a complete build from source on one's local machine

Right, I have attached my Openembedded scripts and configuration I use to 
build on my hardy system. You see it is really basic/simple.


>     * it looks to me as if the code lives in at least three different kinds
> of repositories: svn, GIT, and mtn

Yes, we integrate a lot of different projects. They use tarballs on http/ftp, 
cvs, hg, p4, mtn, git, svn. There is hardly anything we can change about 
that.

>     * I'm sure that there is a way to identify the code that went into a
> particular snapshot found on the web, but I don't know what it is

The ipk files should point to the recipe used to build the package and has the 
SRCDATE/SRCREV in the same. So it is easy to find out.

>     * there is no way to identify which tasks definitely have someone
> reliable working on them, which are open issues & need attention they're
> not getting, and which have some casual developer looking at them


I agree, we don't have an bugmaster at Openmoko who could help on this. For 
the april software update I mostly track the issues myself and pester the 
people involved (oh already my 3rd task).

>
> I have done several very minor programs for my neo, which I would have much
> preferred to integrate into the real build process.  However, when I've
> tried the Mokomakefile process, it will run for hours and then die in some
> obscure way.  I spent a few hours over the course of several days debugging
> that process on my Ubuntu machine at home, before I realized there were
> version issues with the assembler that I didn't see any way to work around.

Three things:
	- Finding the balance between always stable and cutting edge, specially while 
in development is pretty hard. I have opted for locking everything down 
because I lack internet at home which is helpful for what you want as well.

	- You can ask some one of the distro team to add your software to the build 
process, we are happy to do so.

	- Most of us use debian/ubuntu systems so should be able to help you in 
getting it built.


> I just don't have the energy to spend a dozen hours debugging a process
> that will enable me to spend a few dozen hours doing development.  I would
> think that many other potential contributors fall in the same boat.
>
> I think that a few procedures could dramatically increase the development
> community's involvement in OM, resulting in faster bugfixes, more features
> added sooner, and greater visibility into the project status:

Yes, I agree. Ading poky's SDK management will help to easily build your 
software. If you use autotools in a proper way it should be easy to package 
them. I think our distro team is interested in helping here. The alternative 
would be to create a feed with user submitted packages but it has the 
downside of not easily recreating the package (e.g. due changing ABI, 
compilers, c libraries..., we have been through this with the Sharp Zaurus).



> There should also be a test harness for developers to easily insert tests
> for their code, and for which every bug (except those that require hardware
> to test) must have a test inserted for the bug to be considered fixed.  The
> test harness should likewise be runnable trivially, with one simple command
> (e.g. 'make test')

Yes, part of the upstream projects:
	E.g., WebKit has a 300 MB Layout regression test suite, my openmoko rss 
reader has a couple of tests as well. The thing is properly packaging the 
tests and executing them on the device ("make test" will not work...packaging 
the build dir will not work as well). The best thing I have seen so far is 
bazaars selftest (which fails on ubuntu systems).

>
>
> *Continuous integration* (CI)
> Someone needs to set up a server that on a periodic basis (one or more
> times per day) pulls the latest build process script, labels the code

what is "the code"? Again we integrate hundreds of different projects. How do 
you label a tarball? Feel free to join my multi-year project Utopia and work 
on my whole system regression testing and data mining system ideas.


> If the process succeeds, then the code labeled CI_CANDIDATE would be
> relabeled something like GOOD_BUILD_2008_04_23 and the CI_CANDIDATE label
> removed.  Further, the test harness should be run, and if it passes a label
> like TESTS_PASS_2008_04_23 should be added.

Yes, we can use mtn certs to attach to a revision to say if that built or 
didnt.


> *Task tracking*
> Maybe this is supposed to happen in bugzilla now, but it seems to me that
> we need the kind of bug tracking I was discussing above - a full list of
> tasks, priority (something as simple as High, Medium, Low would work fine),
> and a way to see if it is *really* being worked or not.  Having a project
> manager who is an OM employee for every task would be helpful, since we
> could then expect to get an answer if we email a query about the status.

Yup, we need a bug master. We need one inside Openmoko as well to help us to 
focus on what needs to be done for a product. For the April software update I 
kind of assume this position (4th role, but it is sadly mostly on paper and 
poking the devs directly).


> *Documentation*
> If the above were implemented, that documentation could be as simple as
> telling people:
>     * the script location and how to configure what labels are used for
> each subsystem
>     * the location to download the VM or chroot tarball if necessary
>     * the meaning of the continuous integration labels, and which ones to
> look for
>     * perhaps the place to look for CI build statuses (most recent
> successful build, etc)
>     * the location of the task tracker and the important fields (status,
> priority, assignee(s), project manager)
>
> Some or possibly even all of this may exist, but if so I couldn't find the
> documentation.  In particular, CI and a test harness make a HUGE difference
> in the likelihood of success of a project, and the ease of contributing to
> the project.

At the beginning I ran a tinderbox with build results and build failures, 
automatically filing bug reports. The reality is, no user looked at the build 
status before starting his build. What I learned from a friend called Laibsch 
is: There are so many cool things you could automate and write scripts for 
but there are other things non-technical solutions that help so much more. :)


>
> I realize that this would cost someone several days of effort, but the
> payback wouldn't just be for the community, the developers at OM would
> benefit, and the managers and executives would have much greater visibility
> into the status of the project.


What are your issues?
	a) Want to have an always building distribution.
	b) Want to be able to add your package to the distribution process
	c) Want to enable users to help fixing issues
	d) What did I miss.


My take on these:

a)
	-The qtopia-x11-image should always built. I think opkg was the last thing we 
forget to set to a certain revision.
	- You know which versions got built and can fetch the sources and rebuilt 
without internet.

b)
	- I'm against user submitted feeds as we have no control on the quality and 
we lack the possibility to rebuild packages
	- I think it is in the interest of the distro team to assist you in packaging 
your software. Maybe write distro-devel for a request of packaging?
	- With the qtopia-x11-image you should be able to easily build and package 
autotools based projects

c)
	- We need someone to summarize important issues, set the right priorities, 
collect information.
	- I think this can be done within the community.
        - The next thing is to actually get the source and fix it. I work on 
this with the merging of poky's SDK capabilities and also considering debian 
source packages (work from the mamona guys at indt)

d)
	- No idea


this is my take on this... I think we have most of what you want, on some 
parts I agree with you (issue tracking), on the automation side I do not 
fully agree, there are better things to do which require less effort and have 
a bigger impact/success (e.g. a user telling which mtn revision of the OM 
metadata works...).

	z.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: source.sh
Type: application/x-shellscript
Size: 114 bytes
Desc: not available
Url : http://lists.openmoko.org/pipermail/openmoko-devel/attachments/20080503/5932907b/source.bin
-------------- next part --------------
BBFILES = "${HOME}/source/openmoko/org.openmoko.dev/packages/*/*.bb"
MACHINE = "om-gta02"
DISTRO = "openmoko"
BB_NUMBER_THREADS = "4"
PARALLEL_MAKE = "-j4"
ENABLE_BINARY_LOCALE_GENERATION="0"

DL_DIR ="${HOME}/source/sources"


More information about the openmoko-devel mailing list