Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Warning

The codebase for this project is under heavy and recent development. Please expect nothing from it for the time being.

Bugs

Once we are ready bugs should be filed in our bug tracker. For now, if any serious structural or build system issues are found please just let one of us know directly.

Necessary Tools

  • GNU Make (Anything reasonably recent)
  • GNU g++ (>= 4.4)
  • git (>= 1.6.0)
  • CppUnit (>=1.12)
  • Perl (Anything reasonably recent)
    • For mergedeps.pl, which automatically inserts included headers in source files into the make dependencies.
  • Python 2.6, epydoc 
  • Boost
  • pcre
  • Doxygen 1.7.1
  • protocol buffers

To get a working toolchain Debian (and probably Ubuntu):
aptitude install build-essential git-core libcppunit-dev libcppunit-doc doxygen libboost1.42-all-dev libpcre3-dev protobuf-compiler libprotobuf-dev libevent-dev

Source Code

For Contributors

For read-only repository access:

...

Don't worry about having read-only access; it really shouldn't impede you. We'd prefer to pull changes from you or have you send patches (see git-format-patch and git-send-email). This lets us ensure that the fiz repo is generally in a working state and is making forward progress.

For Core Developers

For those with fiz accounts clone from here for write access:

No Format
git clone ssh://fiz.stanford.edu/git/ramcloud.git
cd ramcloud
git submodule update --init
ln -s ../../hooks/pre-commit .git/hooks/pre-commit

Compiling

cd ramcloud; make

CentOS Issues

CentOS 5.5 has ancient default versions of g++ and Python. Fortunately there is an optional gcc4.4 "preview" package and we've installed Python 2.7 from source on the development machines. To make use of them by default, do the following:

...

No Format
echo "export LD_LIBRARY_PATH=/usr/local/lib" >> ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/lib                           [or log out and back  in]

Interesting Targets

  • make - build the RAMCloud server and client software
    • Output obj.master/client/client, obj.master/server/server
    • Replace 'master' with the git local branch name you are on if it is not 'master'
  • make tests - build and run RAMCloud unit tests (requires CppUnit)
  • make check - currently runs Google style checker against files in the src directory; subject to check as style evolves

Style Rules

We have a comprehensive style guide for how code should be formatted in RAMCloud. Please check it out or we'll probably ask you to reformat your patches.

If you use GNU EMACS this configuration can help.

Commit Style Rules

Obviously, you can do anything you want on your own clones.

...

  • No commit should include changes for multiple issues. (Each commit in the push should complete or work towards a single issue.)
  • Pushes should complete any issues they start, but individual commits within a push do not need to complete an issue.
  • All commit messages should be meaningful without looking at the diff. (By reading a commit message, you should get some idea of what was modified and what the intent was. If you can't fit this in one line, skip a line and then write more.)

Running Under Valgrind

Use make VALGRIND=yes test