Globus: Accessing the Globus Alliance's Code via CVS

This page contains instructions for experienced developers who want to checkout code directly from CVS that has not yet been released.

For example, a developer has been told "Bug X has been fixed in CVS and will show up in the 5.0.5 release" and the developer wants to try it in CVS to make sure it works as expected before the 5.0.5 release ships.

DISCLAIMER

Globus Toolkit® development releases are available by anonymous CVS. Development releases contain code developed by many sources that has not yet undergone the testing and validation process for a stable release of the Globus Toolkit. Our goal is for the development release to always be in a state that will compile cleanly, but transient problems may occasionally arise. A description of how the Globus Alliance's core development team uses the CVS repository (including details on branches and concurrent development procedures) is available.

As an experienced developer, you should already be subscribed to gt-dev@globus.org, where porting and development issues are discussed. If not, subscribe by visiting http://dev.globus.org/wiki/Mailing_Lists. To minimize confusion for the majority of subscribers there who do not use CVS, we ask that you preface any comments to gt-dev@globus.org by stating that you use code from CVS.

Note that there is no implied obligation by the Globus Alliance to provide support or resolve problems that users might encounter with development code. Use of the development release is subject to terms of the Globus Toolkit Public License. Users wishing to contribute bug patches or discuss features should do so through the developers-discuss mailing list.

Accessing Remote CVS for GT 5.2.x

1

Set your CVSROOT to:

:pserver:anonymous@cvs.globus.org:/home/globdev/CVS/globus-packages
2

Check out the packaging directory:

cvs co -r <tag> packaging

Where <tag> is one of the following :

  • Use globus_5_2_branch to get latest 5.2-based code
  • Use globus_5_2_x to get the exact 5.2.x code (for example, use globus_5_2_0 to get the exact code for GT release 5.2.0)

For example:

cvs co -r globus_5_2_branch packaging
3

If you are checking out globus_5_2_branch, the easiest thing to do next is to use a script which generates releases. To do this, run:

fait_accompli/installer.sh

This script creates an installer subdirectory which will have a configure script that will create a Makefile. Read the INSTALL file for installation details. It simply involves running:

configure
make
make install
4

Alternatively, you may use the make-packages.pl script directly (the above release script simply runs a series of make-packages.pl commands). It features both --help and --man options.

See the Flow for make-packages and CVS Options for more information about using this script.

Accessing Remote CVS for GT 5.0

1

Set your CVSROOT to:

:pserver:anonymous@cvs.globus.org:/home/globdev/CVS/globus-packages
2

Check out the packaging directory:

cvs co -r <tag> packaging

Where <tag> is one of the following :

  • Use globus_5_0_branch to get latest 5.0-based code
  • Use globus_5_0_x to get the exact 5.0.x code (for example, use globus_5_0_0 to get the exact code for GT release 5.0.0)

For example:

cvs co -r globus_5_0_branch packaging
3

If you are checking out globus_5_0_branch, the easiest thing to do next is to use a script which generates releases. To do this, run:

fait_accompli/installer.sh

This script creates an installer subdirectory which will have a configure script that will create a Makefile. Read the INSTALL file for installation details. It simply involves running:

configure
make
make install
4

Alternatively, you may use the make-packages.pl script directly (the above release script simply runs a series of make-packages.pl commands). It features both --help and --man options.

See the Flow for make-packages and CVS Options for more information about using this script.

Flow for make-packages

The flow of control in make-packages.pl is as follows:

Stage Description
1 Cleanup old build directories.
2 Checkout CVS source trees. This step creates one subdirectory of source-trees/ per CVS archive.
3

Build prerequisite tools (like autotools and globus_core).

The autotools prerequisite is installed under packaging/source-trees/autotools/autotools/bin.

The Grid Packaging Tool (GPT) prerequisite is installed under packaging/gpt-*. The current GPT version for GT version 5.2.0 and greater is currently gpt-3.6.5, although this may change in the future.

If make-packages determines that the prerequisites are available, it will skip rebuilding them. If you would like to force a rebuild, you could either delete source-trees/autotools or gpt-*. This may be necessary, for instance, if you hit control C during the build of autotools, and this winds up fooling the auto-detection of make-packages.
4

Create GPT packages from CVS subdirectories. This step creates the source-output and package-output subdirectories.

  • source-output is used as an intermediate step;
  • package-output contains the GPT packages themselves.
5 Create GPT bundles from packages. This step will create bundle-output.
6 By default, make-packages.pl stops after creating bundles. If you specify --install=/directory/name, it installs the bundles.

CVS options for make-packages

If you decide to use the make-packages.pl script directly, the following are various options. The --help and --man options are also available.

Checking out anonymously

If you specify --anonymous, the CVS checkout will be anonymous, otherwise it will use ssh checkouts.

Specifying tags

To specify tags, use the following options:

--t2=
Specifies tags to use for GT2 and autotools.
--t3=
Specifies tags for GT3 and cbindings (that are not included in GT2).
--t4=
This will specify tags to use for GT4 (that were not included in GT2 or GT3).

Turning off steps

You can also turn off the some of the steps of the make-packages.pl flow if you want to skip them:

--no-updates -n
Inhibits CVS checkouts/updates
--skippackage
Does not make GPT packages
--skipbundle
Does not create bundles.

The design intent is for you to be able to start and stop the tool where you want. For example, you can create source bundles on one machine, then ship them to another for building. On the second machine, you would use --skippackage and --skipbundle, but then specify --install.

Specifying a subset of code to build

Many times you just want to build what you're working on. The --packages=, --bundles=, and --trees options are designed to restrict the working set of make-packages.pl. Keep the following in mind when using these options:

  • The CVS archives are defined in the %cvs_archives hash at the top of make-packages.pl.
  • There is a subdirectory of etc/ per archive.
  • The package-list file contains a list of packages and their CVS subdirectory.
  • The bundles file contains a list of bundles and their constituent packages.

Examples

The following are a few examples of using options with the make-packages.pl script:

Example A

make-packages.pl --anonymous --bundles=globus-data-management-server   --install=/tmp/inst

These options checkout CVS anonymously, then make the globus-data-management-server bundle and install it into /tmp/inst.

Example B

make-packages.pl --t4=globus_x_y_z --anonymous --skippackage --skipbundle

These options checkout CVS anonymously using the globus_x_y_z tag and do not make any packages or bundles. The CVS checkouts will be under source-trees.

Example C

make-packages.pl --anonymous --packages=globus_xio

These options checkout CVS anonymously, then create the globus_xio package. It will be stored in package-output/.

Example D

make-packages.pl -n --bundles=globus-gsi

These options do not update CVS but do make the globus-gsi bundle. You must already have CVS checkouts in source-trees to use this option.