Package Configuration

Most builds are straightforward, however, some builds have special requirements to preform. Because of this fact, the package configuration file was created (-pkgconf). In addition, this option saves time since without it, the build tools must search the given source directory for package locations.

The package configuration file has a simple format. Comments start with '#' and must be the first item on the line with the exception that there can be leading white space. Each section is started by the name of a package, without leading whitespace, and ended by either the start of the next section or end of file. Each line in a section is a key/value pair, with the key having some amount of whitespace before it and some amount of white space between the key and value. If the key does not have a value for the package, the key should not be used. Each section has the following format:

package_name
	srcdir value
	setupname value
	srcbootstrap value
	binbootstrap value
	buildflags value

The value for srcdir is the location of the source directory. setupname specifies that package satisfies a specific setup dependency by the given name. srcbootstrap is an action to preform on the source before creating a source package. An example of srcbootstrap is applying patches to the source before the package is created. binbootstrap is an action to preform one the source prior to building the package into binary. As an example, the package may require installing a virtual package before this package can be built. The commands to initiate the virtual package installation can be specified in binbootstrap. buildflags specifies arguments to pass to gpt-build when building sources.

globus_gsi_proxy_ssl
    srcdir /sandbox/gsi/proxy/proxy_ssl/source
globus_trusted_ca_42864e48_setup
    setupname trusted_ca_setup
    srcdir /sandbox/gsi/trusted_ca/setup
gsi_openssh
    # src pkg from ftp
    buildflags GSI_OPENSSH_GPTMACRO="--with-tcp-wrappers --with-pam"
gsi_openssh_setup
    setupname gsi_openssh_setup
    # src pkg from ftp

Variables can be used in the package configuration file's values to allow for dynamic runtime decisions. These variables are substituted given the values on the commandline. Variables can not be used in the section header (package_name) or in the keys. Variables can follow any format the author likes, the pattern of the variable is specified on the command line.

> uberBuild -listdeps globus_common -pkgconf=/sandbox/pkgconf %SRCDIR%=/sandbox

One special case variable exists, %FLAVOR%, used only in the values for binbootstrap and srcbootstrap. This variable is unique in that it is not specified from the commandline, instead, the build tools determine its value as the flavor of the current building package.

The following are examples taken from a package configuration file used in testing.

myproxy
    srcdir %SRCDIR%/myproxy
kx509
    srcdir %SRCDIR%/pkgs/kx509/src
    binbootstrap gpt-virtual-pkg -flavor=%FLAVOR% -filelist=krb5filelist  -gptfile=krb5gptpkgdata -prefix=/usr/local/krb5
kca_setup
    setupname kca_setup
    srcdir %SRCDIR%/pkgs/kca_setup
nws-client
    srcdir %SRCDIR%/nws
    srcbootstrap rm -f pkg_data_src.gpt pkg_data_src.gpt.server filelist.in.server filelist.in ;mv pkg_data_src.gpt.client pkg_data_src.gpt ; ln -s filelist.in.client filelist.in