Cactus Repositories - HOWTO

Gabrielle Allen

This HOWTO is written to explain the organisation of the CVS repositories which are maintained by the Cactus Team at Please help us to keep this documentation complete and up-to-date by sending complaints, suggestions and errata to the Cactus Team at


The Cactus Team maintains a number of CVS repositories on the CVS server at We have multiple repositories to help organise the different categories of thorns, and because we choose to work with different repositories for the stable and development version of the distributed code.


The Cactus repositories all use logins and passwords, which allows us to add checkout and/or commit priviledges on a user basis for different modules. If a module is publically available, it can always be checked out by the anonymous user:

   username: cvs_anon
   password: anon

If you think you need a username and password to allow you access to checkout or commit to private modules in the Cactus repositories, apply to

In addition you should have the author of the module (if not a member of the Cactus team), email us to confirm their permission.


The repositories maintained at are

  • /cactus The current stable (last released) version of the Cactus span, and released arrangements (including the Computational Toolkit, and the Einstein Toolkit). This repository also holds archived versions of all past releases of the flesh and thorns.
  • /cactusdevcvs The development version of the Cactus span, the Cactus Computational Toolkit and the Cactus Einstein Toolkit
  • /arrangements Private thorn arrangements, hosted on our CVS server
  • /packages External packages which are needed for some thorns (e.g. FlexIO, Jpeg). Note that we are currently updating our procedures for dealing with external packages to provide the possibility for easily linking to packages compiled outside of Cactus.

Using a Repository

Instructions for using CVS can be found by looking at the man pages for cvs, or by obtaining the CVS documentation from

Only an initial guide is provided here

  1. Login to repository

       cvs -d :pserver:<username><repository name> login
  2. List publically available modules

       cvs -d :pserver:<username><repository name> checkout -s
  3. Checkout a module (into current directory)

       cvs -d :pserver:<username><repository name> \
            checkout <module name>
  4. Update modules in current directory recursively (-d means get new directories)

       cvs update -d

The Development Repository

To manage working with both a stable and development version of the Cactus Code and Toolkits, we use two repositories (an alternative method would have been to use branches in CVS, but for various reasons we decided against this for now). The stable version is kept in the /cactus repository, and this is frozen, that is no changes are allowed to be committed. The development version contains bug fixes, and ongoing development work. While we try to keep everything working, occasionally there will be problems with thorns not compiling on all architectures, or interfaces changing. We suggest that you work with the stable version if possible, and that if you need to use the development version that you use everything from the development version. That is, we advise against mixing development and stable versions of the Flesh or Thorns.

IMPORTANT: As is obvious from the name, the development version is the version of Cactus which is being actively developed. This means that it could be changing from day to day. If you are using the development version you should be prepared to monitor CVS messages detailing changes to flesh and thorns, and update your installation as necessary.

Your Thorns

We would encourage thorn authors to make their thorns available from their own CVS repositories. Our checkout scripts contain mechanisms for obtaining thorns from a general CVS repository. If you would like information on setting up a CVS repository on a local machine, check the CVS documentation which you can find at

If you need more help, contact, we can’t promise that we will have time to help, but we can give you some pointers, and we have some documentation for creating CVS repositories.