summaryrefslogtreecommitdiff
path: root/lib/spack/docs/build_systems
diff options
context:
space:
mode:
authorTamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>2023-09-07 19:45:51 -0700
committerGitHub <noreply@github.com>2023-09-07 19:45:51 -0700
commit007f02e06acf22433f3110882ad5d1ec6660ab55 (patch)
tree9603b9a40451186f3d7ef7e1e794e794e39f984d /lib/spack/docs/build_systems
parent8ec16571361415767252836e4ce3026ce244315e (diff)
downloadspack-007f02e06acf22433f3110882ad5d1ec6660ab55.tar.gz
spack-007f02e06acf22433f3110882ad5d1ec6660ab55.tar.bz2
spack-007f02e06acf22433f3110882ad5d1ec6660ab55.tar.xz
spack-007f02e06acf22433f3110882ad5d1ec6660ab55.zip
Docs/Packaging guide: Add BundlePackage (#39691)
* Docs/Packaging guide: Add BundlePackage * Adjusted version ordering note to reflect convention.
Diffstat (limited to 'lib/spack/docs/build_systems')
-rw-r--r--lib/spack/docs/build_systems/bundlepackage.rst29
1 files changed, 26 insertions, 3 deletions
diff --git a/lib/spack/docs/build_systems/bundlepackage.rst b/lib/spack/docs/build_systems/bundlepackage.rst
index ca2be81240..323a13d472 100644
--- a/lib/spack/docs/build_systems/bundlepackage.rst
+++ b/lib/spack/docs/build_systems/bundlepackage.rst
@@ -9,9 +9,32 @@
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 bundle dependencies.
+``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. :ref:`Variants <variants>` ensure that common build options
+are consistent across the packages supporting them. :ref:`Conflicts
+and requirements <packaging_conflicts>` 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:
+
+.. code-block:: python
+
+ require("platform=linux", msg="MyBundlePackage only builds on linux")
+
+Spack has a number of built-in bundle packages, such as:
+
+* `AmdAocl <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/amd-aocl/package.py>`_
+* `EcpProxyApps <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/ecp-proxy-apps/package.py>`_
+* `Libc <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/libc/package.py>`_
+* `Xsdk <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/xsdk/package.py>`_
+
+where ``Xsdk`` also inherits from ``CudaPackage`` and ``RocmPackage`` and
+``Libc`` is a virtual bundle package for the C standard library.
^^^^^^^^