Hi all, I'm in the process of bringing up Autotest to control my board farm which covers a number of different architectures (ARM, PowerPC, Microblaze & Sparc to name a few). I'm setting it up so that I can automate sanity testing of my kernel branches before pushing them out to linux-next. My goal is to have a setup that will:
- submit a git commit id to be tested (ideally via the cli interface) - checkout the kernel tree on a build machine (x86 or PowerPC) - cross-compile kernel for N architectures/platforms (ARM, PowerPC, MIPS, x86, Sparc, etc) - Boot each resulting kernel on one or more QEMU instance and/or real hardware - report the results (of course). So far, I've got conmux and autoserv set up and it seems to work really well for running tests on my target boards. Now I'm trying to add in the kernel build, and I need some advice/recommendations. >From what I can tell, server/git_kernel.py implements the functionality for building a kernel for a git tree, but it does so by copying the kernel source to the client and building it natively. There doesn't seem to be any support for cross compiling the kernel. This doesn't really match my use case because most of the clients are cut down embedded systems which many not have a native compiler installed, and besides it is much faster to cross compile the kernel on one of my x86/powerpc servers. client/bin/kernel.py seems to have some cross-compile support (even though the comments say it is broken), but I don't see any support for fetching a kernel from a git tree. >From here I see a few options: 1) Modify server/git_kernel.py to support cross compiling and use an autoserv control file to send the source to an x86 build client (quite possibly the local machine) to cross compile it. - This seems sub-optimal since it means there are two copies of the kernel source tree; one on the autoserv machine, and one pushed out to the build client. 2) Modify client/bin/kernel.py to support fetching the source from a git tree and running it as a client test with one of my x86 servers as the client. - This seems to fit more naturally into the autotest design since building the kernel is a test in itself, but it looks like I need to do some work to create a kernel crosscomple test and to make the resulting kernel available to autoserv tests. - There is probably some code in server/git_kernel.py that can be factored out and used for both client-side and server-side kernel build activities. 3) same as #2, but instead using a wrapper class around the kernel class. Or maybe inheriting from the kernel class. 4) Some other way I haven't though of? What is the best way to proceed here? Also, I need to figure out how to make the boot tests depend on the kernel building correctly. ie. only boot the powerpc target boards if/when the powerpc kernel build test completes correctly. How do I do this? Should I be calling the CLI from the kernel build test script when the build completes? Is there a better way to schedule dependent tests? Thanks, g. -- Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. _______________________________________________ Autotest mailing list Autotest@test.kernel.org http://test.kernel.org/cgi-bin/mailman/listinfo/autotest