Getting Started Guide

In this document you will get a short guide how to get started using and hacking on the Fawkes software.

Requirements

Fawkes needs a few other programming libraries that have to be installed on the development system. It is our declared goal to minimize this set of libraries, but for some parts it is needed. See FawkesDependencies for tools and libraries that you have to have installed.

Fedora Core is the only officially supported development platform. As of this writing Fedora Core 5 is the most recent version and the base platform for all development. Although we will try to ensure that it will work on older version as of this moment this cannot be guaranteed.

There are some extra dependencies that are not supported by FC5. The most important is make. Fawkes needs at least version 3.81 since we use the secondary expansion run.

Configuring Subversion

Basically you could checkout Fawkes and start hacking immediately. But there are a few settings that you should make in order to have a better Subversion experience and to have a unified development environment for the whole team. Unfortunately Subversion cannot push configs to the clients up to now (see  subversion bug 1974), so you have to do it.

Add the following lines to your ~/.subversion/config file:

[helpers]
### Set editor to the command used to invoke your text editor.
###   This will override the environment variables that Subversion
###   examines by default to find this information ($EDITOR,
###   et al).
# use what ever you like, for example vi or emacs
editor-cmd = vi

[miscellany]
### Set enable-auto-props to 'yes' to enable automatic properties
### for 'svn add' and 'svn import', it defaults to 'no'.
### Automatic properties are defined in the section 'auto-props'.
enable-auto-props = yes

[auto-props]
*.c = svn:keywords=Id Author Date Revision
*.cpp = svn:keywords=Id Author Date Revision
*.h = svn:keywords=Id Author Date Revision
Makefile = svn:keywords=Id Author Date Revision
*.sh = svn:keywords=Id Author Date Revision
*.mk = svn:keywords=Id Author Date Revision
*.txt = svn:keywords=Id Author Date Revision
*.xml = svn:keywords=Id Author Date Revision
*.lua = svn:keywords=Id Author Date Revision
*.pl = svn:keywords=Id Author Date Revision

The editor command can be set to match your taste. The auto properties are of special interest. They determine that special tokens in the source code will be replaced with the appropriate data. In CVS this was done by default, in Subversion this is controlled via the svn:keywords property. It contains a list of keywords that will be replaced (so you enable the substitution). All unknown keywords are ignored. The given set replaces the most common things that we use in Subversion source code.

Checking out Fawkes

Not let's get our feet wet and checkout subversion. Issue the following command to checkout a working copy of the code.

svn co https://lechuck.informatik.rwth-aachen.de:2342/svn/fawkes/trunk fawkes

This will checkout the trunk of fawkes to a directory named fawkes. Only checkout the trunk, never ever forget to add trunk or bad things will happen! If the SCPM login name is different from your Unix username use --username SCPMuser between co and the URL to tell svn your SCPM username.

To checkout the Fawkes Nao Branch use the following command:

svn co https://lechuck.informatik.rwth-aachen.de:2342/svn/fawkes/branches/nao nao_fawkes

Note that if you come from the ZaDeAt project you can checkout the nao branch only. You cannot and you do not need to checkout trunk (this is used for our mid-size team which also uses Fawkes).

Very important note about checkouts

The credentials are saved by default in the .subversion directory. If you checkout a copy for someone else, for example for a lab user you have to turn this off! To do this add the --no-auth-cache argument between co and the URL!

Compiling Fawkes

Go to the fawkes (or nao_fawkes) directory and simply type make. All the software you need will be built. See FawkesStructure? to know what's where.

Hacking on Fawkes

Although the basic framework is rather simple there is still a lot you should know when you start hacking. Currently HOWTOs are missing, but it is a good idea to read everything which is tagged with [tagged:Intro Intro].