GT4 Packaging

This document covers:

Checking out packaging

Set your CVSROOT to cvs.globus.org:/home/globdev/CVS/globus-packages.

cvs co packaging.

Creating a release

Creating a Source Installer

First, checkout packaging from the branch you're using to release.

Bump version numbers as necessary. If you need to bump the version number, edit installer.sh. Also bump the version numbers in fait_accompli/binary.configure.in and fait_accompli/installer.configure.in. If nobody has done so yet, make sure the globus-version command in globus_common has the correct version also.

Then run the installer.sh script to create the all source installer:

fait_accompli/installer.sh

If the contributions haven't changed from the previous release, you may get them from the FTP site under the contrib/ subdirectory for the previous release.

When the release of GTx.y.z is done (no more release candidates), tag the copy of CVS used to create the installers:

cd source-trees
for f in *; do
   cd $f
   cvs tag globus_x_y_z
   cd ..
done

Creating a Binary Installer

Create a source installer as above. Make sure to save a .tar.gz and .tar.bz2 of it before you build the binaries.

Configure with:

./configure --prefix=$HOME/globus-x-y-z --enable-drs \ 
   --enable-wsgram-condor --enable-wsgram-pbs --enable-wsgram-lsf \
   --with-iodbc=/path/to/iodbc

Build the software:

make

Create the binary installer:

fait_accompli/bundle-binaries $HOME/globus-x-y-z

The binary installer will be in the tmp/ subdirectory of packaging. Rename it as appropriate for the platform by listing the processor type (ia32, ia64, sun4u, x86_64, etc.) and operating system (redhat9, solaris9, sles8, etc.)

Finally, add the same contribs as were in the source installer

Running make-packages.pl

make-packages.pl supports --help and --man options for explaining options.

The flow of control in m-p.pl is as follows:

  1. Cleanup old build directories
  2. Checkout CVS source trees
  3. Build prerequisite tools (like autotools and globus_core)
  4. Create GPT packages from CVS subdirectories
  5. Create GPT bundles from packages
  6. Install bundles
  7. Create binary packages
  8. Create binary bundles

By default, m-p.pl will stop after creating bundles. If you specify --install=/directory/name, it will install the bundles. If you specify --binary, it will also create binaries.

The CVS checkouts will create one subdirectory of source-trees/ per CVS archive. The packaging step will create the source-output and package-output subdirectories. source-output is used as an intermediate step; package-output contains the GPT packages themselves. The bundling step will create bundle-output.

You can also turn off the earlier steps if you want to skip them. --no-updates will inhibit CVS checkouts/updates. If you specify --skippackage, it will not make GPT packages. With --skipbundle, bundles will not be created.

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

The autotools prerequisite is installed under packaging/source-trees/autotools/autotools/bin. The GPT prerequisite is installed under packaging/gpt-*. Currently it is gpt-3.0.1, though that may be upgraded 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.

CVS options

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

To specify tags, use --t2= and --t3=. t2 will specify tags to use for GT2 and autotools, while t3 specifies tags for GT3 and cbindings.

Specifying a subset of code to build

Often 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 m-p.pl.

The CVS archives are defined in the %cvs_archives hash at the top of m-p.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.

A few examples:

Adding a new package to make-packages.pl

m-p.pl stores package and bundle information in the etc/ subdirectory. To add a new package to the builds, you can edit the package-list file in the corresponding subdirectory of etc/. To add the package to a bundle, you must also list the new package in the bundles file under the appropriate entries.

The format for package-list is:
GPT package nameCVS subdir Packaging typePatch file
globus_cyrus-saslgsi/sasl/patch-n-build pnbcyrus-sasl-1.5.27.tar.gz

The package names must be the same as the resulting GPT package name. If the build type is not "pnb", then Patch file should not be specified. The default build type is listed in the build-default file in the appropriate etc/ subdirectory.

There is no requirement that the packages be listed in dependency order, either in the package-list or in the bundles.

Creating update packages

First, create the update package. Make sure you update the version strings in the package metadata first. Any update package must have a later version number than the previous release of that package. Update the major version number if you break backwards compatibility.

Note: If this is a security advisory, please also see the policy at Security Vulnerability Handling.

The command will be something like:
make-packages.pl -n --packages=grim

Next, put it on cvs.globus.org and email infrastructure@globus.org to have it moved to the FTP site:
scp package-output/grim-0.4-src.tar.gz cvs.globus.org:

Then update the advisories.txt page:
export CVSROOT=cvs.globus.org:/home/globdev/CVS/alliance-web
cvs co alliance/toolkit/advisories.txt
[edit]
cvs commit alliance/toolkit/advisories.txt

Finally, verify that the advisories webpage lists your update, and it is downloadable.