The file newfoo-2.0.gpt-bundle.xml from the previous example is a typical bundle definition file. It is in an XML document that follows this DTD. The bundle definition file is not only a product of gpt-bundle but can also be an input. The file can be used as a template for a group of bundles. With this use, the data in the file is overriden by gpt-bundle command line options.
Lets take a closer look at the definition file.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE GPTBundleData SYSTEM "gpt_bundle.dtd"> <GPTBundleData Name="newfoo" > <BundleInfo > <Description >EMPTY</Description> <ContactInfo ContactEmail="EMPTY" ContactName="EMPTY" /> <BundleDocs BundleDocsDesc="EMPTY" BundleDocsURL="EMPTY" /> </BundleInfo> <BundleReleaseInfo > <BundleStability Release="EMPTY" /> <BundleVersion Age="0" Major="1" Minor="0" /> <VersionLabel >2.0</VersionLabel> <TypeOfBundle ContentsType="gpt" /> </BundleReleaseInfo>
This section is the top of the definition file and contains data that pertains to the bundle as a whole. For this particular file, several of the elements contain "EMPTY" which indicates that they need to be edited. As mentioned previously, several of these elements can also be set from the gpt-bundle command line. The following table describes these elements.
Table 6.1. Bundle Definition Elements
Element or Attribute | Description | gpt-bundle Command Line Switch |
---|---|---|
GPTBundleData Name | Name of the bundle | -bn="NAME" |
ContactInfo ContactEmail | Email address for questions about the bundle | None |
ContactInfo ContactName | Name of the bundle owner | None |
BundleDocs BundleDocsDesc | Explanation on how to get documentation on the bundle | None |
BundleDocs BundleDocsURL | URL to online bundle documentation | None |
BundleStability Release | Stability of the software released with this bundle. Usually one of "Experimental", "Alpha", "Beta", or "Production" | -bs="STABILITY" |
BundleVersion Age, Major, and Minor | GPT internal version number of the bundle. Age is not currently used | -bv="MAJOR.MINOR" |
VersionLabel | The user friendly version number of the bundle. Can be any CDATA string. | -bl="LABEL" |
The element TypeOfBundle is generated by GPT.
The next section is a list of packages:
<PackageList > <IncludedPackages > <Package PackageFlavor="gcc32" PackageName="globus_common" PackageType="pgm" PackageVersion="3.5" /> <Package PackageFlavor="gcc32" PackageName="globus_common" PackageType="rtl" PackageVersion="3.5" /> <Package PackageFlavor="noflavor" PackageName="globus_common_setup" PackageType="pgm" PackageVersion="2.1" /> <Package PackageFlavor="gcc32" PackageName="globus_gsi_callback" PackageType="rtl" PackageVersion="0.3" /> <Package PackageFlavor="gcc32" PackageName="globus_gsi_cert_utils" PackageType="pgm" PackageVersion="0.4" />
Each package is listed with its build flavor, package name, and GPT version. The version is of the form MAJOR.MINOR. The version listed in the definition is overidden by the version of the package actually found in the installation when the bundle definition file is regenerated by gpt-bundle. Packages can also be added to this section by listing them on the command line.
<ExcludedPackages > </ExcludedPackages>
This section has the same format as IncludedPackages but lists packages that should be excluded. The default behavior for gpt-bundle is to bundle the entire dependency tree of an included package. Listing packages in the ExcludedPackages section allows the dependency to be pruned. Packages can also be added to this section by using the gpt-bundle command line switch -exclude='PACKAGE_NAME'.