2023-12-23 00:09:54 +08:00
|
|
|
|
<div align="left">
|
2023-12-23 03:47:48 +08:00
|
|
|
|
|
2023-12-23 00:09:54 +08:00
|
|
|
|
<h2>
|
2023-12-23 03:47:48 +08:00
|
|
|
|
<picture>
|
|
|
|
|
<source media="(prefers-color-scheme: dark)" srcset="https://cdn.rawgit.com/spack/spack/develop/share/spack/logo/spack-logo-white-text.svg" width="250">
|
|
|
|
|
<source media="(prefers-color-scheme: light)" srcset="https://cdn.rawgit.com/spack/spack/develop/share/spack/logo/spack-logo-text.svg" width="250">
|
|
|
|
|
<img alt="Spack" src="https://cdn.rawgit.com/spack/spack/develop/share/spack/logo/spack-logo-text.svg" width="250">
|
|
|
|
|
</picture>
|
|
|
|
|
|
2023-12-23 00:09:54 +08:00
|
|
|
|
<br>
|
|
|
|
|
<br clear="all">
|
2023-12-23 03:47:48 +08:00
|
|
|
|
|
2023-12-23 00:09:54 +08:00
|
|
|
|
<a href="https://github.com/spack/spack/actions/workflows/ci.yml"><img src="https://github.com/spack/spack/workflows/ci/badge.svg" alt="CI Status"></a>
|
|
|
|
|
<a href="https://github.com/spack/spack/actions/workflows/bootstrapping.yml"><img src="https://github.com/spack/spack/actions/workflows/bootstrap.yml/badge.svg" alt="Bootstrap Status"></a>
|
|
|
|
|
<a href="https://github.com/spack/spack/actions/workflows/build-containers.yml"><img src="https://github.com/spack/spack/actions/workflows/build-containers.yml/badge.svg" alt="Containers Status"></a>
|
|
|
|
|
<a href="https://spack.readthedocs.io"><img src="https://readthedocs.org/projects/spack/badge/?version=latest" alt="Documentation Status"></a>
|
|
|
|
|
<a href="https://codecov.io/gh/spack/spack"><img src="https://codecov.io/gh/spack/spack/branch/develop/graph/badge.svg" alt="Code coverage"/></a>
|
|
|
|
|
<a href="https://slack.spack.io"><img src="https://slack.spack.io/badge.svg" alt="Slack"/></a>
|
|
|
|
|
<a href="https://matrix.to/#/#spack-space:matrix.org"><img src="https://img.shields.io/matrix/spack-space%3Amatrix.org?label=matrix" alt="Matrix"/></a>
|
2023-12-23 03:47:48 +08:00
|
|
|
|
|
2023-12-23 00:09:54 +08:00
|
|
|
|
</h2>
|
2014-01-13 12:10:08 +08:00
|
|
|
|
|
2023-12-23 00:09:54 +08:00
|
|
|
|
**[Getting Started] • [Config] • [Community] • [Contributing] • [Packaging Guide]**
|
|
|
|
|
|
|
|
|
|
[Getting Started]: https://spack.readthedocs.io/en/latest/getting_started.html
|
|
|
|
|
[Config]: https://spack.readthedocs.io/en/latest/configuration.html
|
|
|
|
|
[Community]: #community
|
|
|
|
|
[Contributing]: https://spack.readthedocs.io/en/latest/contribution_guide.html
|
|
|
|
|
[Packaging Guide]: https://spack.readthedocs.io/en/latest/packaging_guide.html
|
|
|
|
|
|
|
|
|
|
</div>
|
2015-11-30 13:40:23 +08:00
|
|
|
|
|
2017-06-18 01:37:33 +08:00
|
|
|
|
Spack is a multi-platform package manager that builds and installs
|
|
|
|
|
multiple versions and configurations of software. It works on Linux,
|
2024-05-23 09:12:12 +08:00
|
|
|
|
macOS, Windows, and many supercomputers. Spack is non-destructive: installing a
|
2017-06-18 01:37:33 +08:00
|
|
|
|
new version of a package does not break existing installations, so many
|
|
|
|
|
configurations of the same package can coexist.
|
|
|
|
|
|
|
|
|
|
Spack offers a simple "spec" syntax that allows users to specify versions
|
|
|
|
|
and configuration options. Package files are written in pure Python, and
|
|
|
|
|
specs allow package authors to write a single script for many different
|
|
|
|
|
builds of the same package. With Spack, you can build your software
|
|
|
|
|
*all* the ways you want to.
|
2014-01-13 12:10:08 +08:00
|
|
|
|
|
|
|
|
|
See the
|
2020-10-10 00:24:09 +08:00
|
|
|
|
[Feature Overview](https://spack.readthedocs.io/en/latest/features.html)
|
2014-01-13 12:10:08 +08:00
|
|
|
|
for examples and highlights.
|
|
|
|
|
|
2025-04-16 05:08:39 +08:00
|
|
|
|
Installation
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
To install spack, first make sure you have Python & Git.
|
2017-06-18 01:37:33 +08:00
|
|
|
|
Then:
|
2014-01-13 12:10:08 +08:00
|
|
|
|
|
2025-04-16 05:08:39 +08:00
|
|
|
|
```bash
|
|
|
|
|
git clone -c feature.manyFiles=true --depth=2 https://github.com/spack/spack.git
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
<details>
|
|
|
|
|
<summary>What are <code>manyFiles=true</code> and <code>--depth=2</code>?</summary>
|
|
|
|
|
<br>
|
2014-01-13 12:10:08 +08:00
|
|
|
|
|
2024-09-28 00:09:19 +08:00
|
|
|
|
> `-c feature.manyFiles=true` improves git's performance on repositories with 1,000+ files.
|
|
|
|
|
>
|
|
|
|
|
> `--depth=2` prunes the git history to reduce the size of the Spack installation.
|
|
|
|
|
|
2025-04-16 05:08:39 +08:00
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# For bash/zsh/sh
|
|
|
|
|
. spack/share/spack/setup-env.sh
|
|
|
|
|
|
|
|
|
|
# For tcsh/csh
|
|
|
|
|
source spack/share/spack/setup-env.csh
|
|
|
|
|
|
|
|
|
|
# For fish
|
|
|
|
|
. spack/share/spack/setup-env.fish
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Now you're ready to install a package!
|
|
|
|
|
spack install zlib-ng
|
|
|
|
|
```
|
|
|
|
|
|
2014-01-13 12:10:08 +08:00
|
|
|
|
Documentation
|
|
|
|
|
----------------
|
|
|
|
|
|
2020-10-10 00:24:09 +08:00
|
|
|
|
[**Full documentation**](https://spack.readthedocs.io/) is available, or
|
2019-07-01 14:01:57 +08:00
|
|
|
|
run `spack help` or `spack help --all`.
|
2015-11-29 11:25:53 +08:00
|
|
|
|
|
2021-07-13 20:04:41 +08:00
|
|
|
|
For a cheat sheet on Spack syntax, run `spack help --spec`.
|
|
|
|
|
|
2019-07-01 14:01:57 +08:00
|
|
|
|
Tutorial
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
We maintain a
|
2024-11-21 23:46:46 +08:00
|
|
|
|
[**hands-on tutorial**](https://spack-tutorial.readthedocs.io/).
|
2019-07-01 14:01:57 +08:00
|
|
|
|
It covers basic to advanced usage, packaging, developer features, and large HPC
|
|
|
|
|
deployments. You can do all of the exercises on your own laptop using a
|
|
|
|
|
Docker container.
|
2016-11-15 09:35:21 +08:00
|
|
|
|
|
2019-07-01 14:01:57 +08:00
|
|
|
|
Feel free to use these materials to teach users at your organization
|
|
|
|
|
about Spack.
|
2015-11-29 11:25:53 +08:00
|
|
|
|
|
2019-07-01 14:01:57 +08:00
|
|
|
|
Community
|
2015-03-25 00:28:47 +08:00
|
|
|
|
------------------------
|
|
|
|
|
|
2015-03-25 00:58:32 +08:00
|
|
|
|
Spack is an open source project. Questions, discussion, and
|
|
|
|
|
contributions are welcome. Contributions can be anything from new
|
2019-07-01 14:01:57 +08:00
|
|
|
|
packages to bugfixes, documentation, or even new core features.
|
2017-06-19 16:00:40 +08:00
|
|
|
|
|
2019-07-01 14:14:51 +08:00
|
|
|
|
Resources:
|
2017-06-19 16:00:40 +08:00
|
|
|
|
|
2019-07-01 14:01:57 +08:00
|
|
|
|
* **Slack workspace**: [spackpm.slack.com](https://spackpm.slack.com).
|
2021-05-26 16:07:57 +08:00
|
|
|
|
To get an invitation, visit [slack.spack.io](https://slack.spack.io).
|
2023-10-16 06:48:05 +08:00
|
|
|
|
* **Matrix space**: [#spack-space:matrix.org](https://matrix.to/#/#spack-space:matrix.org):
|
|
|
|
|
[bridged](https://github.com/matrix-org/matrix-appservice-slack#matrix-appservice-slack) to Slack.
|
|
|
|
|
* [**Github Discussions**](https://github.com/spack/spack/discussions):
|
2023-12-08 03:22:14 +08:00
|
|
|
|
for Q&A and discussions. Note the pinned discussions for announcements.
|
2024-04-18 23:52:54 +08:00
|
|
|
|
* **X**: [@spackpm](https://twitter.com/spackpm). Be sure to
|
2019-07-01 14:01:57 +08:00
|
|
|
|
`@mention` us!
|
2023-12-08 03:22:14 +08:00
|
|
|
|
* **Mailing list**: [groups.google.com/d/forum/spack](https://groups.google.com/d/forum/spack):
|
|
|
|
|
only for announcements. Please use other venues for discussions.
|
2015-03-25 00:58:32 +08:00
|
|
|
|
|
2019-07-01 14:01:57 +08:00
|
|
|
|
Contributing
|
|
|
|
|
------------------------
|
2016-08-25 17:46:12 +08:00
|
|
|
|
Contributing to Spack is relatively easy. Just send us a
|
2016-08-11 03:54:42 +08:00
|
|
|
|
[pull request](https://help.github.com/articles/using-pull-requests/).
|
2016-03-31 04:44:08 +08:00
|
|
|
|
When you send your request, make ``develop`` the destination branch on the
|
2017-11-05 08:08:04 +08:00
|
|
|
|
[Spack repository](https://github.com/spack/spack).
|
2015-03-25 00:58:32 +08:00
|
|
|
|
|
2016-10-15 00:16:13 +08:00
|
|
|
|
Your PR must pass Spack's unit tests and documentation tests, and must be
|
2017-06-18 01:37:33 +08:00
|
|
|
|
[PEP 8](https://www.python.org/dev/peps/pep-0008/) compliant. We enforce
|
2021-05-26 16:07:57 +08:00
|
|
|
|
these guidelines with our CI process. To run these tests locally, and for
|
2020-08-01 06:01:12 +08:00
|
|
|
|
helpful tips on git, see our
|
2020-10-10 00:24:09 +08:00
|
|
|
|
[Contribution Guide](https://spack.readthedocs.io/en/latest/contribution_guide.html).
|
2016-08-11 03:54:42 +08:00
|
|
|
|
|
2020-07-04 16:50:55 +08:00
|
|
|
|
Spack's `develop` branch has the latest contributions. Pull requests
|
|
|
|
|
should target `develop`, and users who want the latest package versions,
|
|
|
|
|
features, etc. can use `develop`.
|
|
|
|
|
|
|
|
|
|
Releases
|
|
|
|
|
--------
|
|
|
|
|
|
|
|
|
|
For multi-user site deployments or other use cases that need very stable
|
|
|
|
|
software installations, we recommend using Spack's
|
|
|
|
|
[stable releases](https://github.com/spack/spack/releases).
|
|
|
|
|
|
|
|
|
|
Each Spack release series also has a corresponding branch, e.g.
|
|
|
|
|
`releases/v0.14` has `0.14.x` versions of Spack, and `releases/v0.13` has
|
|
|
|
|
`0.13.x` versions. We backport important bug fixes to these branches but
|
|
|
|
|
we do not advance the package versions or make other changes that would
|
|
|
|
|
change the way Spack concretizes dependencies within a release branch.
|
|
|
|
|
So, you can base your Spack deployment on a release branch and `git pull`
|
|
|
|
|
to get fixes, without the package churn that comes with `develop`.
|
|
|
|
|
|
2020-07-08 02:44:15 +08:00
|
|
|
|
The latest release is always available with the `releases/latest` tag.
|
|
|
|
|
|
2020-07-04 16:50:55 +08:00
|
|
|
|
See the [docs on releases](https://spack.readthedocs.io/en/latest/developer_guide.html#releases)
|
|
|
|
|
for more details.
|
2015-03-25 00:58:32 +08:00
|
|
|
|
|
2019-07-01 14:01:57 +08:00
|
|
|
|
Code of Conduct
|
|
|
|
|
------------------------
|
|
|
|
|
|
|
|
|
|
Please note that Spack has a
|
|
|
|
|
[**Code of Conduct**](.github/CODE_OF_CONDUCT.md). By participating in
|
|
|
|
|
the Spack community, you agree to abide by its rules.
|
|
|
|
|
|
2014-01-13 12:10:08 +08:00
|
|
|
|
Authors
|
|
|
|
|
----------------
|
2017-11-05 08:08:04 +08:00
|
|
|
|
Many thanks go to Spack's [contributors](https://github.com/spack/spack/graphs/contributors).
|
2015-10-18 08:41:17 +08:00
|
|
|
|
|
2017-06-18 01:37:33 +08:00
|
|
|
|
Spack was created by Todd Gamblin, tgamblin@llnl.gov.
|
2014-08-01 23:33:00 +08:00
|
|
|
|
|
2015-11-29 11:25:53 +08:00
|
|
|
|
### Citing Spack
|
|
|
|
|
|
|
|
|
|
If you are referencing Spack in a publication, please cite the following paper:
|
|
|
|
|
|
|
|
|
|
* Todd Gamblin, Matthew P. LeGendre, Michael R. Collette, Gregory L. Lee,
|
|
|
|
|
Adam Moody, Bronis R. de Supinski, and W. Scott Futral.
|
2020-10-10 00:24:09 +08:00
|
|
|
|
[**The Spack Package Manager: Bringing Order to HPC Software Chaos**](https://www.computer.org/csdl/proceedings/sc/2015/3723/00/2807623.pdf).
|
2015-11-29 11:25:53 +08:00
|
|
|
|
In *Supercomputing 2015 (SC’15)*, Austin, Texas, November 15-20 2015. LLNL-CONF-669890.
|
|
|
|
|
|
2021-11-30 16:37:50 +08:00
|
|
|
|
On GitHub, you can copy this citation in APA or BibTeX format via the "Cite this repository"
|
|
|
|
|
button. Or, see the comments in `CITATION.cff` for the raw BibTeX.
|
|
|
|
|
|
2018-10-08 15:26:31 +08:00
|
|
|
|
License
|
2014-08-01 23:33:00 +08:00
|
|
|
|
----------------
|
2018-10-08 15:26:31 +08:00
|
|
|
|
|
|
|
|
|
Spack is distributed under the terms of both the MIT license and the
|
|
|
|
|
Apache License (Version 2.0). Users may choose either license, at their
|
|
|
|
|
option.
|
|
|
|
|
|
|
|
|
|
All new contributions must be made under both the MIT and Apache-2.0
|
|
|
|
|
licenses.
|
|
|
|
|
|
|
|
|
|
See [LICENSE-MIT](https://github.com/spack/spack/blob/develop/LICENSE-MIT),
|
|
|
|
|
[LICENSE-APACHE](https://github.com/spack/spack/blob/develop/LICENSE-APACHE),
|
|
|
|
|
[COPYRIGHT](https://github.com/spack/spack/blob/develop/COPYRIGHT), and
|
|
|
|
|
[NOTICE](https://github.com/spack/spack/blob/develop/NOTICE) for details.
|
2014-08-01 23:33:00 +08:00
|
|
|
|
|
2019-01-01 15:40:32 +08:00
|
|
|
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
2017-06-18 01:37:33 +08:00
|
|
|
|
|
2020-06-16 08:10:49 +08:00
|
|
|
|
LLNL-CODE-811652
|