Build process

What do I need?

The build script is written using ant, the de-facto standard java build tool. You will need ant correctly configured with the junit extensions. Consult the ant manual for the installation. If you use an IDE, most of them do support ant and junit.

NetBeans 3.6 : We recommend the use of NetBeans 3.6 (or higher) as the IDE of choice. Brief Installation instructions follows in the next sub-section. To use unitTests inside NetBeans 3.6, you have to install the JUnit module (available through autoupdate), and you might also need to get the junit.jar and install it in the lib/ext directory of you NetBeans installation. Things might be different for more recent versions.

Installation notes

If you are installing NetBeans under Windows OS:

Some tests might use some UNIX commands, such as csh or chmod. To allow the tests on windows you could install cygwin and be sure such commands are in your path. If you do not have those commands, the tests will fail.

Linux installation:

Download netbeans-3_6-linux.bin package or later. Do not forget to
    % chmod +x netbeans-3_6-linux.bin

and execute the file. The installation GUI Wizard will ask you were you would like to install the package. The default for this version is /opt/NetBeans3.6 but I chose to install it as /usr/local/NetBeans3.6. For NetBeans to properly install on a Linux machine, you will need to have JSDK pre-installed. The installer will locate an available component version if exists and will prompt you for the location of your JSDK if it cannot find it. For example, /usr/java/j2sdk1.4.2 may be the version you have installed. As an alternative, Sun MicroSystem Inc. offers j2se-1.4.2  package with NetBeans 3.6 packaged.

To run NetBeans IDE, you will have to locate and execute a file named runide.sh. This file would be in $INSTALLDIR/bin/ and, following the installation directory example in a path like /usr/local/NetBeans3.6/bin/runide.sh. For convenience, you can also do the following
    % cd /usr/local/bin
    % ln -s /usr/local/NetBeans3.6/bin/runide.sh ./netbeans
    % rehash

and have the command netbeans start the IDE. This is not mandatory.

Post-Installation

As mentioned above, you will need to install some optional components and module. Assuming you are using NetBeans as suggested, the installation there is straight forward: start the Update Center tool and select "Netbeans Update Center" and install Infrastructure - Filesystem Quick Mount. The following are not mandatory but convenient if you are  planning to develop module for the SUMS project (or any other project): "NetBeans Update Center Beta"

Remember that you will need to restart NetBeans after installing new modules and components.

Setting up a project in NetBeans

To maintain SUMS as part of a project standing by itself, do the following (only once). Go in "Project", "Project Manager", "New Project" and give the name Scheduler. When this is done, 'FileSystems' appears. Right click on it, select "Mount" "Version Control" directory. Select Profile: CVS. A configuration panel will open. Those are the required fields (we assume here that on any operating system, you would have created a work/ directory starting from your startup point).

Working Directory: $HOME/work/
Relative Mount Point:
CVS server type: pserver
CVS server name: cvs.bnl.gov
User Name: scheduler
Repository Path: /data01/CVS

When done, click finish AND right click on the CVS mount file system. Chose CVS, Checkout, replace the default value for the magic word (a dot) by "scheduler". You are now "almost" ready to go. Verify your installation by clicking on the build script: if the compilation pass works, you are set to go. If not, try to Mount as new a file system the tree starting from scheduler/src.

The build process

The compilation will be done directly in all the src directories. After that, the junit test suite will be run. The build will create 2 extra directory: build and dist.

The build directory is used to prepare jar content and the jar themselves. For every jar, a subdirectory will be created in the build directory, the content will be copied there, and finally will be jared. At time of writing, the scheduler.jar file will contain all the sources and binaries, and will also contain the MySQL JDBC driver.

In the same way, in the dist directory the distributions will be prepared. First, a subdirectory in the dist directory will be created for each distribution, the content will be copied there, and finally the distribution will be zipped.

There are also some deployment targets, which are specific to STAR. With more groups contributing to the project, the STAR specific tasks could be moved to a different ant script.

The JUnit test suite

The build process includes a unit test suite, which is run at every compilation. If all tests are not passed, then the build process will not proceed, and a report will be written in the main scheduler directory.

The unit test suite is intended to keep testing the internals of the scheduler, to check that all the components are behaving as they should. In some cases, mock objects will be needed to support the tests. These mock objects must be located with the tests.

The test suite will not be included in the distribution.

The New Scheduler development cycle

The development cycle of the scheduler has been changed 6/11/04. These changes where made to better reflect a uniform stander of STAR software development and to make the source code of the scheduler easier to manage. The change also helps avoid replication of the same files in multiple places, and thereby reduces the number of places a change has to be made. A pdf document outlining the changes can be found here.


Levente Hajdu - Jérôme Lauret - page was last modified