The code base for this project is under heavy and recent development. Please expect nothing from it for the time being; there is not yet a version that we consider "stable".
Bugs should be filed in our bug tracker. Questions and comments can be sent to the developer mailing list: ramcloud-dev.
To get a working toolchain on Debian (and probably Ubuntu), this used to be sufficient:
aptitude install build-essential git-core doxygen libboost1.42-all-dev libpcre3-dev protobuf-compiler libprotobuf-dev
For read-only repository access:
git clone git://fiz.stanford.edu/git/ramcloud.git cd ramcloud git submodule update --init ln -s ../../hooks/pre-commit .git/hooks/pre-commit |
(Notes: the git submodule update
retrieves additional repos needed to build RAMCloud, such as gtest
; the ln -s
command arranges for various consistency checks to run during commits, such as ensuring the absence of carriage returns)
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). This lets us ensure that the fiz repo is generally in a working state and is making forward progress.
For those with fiz accounts clone from here for write access:
git clone ssh://fiz.stanford.edu/git/ramcloud.git cd ramcloud git submodule update --init ln -s ../../hooks/pre-commit .git/hooks/pre-commit |
cd ramcloud; make
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:
mkdir -p ~/bin cd ~/bin ln -s /usr/local/bin/python27 python ln -s /usr/bin/gcc44 gcc ln -s /usr/bin/gcc44 cc ln -s /usr/bin/g++44 g++ ln -s /usr/bin/g++44 c++ |
Your default .profile will automatically suck ~/bin into your path if it exists, thus overriding the old versions of gcc and python using the above symlinks. Now you should be able to compile ramcloud without any special parameters.
Next, update your LD_LIBRARY_PATH to include /usr/local/lib. If you do not do so, you'll get cryptic errors claiming libramcloud.so cannot be found. It can, but some of its dependencies in /usr/local/lib cannot. Do the following:
echo "export LD_LIBRARY_PATH=/usr/local/lib" >> ~/.bashrc export LD_LIBRARY_PATH=/usr/local/lib [or log out and back in] |
make
- build the RAMCloud server and client softwareobj.master/client/client, obj.master/server/server
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 evolvesWe have a comprehensive style guide for how code should be formatted in RAMCloud. Actually, we don't quite follow what that style guide says, but we do keep a consistent style.
If you use GNU EMACS this configuration can help.
Obviously, you can do anything you want on your own clones.
You can also do anything you want to your own branches on fiz, including rewriting their histories in any way. (If you're working with someone else on a branch on fiz, you might want to use stricter rules.)
An issue below roughly means a logically independent change to the code base.
For any pushes into the master branch on fiz:
Use make VALGRIND=yes test