Buildbot and Cairo

From CDOT Wiki
Revision as of 14:19, 16 February 2008 by Armenzg (talk | contribs) (Added tasks)
Jump to: navigation, search

Name

Cairo on Buildbot

Description

Automate Cairo builds with testing suites on Buildbot. Automate Cairo builds with buildbot, and add in support for running test suites with buildbot.

Leader(s)

Adam Delyea
Armen Zambrano

Contributor(s)

NOTE: only Project Leader(s) should add names here. You can’t add your own name to the Contributor list.

Tasks

Task
Details
Priority
Contrib.
Status
Target
Link(s)
Build Cairo manually Manually build Cairo Medium armenzg Done   Blog: Building Cairo
Buildbot and Cairo on Linux Build on my laptop Cairo and run tests; Missing perf tests High armenzg Done 15 Feb Blog: Buildbot with Cairo
Fix GIT and SUDO issue High FIXED  
Write the steps for Mac Med      
Run the "performance" steps Med      
Find out how to use PKG_CONFIG_PATH Med      
Build upon source changes in the GIT repository Med      
Try to use the GIT source class that buildbot has Med      
Package results and make them available Pass the results of "make test" and "make html" to the master and allow to download them Med      
Write a CSS file for the waterfall view   Med      
Email notifications? IRC notifications?   Med      

Problems

  • The first time the command GIT CLONE works because there is nothing before that execution but the second run should be an update instead of a checkout. What could be the proper GIT command to have as the step?
  • I need to do SUDO MAKE INSTALL, but this requires user's input which breaks the automated concept. What could be the right step?

Project News

Feb 11 2008 - Steps are written but some issues have to fixed Jan 19 2008 - Project Proposal from Vladimir Vukicevic.

Notes

master.cfg draft

# -*- python -*-
# ex: set syntax=python:

# This master.cfg defines how to build Cairo and run the tests it has

from buildbot.scheduler import Scheduler, Periodic
from buildbot.process import step, factory
from buildbot.status import html
s = factory.s
c = BuildmasterConfig = {}

####### PROJECT IDENTITY

c['projectName'] = "Cairo"
c['projectURL'] = "http://www.cairographics.org/"
# changed buildbot's default port
c['buildbotURL'] = "http://localhost:8020/"
#modified from default's buildbot port
c['slavePortnum'] = 9876

####### BUILDSLAVES

c['bots'] = [("cairoslave", "cairoslavepassword")]

####### STATUS TARGETS

c['status'] = []

from buildbot.status import html
c['status'].append(html.Waterfall(http_port=8010))

####### CHANGESOURCES

c['sources'] = []

# Armen - Research GIT source changes

####### SCHEDULERS

## configure the Schedulers
from buildbot.scheduler import Scheduler
c['schedulers'] = []
c['schedulers'].append(Periodic(name="30 minutes build scheduler", 
                                builderNames=["Linux Ubuntu7.1 dep unit test"],
                                periodicBuildTimer=30*60))

####### BUILDERS

builders = []

ubuntuFactory = factory.BuildFactory()
ubuntuFactory.addStep(step.ShellCommand, name="checkout pixman",
        command=["git","clone","git://git.cairographics.org/git/pixman"],
        workdir="")
ubuntuFactory.addStep(step.ShellCommand, name="checkout cairo",
        command=["git","clone","git://git.cairographics.org/git/cairo"],
        workdir="")
ubuntuFactory.addStep(step.ShellCommand, name="autogen for pixman",
        command=["./autogen.sh"],
        workdir="pixman")
ubuntuFactory.addStep(step.ShellCommand, name="configure pixman",
        command=["./configure"],
        workdir="pixman")
ubuntuFactory.addStep(step.ShellCommand, name="make pixman",
        command=["make"],
        workdir="pixman")
ubuntuFactory.addStep(step.ShellCommand, name="make install pixman",
        command=["sudo","make","install"],
        workdir="pixman")
#let's prepare cairo
ubuntuFactory.addStep(step.ShellCommand, name="autogen for cairo",
        command=["./autogen.sh"],
        workdir="cairo")
ubuntuFactory.addStep(step.ShellCommand, name="configure cairo",
        command=["./configure"],
        workdir="cairo")
ubuntuFactory.addStep(step.ShellCommand, name="make cairo",
        command=["make"],
        workdir="cairo")
ubuntuFactory.addStep(step.ShellCommand, name="make install cairo",
        command=["sudo","make","install"],
        workdir="cairo")

cairo_trunk_ubuntu_builder = {
      'name': "Linux Ubuntu7.1 dep unit test",
      'slavenames': ['cairoslave'],
      'builddir': "trunk_ubuntu",
      'factory': ubuntuFactory}

builders.append(cairo_trunk_ubuntu_builder)
c['builders'] = builders
# c['builders'] = [cairo_trunk_ubuntu_builder]


Build Cairo manually

         make[2]: Entering directory `/home/armen/sandbox/cairo2/pixman/pixman'
         test -z "/usr/local/lib" || /bin/mkdir -p "/usr/local/lib"
          /bin/bash ../libtool --mode=install /usr/bin/install -c  'libpixman-1.la' '/usr/local/lib/libpixman-1.la'
         /usr/bin/install -c .libs/libpixman-1.so.0.9.6 /usr/local/lib/libpixman-1.so.0.9.6
         /usr/bin/install: cannot remove `/usr/local/lib/libpixman-1.so.0.9.6': Permission denied
         make[2]: *** [install-libLTLIBRARIES] Error 1
  • sudo make install //I had to use SUDO
  • whereis libpixman-1
  • cd ../cairo && ./autogen.sh
  • ./configure
  • make
  • make install //the same problem with SUDO
         make[2]: Entering directory `/home/armen/sandbox/cairo2/cairo/src'
         test -z "/usr/local/lib" || /bin/mkdir -p "/usr/local/lib"
          /bin/bash ../libtool --mode=install /usr/bin/install -c  'libcairo.la' '/usr/local/lib/libcairo.la'
         /usr/bin/install -c .libs/libcairo.so.2.14.0 /usr/local/lib/libcairo.so.2.14.0
         /usr/bin/install: cannot create regular file `/usr/local/lib/libcairo.so.2.14.0': Permission denied
  • sudo make install

Running the tests and getting an index.html file with them

  • make test //takes long time
  • cd test && make html
  • firefox index.html