Changes

Jump to: navigation, search

Buildbot and Cairo

7,289 bytes added, 21:55, 7 March 2008
m
added prerequisites of project
== Project Name ==
Cairo on Buildbotis a project to build the Cairo graphics library in an automated manner with Buildbot and be able to run tests and performance tests
== Project Description == Automate Cairo builds with testing suites on Buildbot. == Project Leader(s) ==
[[User:Awdelyea| Adam Delyea]]<br />
[[User:armenzg|Armen Zambrano]]
== Project Contributor(s) ==
* [http://blog.vlad1.com/ Vladimir Vukicevic]
* Ben Hearshum
NOTE: only == Project Leader(s) should add names hereNews ==* Mar 06 2008 - Started writing cairobuild. You py grouping steps and CairoTests class which generates summary* Feb 29 2008 - '''can’tWhy does the TESTS take so long on MacOS X? It is ridiculous!!''' add your own name * 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 the Contributor listfixed* Jan 19 2008 - Project Proposal from Vladimir Vukicevic.
== Project Details Release ==<blockquote>=== Requirements ===* [http://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 (I am using 1.5.3.6)]=== Mar. 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 blog 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])
Automate Cairo builds with # svn co http://svn2.assembla.com/svn/Seneca_Hera_Try_Server_Setup/buildbot-configs/cairomaster/# buildbot, and add create-slave ./cairoslave localhost:9876 macslave slavepassword (change macslave for linuxslave when trying to run in support for running test suites Linux)# buildbot start cairomaster# buildbot start cairoslave# firefox http://localhost:8020 //OR open it with buildbot.any browser </blockquote>
== Project Tasks ==
<table style="width: 100%;" class="standard-table" cellborder=1 border=1 cellpadding=3 cellspacing=0>
<th style=" width: 17%;"><br />'''''Task'''''<br /><br /></th>
<th style=" width: 30%;"><br />'''''Details'''''<br /><br /></th>
<th style=" width: 5%;"><br />'''''Priority'''''<br /><br /></th>
<th style=" width: 15%;"><br />'''''Contributors'''''<br /><br /></th>
<th style=" width: 15%;"><br />'''''Status'''''<br /><br /></th>
<th style=" width: 4%;"><br />'''''Target'''''<br /><br /></th>
<th style=" width: 4%;"><br />'''''Completed'''''<br /><br /></th>
<th style=" width: 10%;"><br />'''''Link'''''(s)<br /><br /></th>
 
<tr>
<tdth style=" width: 30%;">Build Cairo '''''Task'''''<br /w Buildbot></tdth> <tdth style=" width: 35%;">'''''Details'''''<br />Edit master.cfg to automate Cairo build</tdth> <td th style="background-colorwidth: red5%; text-align: center; font-weight: bold; font-size: bigger">High'''''Priority'''''<br /td></th> <tdth style=" width: 10%;">[[User:Armenzg|Armen Zambrano]]'''''Contrib.'''''<br /> [[User:Awdelyea|Adam Delyea]]</tdth> <td th style="background-colorwidth: green5%; text-align: center; font-weight: bold; font-size: bigger">Done'''''Status'''''<br /></tdth> <tdth style=" width: 5%;">'''''Target'''''<br />&nbsp;</tdth> <tdth style=" width: 10%;">&nbsp;'''''Link'''''(s)<br /td> <td>&nbsp;</tdth>
</tr>
  <trstyle="height:42px;"> <td>Build Cairomanually</td>
<td>Manually build Cairo</td>
<td style="background-color: orange; text-align: center; font-weight: bold; font-size: bigger">MediumMed</td> <tdstyle="text-align: center;">[[User:Armenzg|Armen Zambranoarmenzg]]</td>
<td style="background-color: green; text-align: center; font-weight: bold; font-size: bigger">Done</td>
<td>&nbspstyle="text-align: center;</td> <td">&nbsp;</td>
<td>[http://armenzg.blogspot.com/2008/01/armenzg-sess7-build-cairo.html Blog: Building Cairo]</td>
</tr>
<tr style="height:42px;">
<!-- Task --><td>Buildbot and Cairo on Linux</td>
<!-- Details --><td>Build on my laptop Cairo and run tests; Missing perf tests</td>
<!-- Priority --><td style="background-color: red; text-align: center; font-weight: bold; font-size: bigger">High</td>
<!-- Contributors --><td style="text-align: center;">[[User:Armenzg|armenzg]]</td>
<!-- Status --><td style="background-color: green; text-align: center; font-weight: bold; font-size: bigger">Done</td>
<!-- Target --><td style="text-align: center;">15 Feb</td>
<!-- Link --><td>[http://armenzg.blogspot.com/2008/02/armenzg-sess13-buildbot-with-cairo.html Blog: Buildbot with Cairo]</td>
</tr>
<tr style="height:42px;">
<td>Fix GIT and SUDO issue</td>
<td>'''* Fixed by delete checked out source code and ./configure --prefix'''</td>
<td style="background-color: red; text-align: center; font-weight: bold; font-size: bigger">High</td>
<td style="text-align: center;">[[User:Armenzg|armenzg]]</td>
<td style="background-color: green; text-align: center; font-weight: bold; font-size: bigger">Fixed</td>
<td style="text-align: center;">15 Feb</td>
<td></td>
</tr>
<tr style="height:42px;">
<!-- 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;">7 Mar</td>
<!-- Link --> <td>&nbsp;</td>
</tr>
<tr style="height:42px;">
<!-- Task --> <td>Run the "performance" steps</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;">&nbsp;</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: green; text-align: center; font-weight: bold; font-size: bigger">Fixed</td>
<!-- Target --> <td style="text-align: center;">Feb 29</td>
<!-- Link --> <td>&nbsp;</td>
</tr>
<tr style="height:42px;">
<!-- Task --> <td>Build upon source changes in the GIT repository</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;">&nbsp;</td>
<!-- Link --> <td>&nbsp;</td>
</tr>
<tr style="height:42px;">
<!-- Task --> <td>Try to use the GIT source class that buildbot has</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;">&nbsp;</td>
<!-- Link --> <td>&nbsp;</td>
</tr>
<tr style="height:42px;">
<!-- Task --> <td>Package results and make them available</td>
<!-- Details --> <td>Pass the results of "make test" and "make html" to the master and allow to download them</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;</td>
<!-- Link --> <td>&nbsp;</td>
</tr>
<tr style="height:42px;">
<!-- Task --> <td>Write a CSS file for the waterfall view</td>
<!-- Details --> <td>&nbsp;</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;</td>
<!-- Link --> <td>&nbsp;</td>
</tr>
<tr style="height:42px;">
<!-- Task --> <td>Email notifications? IRC notifications?</td>
<!-- Details --> <td>&nbsp;</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;</td>
<!-- Link --> <td>&nbsp;</td>
</tr>
</table>
 
== 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?'''* [http://svn2.assembla.com/svn/Seneca_Hera_Try_Server_Setup/buildbot-configs/table>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.ca/%7Eazambran/mozilla/cairo/] - Archived files* [http://matrix.senecac.on.ca/%7Eazambran/mozilla/screenshots/ http://matrix.senecac.on.ca/%7Eazambran/mozilla/screenshots/] - Screenshots (look for "cairo" in the filenames)
== Project News =='''What has been released this week:'''* [http://svn2.assembla.com/svn/Seneca_Hera_Try_Server_Setup/buildbot-configs/cairo-one-ubuntu-slave/master.cfg master.cfg] - It builds Cairo and runs automated tests on one linux machine* [http://matrix.senecac.on.ca/%7Eazambran/mozilla/screenshots/buildbot-status-cairo.jpg buildbot-status-cairo.jpg] - After build #8 (no tests at this point)* [http://matrix.senecac.on.ca/%7Eazambran/mozilla/cairo/Buildbot:Cairo-results.tar.gz Buildbot:Cairo-results.tar.gz] - After build #11 (tests were run)
Jan 19 2008 '''Steps to meet requirements'''* sudo apt- Project Proposal from Vladimir Vukicevic.get install buildbot* sudo apt-get install git-core //This is to get the version control that cairo uses, it is called GIT
== Notes =='''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
* 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
 === 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(addStep(step.ShellCommand, name="checkout pixman", command=["git","clone","git://git.cairographics.org/git/pixman"], workdir="") ubuntuFactory.addStep(addStep(step.ShellCommand, name="checkout cairo", command=["git","clone","git://git.cairographics.org/git/cairo"], workdir="") ubuntuFactory.addStep(addStep(step.ShellCommand, name="autogen for pixman", command=["./autogen.sh"], workdir="pixman") ubuntuFactory.addStep(addStep(step.ShellCommand, name="configure pixman", command=["./configure"], workdir="pixman") ubuntuFactory.addStep(addStep(step.ShellCommand, name="make pixman", command=["make"], workdir="pixman") ubuntuFactory.addStep(addStep(step.ShellCommand, name="make install pixman", command=["sudo","make","install"], workdir="pixman") #let's prepare cairo ubuntuFactory.addStep(addStep(step.ShellCommand, name="autogen for cairo", command=["./autogen.sh"], workdir="cairo") ubuntuFactory.addStep(addStep(step.ShellCommand, name="configure cairo", command=["./configure"], workdir="cairo") ubuntuFactory.addStep(addStep(step.ShellCommand, name="make cairo", command=["make"], workdir="cairo") ubuntuFactory.addStep(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]blockquote>
1
edit

Navigation menu