Diff for "BuildFarm/TryOutBuildSlave"

Not logged in - Log In / Register

Differences between revisions 14 and 15
Revision 14 as of 2010-03-08 14:12:46
Size: 3707
Editor: jtv
Comment:
Revision 15 as of 2010-03-10 09:42:18
Size: 3709
Editor: jtv
Comment:
Deletions are marked like this. Additions are marked like this.
Line 41: Line 41:
  sudo pbuilder --login --inputfile lib/canonical/launchpad-buildd*all.deb   sudo pbuilder --login --inputfile lib/canonical/launchpad-buildd_*_all.deb

Try the build slave locally

This overlaps with the buildd part of HowToUseSoyuzLocally, but shows you how to set up the buildd in a chroot without customizing your own system setup for it.

Build the package

  cd lib/canonical/buildd
  debian/rules package
  dpkg-buildpackage -b

Package is lib/canonical/launchpad-buildd*all.deb

Set up pbuilder chroot

To avoid installing the launchpad-buildd package on my computer, I use pbuilder to create an manage a chroot environment.

Make sure you have pbuilder installed:

sudo apt-get install pbuilder

If archive.ubuntu.com is too far away from you network-wise, you can configure MIRRORSITE in /etc/pbuildderrc to use a mirror that's faster for you. Then do

  sudo pbuilder --create --distribution lucid
  sudo pbuilder --login --save-after-login

Now you should find yourself inside the chroot. To satisfy the NTP needs of the launchpad-buildd, define it to be the IP of ntp.ubuntu.com or whatever NTP server you like.

  echo "91.189.94.4  ntp.buildd" >> /etc/hosts
  exit

After exit, the chroot will be re-packaged by pbuilder to save the changes. You might choose to save other steps as well but usually I configure the chroot whenever I run it, like so.

  sudo pbuilder --login --inputfile lib/canonical/launchpad-buildd_*_all.deb

Inside the chroot again: Install and start buildd:

  apt-get -f install
  dpkg -i /tmp/buildd/launchpad-buildd*all.deb
  /etc/init.d/launchpad-buildd start

We need a package to try out the generation of translation templates. Eventually this will be pulled in via bazaar but now I do it manually. Obviously, this is specific to this type of build. Inside the chroot edit /etc/apt/sources.list to enable the deb-src line. Then pull in a source pacakge. Gimp has a couple of translation templates.

  apt-get update
  cd /home/buildd
  su buildd
  apt-get source gimp

Upload chroot to librarian

Outside the chroot, in another terminal (leave the buildd in the chroot running!) Get the builder chroot from https://edge.launchpad.net/api/devel/ubuntu/lucid/i386/chroot_url.

wget -O - -q https://edge.launchpad.net/api/devel/ubuntu/lucid/i386/chroot_url | xargs wget

This should give you a file chroot-ubuntu-lucid-i386.tar.bz2. This is the chroot tarball for Lucid on i386.

Upload it to the Librarian, but while you're at it, also register it as the chroot for Lucid:

  make run & # (Need Librarian running, and make start_librarian didn't work)
  scripts/upload2librarian -f chroot-ubuntu-lucid-i386.tar.bz2
  --> http://launchpad.dev:58080/93/chroot-ubuntu-lucid-i386.tar.bz2
  scripts/ftpmaster-tools/manage-chroot.py -s lucid -a i386 chroot-ubuntu-lucid.tar.bz2 add

(Actually manage-chroot.py also does the upload to the Librarian, so maybe we don't really need to do it separately).

Copy that URL you got from upload2librarian for the next step.

Drive slave through rpc

With the libranrian still running, fire up a python shell and:

import xmlrpclib
proxy = xmlrpclib.ServerProxy('http://localhost:8221/rpc')
proxy.ensurepresent('f1f10b8402ed686aaf0307676c76f07b45af2a09', 'http://launchpad.dev:58080/93/chroot-ubuntu-lucid-i386.tar.bz2', '', '')
proxy.build('1-1', 'translation-templates', 'f1f10b8402ed686aaf0307676c76f07b45af2a09', {}, {'branch_url': '/home/buildd/gimp-2.6.8'})
proxy.status()
proxy.clean() # Clean up if it failed

Inspect buildlog

Inside the chroot:

  less /home/bulidd/filecache-default/buildlog