IceCube Software Projects

This web page is designed to give a new user an introduction to building and developing of existing IceCube software projects.

Organization of the IceCube Software:

The entire IceCube software suite is designed in C++ and java. This guide assumes that the user is familiar with the basics of the object-oriented JAVA programming.

Directory Structure:

All of the IceCube code is organized in the following general directory structure:

 ~/DAQ/BFD_workspace
        |
        |-- project_one/
        |       |
        |       |-- build.xml
        |       |-- project.xml
        |       |-- src/project_one/ *.h
        |       |-- resources/project_one/ *.cxx
        |       \-- resources/
        |
        \-- project_two/
                |
                |-- build.xml
                |-- project.xml
                |-- public/project_two/ *.h
                |-- private/project_two/ *.cxx
                \-- resources/
 

Project_one represents a Java based project, which DAQ will work predominately in. Project_two is the format used for C++ projects. This format is used by other projects in Icecube.
All existing or new projects the user is developing or creating need to be in the initialized workspace directory.

Downloading an Existing Project:

Downloading an existing project involves a simple BFD checkout command. To be able to do this, the user must already have an account on glacier.lbl.gov.
There are two simple steps to do this:

Set the CVSROOT environment variable to point to the correct IceCube CVS depository.

> setenv CVSROOT :ext:glacier.lbl.gov:/home/icecube/cvsroot
or
> export CVSROOT=:ext:glacier.lbl.gov:/home/icecube/cvsroot

Launch a BFD checkout command, which will download the main DAQ meta-project. This is a java based project from the IceCube CVS depository:

> cd ~/DAQ/BFD_workspace
> bfd co -rV01-00-01 DAQ-TEMPLATE

A subdirectory DAQ-TEMPLATE/ will be created in the workspace, and all the child projects will be created with the files of the project will be organized in the directory structure above described. If you already have one or more of the projects checked out, they will simply be updated to the required version.

Take a look at the files for one of the child projects:

> cd icebucket
> ls
build.xml  CVS/  project.xml  resources/  scripts/ src/    

Building a Project:

The IceCube software environment (i.e. BFD) uses the ant utility (which calls an ordinary java command to build and compile all codes. The ant utility is installed automatically with BFD. Before using the ant utility supplied with BFD, make sure to explicitely uninstall any existing ant utility that may have come with the installation of your operating system.

All build commands are executed from an IceCube workspace:

> cd ~/DAQ/BFD_workspace

Every time a user starts a new terminal, i.e. starts a new environment, they need to source the setup.(c)sh script, which sets up all the appropriate environment variables, and puts the ant executable in the users $PATH:

> source setup.csh

To build (i.e. compile) a particular software project (e.g. wendoline), run the following command:

> ant -DPROJECT=icebucket

or to build ALL projects in the current workspace, run:

> ant lib.all

There will be a lot of output of the build command, and it shold end with:

BUILD SUCCESSFUL
Total time: 40 seconds (or some other time)

The results of the build are placed inside the lib/ subdirectory, which is created the first time the user runs an ant command in the workspace. This directory is platform specific, and it will have a different name for each platform the user is using.

The executable of the project (if it has any) is placed in the bin/ subdirectory, and can be run directly from the workspace, because it is in the $PATH. All the other build files are stored in lib/ or build/ subdirectories.

You've done it!! You just downloaded an existing IceCube DAQ software project, and built it.

Back to Main Page