Shared Public Directory Structure

From VrlWiki
Jump to navigation Jump to search

The graphics group has developed a system over many years that allows easy development of a large, shared base of software. We give the whole thing the nickname $G ("dollar gee"), named after the environment variable that represents the root of the source tree.

The source code our group has created is modified and backed up through a source control system called CVS (Concurrent Versioning System). You must have CVS set up properly in order to develop with our shared codebase.

Source control works by allowing an individual user to make structured copies of the master versions of files (this process is called "checking out" the files). The user then modifies his or her personal copies of the files, and then "checks in" the changes once they're certain that the code compiles and runs properly. The location where a user modifies a personal copy of shared code is called a "sandbox", because it is in some sense walled off from the master copy: destructive changes to the code in the sandbox do not affect the master copy, provided the user doesn't check them in.

Environment variables are used to configure the development environment. Visit this page for general instructions for Setting Environment Variables and using them. The instructions in the remainder of this section require that you know how to set up environment variables. For Windows the instructions use the native Windows (cmd.exe) command shell. Unix command examples should work on most shells.

Even if you intend to work on Windows you should set up your sandbox at Brown using Linux. The instructions will include Windows specific instructions when applicable. Explicit procedures for setting up a remote Windows system (like your laptop) are not yet in place. If you are familiar with setting up Windows development environments you should be able to adapt these procedures.


Here's a description of the directories you will find under /research/graphics/:

  • data: A directory for large datasets.
  • users: Space for students to set up sandboxes.
  • tools/linux/import: Pre-installed third party software.
  • tools/linux/install_linux: Shared copies of pre-built Linux projects.
  • tools/linux/install_WIN32: Shared copies of pre-built Windows projects.
  • tools/public/yesterday: Browse recent common and project directories.
  • tools/public/raw_notes: Unedited notes on a variety of development topics.
  • cvsroot: The CVS repository. The files in here are only for administrators to access. Students should only access the repository through CVS commands.


Within the CVS repository the primary directories are:

  • import: Downloaded kits for third party software.
  • common: Software used by multiple projects.
  • project: Project software.


A copy of the common and project directories for you to browse is updated nightly at: /research/graphics/tools/public/yesterday


See Using Public or Private Programs and Libraries for a detailed overview of the environment variables and directories.

At any given time there are several active versions of our software. Students need to be aware of what version is appropriate for their work and set up their workspace to reflect this.

  • The latest source checked into CVS
  • The version in a students project directory at the time they last checked it out or changed it.
  • The version installed in a students sandbox the last time they built and installed it.
  • The public installed copy at: /research/graphics/tools/linux/install_$GARCH
  • The copy used for cloning at: /research/graphics/tools/public/clone