Tuesday, January 22, 2008

armenzg: Sess7 - Build Cairo

Another project that is really similar to the one I am doing with Mozilla is to set up a Buildbot Farm to build the latest Cairo code (Mozilla relies on Cairo), to run unit testing tests and to run performance tests.
So far what I have done is to try to build manually Cairo in Linux Ubuntu 7.1

I can say that I did not find instructions on how to build Cairo over the internet and neither on Cairo's website (the closest thing is http://cairographics.org/download/ and something about building cairomm but I can't find the URL anymore). Maybe there is some info in here, http://lists.cairographics.org/archives/cairo/

NOTE: Candy bar at the bottom of this post

Anyways, these are the steps I manage to do by the help of behdad, ssp (from freenode #cairo) and cesar (from #seneca)
NOTE = I don't have most of the concepts behind building things on Linux, which might be obviuos to a lot of Linux developers

Get the source code:
  • sudo apt-get install git-core //To get the GIT Version Control
  • git clone git://git.cairographics.org/git/cairo //To get the latest source code of Cairo - Checkout 2m43s
  • git clone git://git.cairographics.org/git/pixman //Cairo cannot be built without this project installed - Checkout 3sec

Some instructions that will apply for Builbot configuration (I think)
  • makedir ~/buildslave/base TO BE EXPLAINED
  • PKG_CONFIG_PATH=~/buildslave/base/
NOTE: I read this in an email I got but I am not sure why or if I did it right

Let's build pixman before cairo
  • cd to where I have pixman
  • I tried to run ./configure as it said in pixman's INSTALL file but nothing
  • I tired to run ./autogen.sh but it said that could not find autoreconfig or something like that
  • The next three steps were needed for me to be able to run ./autogen.sh
  • sudo apt-get install autoconf //as suggested in IRC
  • sudo apt-get install automake //from errors in screen
  • sudo apt-get install libtool //as suggested in IRC but could be induced from errors
  • ./autogen.sh //FINALLY
  • ./configure
  • make
  • sudo make install
  • To see if you have the pixman library do this:
    whereis libpixman-1 //I think that it should work even before we run sudo ldconfig

Build Cairo
  • Then CD to where the Cairo source code is
  • ./autogen.sh
  • make
  • sudo make install

Let's run some tests and others
  • make test //Allmost all tests out of 147 have failed
  • One of the failed tests error: "/home/armen/sandbox/cairo/cairo/test/.libs/lt-xlib-surface: error while loading shared libraries: libpixman-1.so.0: cannot open shared object file: No such file or directory"
  • cd test && make html //"Created index.html" - Just to see what will I get
  • sudo ldconfig // Suggested by Cesar - link to explanation
  • QUESTION: What is the difference if I do "make test" inside of test or one level above?
  • make test // A lot of graphics going on and 32 of 147 tests failed
  • make html //"Created index.html" - Just to see what will I get

The Candy bar
I have packed the index.html file with the png and the log files into a tar.gz file so you can see the results of what the tests of Cairo look like (Open index.html to see it)
I have packed the index.html file with the png and the log files into a tar.gz file so you can see the results of what the tests of Cairo look like.
NOTE: I have removed 300 objects from it to reduce the file size from 50 something MB to 9 MB.
NOTE2: You still have another 5000+ objects that I have not removed