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