Bundle
BundlePackage represents a set of packages that are expected to work
well together, such as a collection of commonly used software libraries.
The associated software is specified as dependencies.
If it makes sense, variants, conflicts, and requirements can be added to the package. Variants ensure that common build options are consistent across the packages supporting them. Conflicts and requirements prevent attempts to build with known bugs or limitations.
For example, if MyBundlePackage is known to only build on linux,
it could use the require directive as follows:
require("platform=linux", msg="MyBundlePackage only builds on linux")
Spack has a number of built-in bundle packages, such as:
where Xsdk also inherits from CudaPackage and RocmPackage and
Libc is a virtual bundle package for the C standard library.
Creation
Be sure to specify the bundle template if you are using spack create
to generate a package from the template. For example, use the following
command to create a bundle package whose class name will be Mybundle:
$ spack create --template bundle --name mybundle
Phases
The BundlePackage base class does not provide any phases by default
since the bundle does not represent a build system.
URL
The url property does not have meaning since there is no package-specific
code to fetch.
Version
At least one version must be specified in order for the package to
build.