Changes

Jump to: navigation, search

Buildbot and Cairo

1,856 bytes added, 21:55, 7 March 2008
m
added prerequisites of project
== Name ==
Cairo on Buildbot == Description == Automate is a project to build the Cairo builds graphics library in an automated manner with testing suites on Buildbot.Automate Cairo builds with buildbot, and add in support for running test suites with buildbot.be able to run tests and performance tests
== Leader(s) ==
* [http://blog.vlad1.com/ Vladimir Vukicevic]
* Ben Hearshum
 
== Project News ==
* Mar 06 2008 - Started writing cairobuild.py grouping steps and CairoTests class which generates summary
* Feb 29 2008 - '''Why does the TESTS take so long on MacOS X? It is ridiculous!!'''
* Feb 29 2008 - Added steps to build on MacOS X
* Feb 16 2008 - Updated Cairo project page and first proper release
* Feb 11 2008 - Steps are written but some issues have to fixed
* Jan 19 2008 - Project Proposal from Vladimir Vukicevic.
NOTE== Release ==<blockquote>=== Requirements ===* [http: only Project Leader//buildbot.net/trac buildbot (I am using 0.7.5)]* [http://twistedmatrix.com/trac/ twisted (I am using 2.5.0)]* [http://git.or.cz/ Git (sI am using 1.5.3.6) should add names here]=== Mar. You '''can’t''' add your own name 7th ===* The steps to build on Mac have been added to [http://svn2.assembla.com/svn/Seneca_Hera_Try_Server_Setup/buildbot-configs/ Seneca Hera Try Server Setup/buildbot-configs/]and the Contributor listblog post explaining a lot of details about how much has been done is here: ([http://armenzg.blogspot.com/2008/02/armenzg-sess14-building-cairo-on-mac-no.html Sess14-Buildbot on Cairo])  # svn co http://svn2.assembla.com/svn/Seneca_Hera_Try_Server_Setup/buildbot-configs/cairomaster/# buildbot create-slave ./cairoslave localhost:9876 macslave slavepassword (change macslave for linuxslave when trying to run in Linux)# buildbot start cairomaster# buildbot start cairoslave# firefox http://localhost:8020 //OR open it with any browser </blockquote>
== Tasks ==
<!-- Task --> <td>Write the steps for Mac</td>
<!-- Details --> <td></td>
<!-- Priority --> <td style="background-color: orange; text-align: center; font-weight: bold; font-size: bigger">Med</td>
<!-- Contributors--> <td style="text-align: center;">cworth #cairo</td>
<!-- Status --> <td style="background-color: green; text-align: center; font-weight: bold; font-size: bigger">Done</td>
<!-- Target --> <td style="text-align: center;">29 Feb</td>
<!-- Link --> <td>[http://armenzg.blogspot.com/2008/02/armenzg-sess14-building-cairo-on-mac-no.html Sess14-Buildbot on Cairo]</td>
</tr>
<tr style="height:42px;">
<!-- Task --> <td>Write the steps for Windows</td>
<!-- Details --> <td></td>
<!-- Priority --> <td style="background-color: orange; text-align: center; font-weight: bold; font-size: bigger">Med</td>
<!-- Contributors--> <td style="text-align: center;"></td>
<!-- Status --> <td style="background-color: white; text-align: center; font-weight: bold; font-size: bigger">&nbsp;</td>
<!-- Target --> <td style="text-align: center;">7 Mar</td>
<!-- Link --> <td>&nbsp;</td>
</tr>
<tr style="height:42px;">
<!-- Task --> <td>Write cairobuild.py file</td>
<!-- Details --> <td>This will centralize and group steps together as in [http://mxr.mozilla.org/mozilla/source/tools/buildbot-configs/testing/unittest/mozbuild.py mozbuild.py]</td>
<!-- Priority --> <td style="background-color: orange; text-align: center; font-weight: bold; font-size: bigger">Med</td>
<!-- Contributors--> <td style="text-align: center;"></td>
<!-- Status --> <td style="background-color: white; text-align: center; font-weight: bold; font-size: bigger">&nbsp;</td>
<!-- Target --> <td style="text-align: center;">&nbsp;7 Mar</td>
<!-- Link --> <td>&nbsp;</td>
</tr>
<tr style="height:42px;">
<!-- Task --> <td>Find out how to use PKG_CONFIG_PATH</td>
<!-- Details --> <td>* PKG_CONFIG_PATH=(the --prefix value)+"/lib/pkgconfig"(where the .pc file is)</td>
<!-- Priority --> <td style="background-color: orange; text-align: center; font-weight: bold; font-size: bigger">Med</td>
<!-- Contributors--> <td style="text-align: center;"></td>
<!-- Status --> <td style="background-color: whitegreen; text-align: center; font-weight: bold; font-size: bigger">&nbsp;Fixed</td><!-- Target --> <td style="text-align: center;">&nbsp;Feb 29</td>
<!-- Link --> <td>&nbsp;</td>
</tr>
== Problems ==
* A lot of problems when trying to build on MacOS are mentioned here: [http://armenzg.blogspot.com/2008/02/armenzg-sess14-building-cairo-on-mac-no.html Sess14-Buildbot on Cairo]
* <strike>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?</strike>
I have decided to remove the checked out code and checkout the trunk before each build
* <strike>I need to do SUDO MAKE INSTALL, but this requires user's input which breaks the automated concept. What could be the right step?</strike>
Used ./configure --prefix=/path/to/somewhere to avoid building somewhere where I require to have sudo privileges
== Notes =='''These notes are for learning purposes and documentation'''<blockquote>=== Feb. 15th release==='''Where will I put code and screenshots?'''* 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[http://svn2.assembla.com/svn/Seneca_Hera_Try_Server_Setup/buildbot-configs/ http://svn2.assembla.com/svn/Seneca_Hera_Try_Server_Setup/buildbot-configs/] - Buildbot configs (look for "cairo")* [http://matrix.senecac.on.ca/%7Eazambran/mozilla/cairo/ http://matrix.senecac.on. What could be the proper GIT command to have as the step?ca/%7Eazambran/mozilla/cairo/] - Archived files* I need to do SUDO MAKE INSTALL, but this requires user's input which breaks the automated concept[http://matrix.senecac.on.ca/%7Eazambran/mozilla/screenshots/ http://matrix.senecac.on. What could be ca/%7Eazambran/mozilla/screenshots/] - Screenshots (look for "cairo" in the right step?filenames)
== Project News =='''What has been released this week:'''Feb 11 2008 * [http://svn2.assembla.com/svn/Seneca_Hera_Try_Server_Setup/buildbot-configs/cairo-one-ubuntu-slave/master.cfg master.cfg] - Steps are written but some issues have to fixedIt builds Cairo and runs automated tests on one linux machineJan 19 2008 * [http://matrix.senecac.on.ca/%7Eazambran/mozilla/screenshots/buildbot-status- Project Proposal from Vladimir Vukiceviccairo.jpg buildbot-status-cairo.jpg] - After build #8 (no tests at this point) == Notes ===== master* [http://matrix.senecac.on.ca/%7Eazambran/mozilla/cairo/Buildbot:Cairo-results.tar.gz Buildbot:Cairo-results.tar.cfg draft ===gz] - After build #11 (tests were run)
# -*- 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['projectURLSteps to meet requirements'] = "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 * sudo apt- Research GIT source changes ####### SCHEDULERS ## configure the Schedulers from get install 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","apt-get install"], workdir="pixman") #let's prepare cairo ubuntuFactory.addStep(step.ShellCommand, name="autogen for cairo", command=[".git-core /autogen.sh"], workdir="cairo") ubuntuFactory.addStep(step.ShellCommand, name="configure cairo", command=["./configure"], workdir="This is to get the version control that cairo") ubuntuFactory.addStep(step.ShellCommanduses, 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]it is called GIT
'''Steps to make it happen'''
* buildbot create-master ~/cairomaster
* Put the [http://svn2.assembla.com/svn/Seneca_Hera_Try_Server_Setup/buildbot-configs/cairo-one-ubuntu-slave/master.cfg master.cfg] to the the created master
* buildbot create-slave ~/cairoslave localhost:9876 cairoslave
* buildbot start ~/cairomaster
* buildbot start ~/cairoslave
* firefox http://localhost:8020 //This is to be able to see the results of the build
</blockquote>
<blockquote>
=== Build Cairo manually ===
* mkdir cairo & cd cairo
* cd test && make html
* firefox index.html
</blockquote>
1
edit

Navigation menu