Build System


To handle the environment, as it grows, we want a build system that is capable of recompiling everything, build and publish the binaries, make source that compiles available to our users and run the available tests to detect that everything still works as expected.

Launchpad Builds

We actually went with building everything directly on Launchpad which is offered by Ubuntu (owned by Canonical.) This means if you are running Ubuntu, you do not need to worry about recompiling everything. Instead you can just install the necessary PPA and do:

sudo apt-get install snapserver snap.cgi ...

This will help you because you won't have to be a programmer to get everything to work as expected.

Because this is already fully functional (although we always add new things to the different libraries and tools) this feature is marked as complete for now.


The libraries and tools will be organized in a tree. The following is what we have at this point:

Snap! Websites -> libQtCassandra -> controlled_vars   -> moport
                                 -> Cassandra Thrift
                                 -> Thrift

All the components will be using our low level cmake configuration files (moports). This allows us to run Doxygen and use some libraries such as Qt without having to redeclare how to do so in each library. It will also take care of building 3rd party libraries such as Thrift.

Building with cmake

Building the entire software should be straight forward once all the required libraries were installed on your development system.

Everything is built with ONE top level cmake, although different libraries are available as separate entities.

The concept would be something like this (starting from the source folder):

mkdir ../BUILD/path
cd ../BUILD/path
cmake ../source/path
make tests
make run-tests
make package-source
make package-deb
make publish-source
make publish-deb

The publish-source would make the source code available to our users, some of which may be made available on 3rd party systems such as

The publish-deb would make the debian packages available to our paying customers and our own server via a Debian repository server. Note that these Debian packages will only work for Ubuntu systems.

The output of the build will be made available on this website for some time.

The build should run once a day unless nothing changed.

Syndicate content

Snap! Websites
An Open Source CMS System in C++

Contact Us Directly