| 
									
										
										
										
											2018-01-17 09:06:14 -08:00
										 |  |  |  | # <img src="https://cdn.rawgit.com/spack/spack/develop/share/spack/logo/spack-logo.svg" width="64" valign="middle" alt="Spack"/> Spack
 | 
					
						
							| 
									
										
										
										
											2014-01-13 05:10:08 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-16 16:16:31 +01:00
										 |  |  |  | [](https://github.com/spack/spack/actions) | 
					
						
							| 
									
										
										
										
											2021-08-09 21:45:01 +02:00
										 |  |  |  | [](https://github.com/spack/spack/actions/workflows/bootstrap.yml) | 
					
						
							| 
									
										
										
										
											2017-11-04 17:08:04 -07:00
										 |  |  |  | [](https://codecov.io/gh/spack/spack) | 
					
						
							| 
									
										
										
										
											2021-09-30 23:34:47 +02:00
										 |  |  |  | [](https://github.com/spack/spack/actions/workflows/build-containers.yml) | 
					
						
							| 
									
										
										
										
											2017-05-06 14:24:45 -05:00
										 |  |  |  | [](https://spack.readthedocs.io) | 
					
						
							| 
									
										
										
										
											2022-07-24 18:19:35 -07:00
										 |  |  |  | [](https://github.com/psf/black) | 
					
						
							| 
									
										
										
										
											2021-05-26 01:07:57 -07:00
										 |  |  |  | [](https://slack.spack.io) | 
					
						
							| 
									
										
										
										
											2015-11-29 21:40:23 -08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-17 19:37:33 +02:00
										 |  |  |  | Spack is a multi-platform package manager that builds and installs | 
					
						
							|  |  |  |  | multiple versions and configurations of software. It works on Linux, | 
					
						
							|  |  |  |  | macOS, and many supercomputers. Spack is non-destructive: installing a | 
					
						
							|  |  |  |  | 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 05:10:08 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | See the | 
					
						
							| 
									
										
										
										
											2020-10-10 00:24:09 +08:00
										 |  |  |  | [Feature Overview](https://spack.readthedocs.io/en/latest/features.html) | 
					
						
							| 
									
										
										
										
											2014-01-13 05:10:08 +01:00
										 |  |  |  | for examples and highlights. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-17 19:37:33 +02:00
										 |  |  |  | To install spack and your first package, make sure you have Python. | 
					
						
							|  |  |  |  | Then: | 
					
						
							| 
									
										
										
										
											2014-01-13 05:10:08 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-16 17:41:10 +02:00
										 |  |  |  |     $ git clone -c feature.manyFiles=true https://github.com/spack/spack.git | 
					
						
							| 
									
										
										
										
											2014-01-13 05:10:08 +01:00
										 |  |  |  |     $ cd spack/bin | 
					
						
							| 
									
										
										
										
											2019-06-30 23:01:57 -07:00
										 |  |  |  |     $ ./spack install zlib | 
					
						
							| 
									
										
										
										
											2014-01-13 05:10:08 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | Documentation | 
					
						
							|  |  |  |  | ---------------- | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-10 00:24:09 +08:00
										 |  |  |  | [**Full documentation**](https://spack.readthedocs.io/) is available, or | 
					
						
							| 
									
										
										
										
											2019-06-30 23:01:57 -07:00
										 |  |  |  | run `spack help` or `spack help --all`. | 
					
						
							| 
									
										
										
										
											2015-11-28 19:25:53 -08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-13 05:04:41 -07:00
										 |  |  |  | For a cheat sheet on Spack syntax, run `spack help --spec`. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-30 23:01:57 -07:00
										 |  |  |  | Tutorial | 
					
						
							|  |  |  |  | ---------------- | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | We maintain a | 
					
						
							| 
									
										
										
										
											2020-10-10 00:24:09 +08:00
										 |  |  |  | [**hands-on tutorial**](https://spack.readthedocs.io/en/latest/tutorial.html). | 
					
						
							| 
									
										
										
										
											2019-06-30 23:01:57 -07: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-14 18:35:21 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-30 23:01:57 -07:00
										 |  |  |  | Feel free to use these materials to teach users at your organization | 
					
						
							|  |  |  |  | about Spack. | 
					
						
							| 
									
										
										
										
											2015-11-28 19:25:53 -08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-30 23:01:57 -07:00
										 |  |  |  | Community | 
					
						
							| 
									
										
										
										
											2015-03-24 09:28:47 -07:00
										 |  |  |  | ------------------------ | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-24 09:58:32 -07:00
										 |  |  |  | Spack is an open source project.  Questions, discussion, and | 
					
						
							|  |  |  |  | contributions are welcome. Contributions can be anything from new | 
					
						
							| 
									
										
										
										
											2019-06-30 23:01:57 -07:00
										 |  |  |  | packages to bugfixes, documentation, or even new core features. | 
					
						
							| 
									
										
										
										
											2017-06-19 01:00:40 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-30 23:14:51 -07:00
										 |  |  |  | Resources: | 
					
						
							| 
									
										
										
										
											2017-06-19 01:00:40 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-30 23:01:57 -07:00
										 |  |  |  | * **Slack workspace**: [spackpm.slack.com](https://spackpm.slack.com). | 
					
						
							| 
									
										
										
										
											2021-05-26 01:07:57 -07:00
										 |  |  |  |   To get an invitation, visit [slack.spack.io](https://slack.spack.io). | 
					
						
							| 
									
										
										
										
											2022-10-17 17:38:25 +02:00
										 |  |  |  | * [**Github Discussions**](https://github.com/spack/spack/discussions): not just for discussions, also Q&A. | 
					
						
							| 
									
										
										
										
											2019-06-30 23:14:51 -07:00
										 |  |  |  | * **Mailing list**: [groups.google.com/d/forum/spack](https://groups.google.com/d/forum/spack) | 
					
						
							| 
									
										
										
										
											2019-06-30 23:01:57 -07:00
										 |  |  |  | * **Twitter**: [@spackpm](https://twitter.com/spackpm). Be sure to | 
					
						
							|  |  |  |  |   `@mention` us! | 
					
						
							| 
									
										
										
										
											2015-03-24 09:58:32 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-30 23:01:57 -07:00
										 |  |  |  | Contributing | 
					
						
							|  |  |  |  | ------------------------ | 
					
						
							| 
									
										
										
										
											2016-08-25 11:46:12 +02:00
										 |  |  |  | Contributing to Spack is relatively easy.  Just send us a | 
					
						
							| 
									
										
										
										
											2016-08-10 12:54:42 -07:00
										 |  |  |  | [pull request](https://help.github.com/articles/using-pull-requests/). | 
					
						
							| 
									
										
										
										
											2016-03-30 16:44:08 -04:00
										 |  |  |  | When you send your request, make ``develop`` the destination branch on the | 
					
						
							| 
									
										
										
										
											2017-11-04 17:08:04 -07:00
										 |  |  |  | [Spack repository](https://github.com/spack/spack). | 
					
						
							| 
									
										
										
										
											2015-03-24 09:58:32 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-14 11:16:13 -05:00
										 |  |  |  | Your PR must pass Spack's unit tests and documentation tests, and must be | 
					
						
							| 
									
										
										
										
											2017-06-17 19:37:33 +02:00
										 |  |  |  | [PEP 8](https://www.python.org/dev/peps/pep-0008/) compliant.  We enforce | 
					
						
							| 
									
										
										
										
											2021-05-26 01:07:57 -07:00
										 |  |  |  | these guidelines with our CI process. To run these tests locally, and for | 
					
						
							| 
									
										
										
										
											2020-08-01 00:01:12 +02: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-10 12:54:42 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-04 01:50:55 -07: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-07 11:44:15 -07:00
										 |  |  |  | The latest release is always available with the `releases/latest` tag. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-04 01:50:55 -07:00
										 |  |  |  | See the [docs on releases](https://spack.readthedocs.io/en/latest/developer_guide.html#releases) | 
					
						
							|  |  |  |  | for more details. | 
					
						
							| 
									
										
										
										
											2015-03-24 09:58:32 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-30 23:01:57 -07: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 05:10:08 +01:00
										 |  |  |  | Authors | 
					
						
							|  |  |  |  | ---------------- | 
					
						
							| 
									
										
										
										
											2017-11-04 17:08:04 -07:00
										 |  |  |  | Many thanks go to Spack's [contributors](https://github.com/spack/spack/graphs/contributors). | 
					
						
							| 
									
										
										
										
											2015-10-17 17:41:17 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-17 19:37:33 +02:00
										 |  |  |  | Spack was created by Todd Gamblin, tgamblin@llnl.gov. | 
					
						
							| 
									
										
										
										
											2014-08-01 08:33:00 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-28 19: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-28 19:25:53 -08:00
										 |  |  |  |    In *Supercomputing 2015 (SC’15)*, Austin, Texas, November 15-20 2015. LLNL-CONF-669890. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-30 02:37:50 -06: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 00:26:31 -07:00
										 |  |  |  | License | 
					
						
							| 
									
										
										
										
											2014-08-01 08:33:00 -07:00
										 |  |  |  | ---------------- | 
					
						
							| 
									
										
										
										
											2018-10-08 00:26:31 -07: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 08:33:00 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-31 23:40:32 -08:00
										 |  |  |  | SPDX-License-Identifier: (Apache-2.0 OR MIT) | 
					
						
							| 
									
										
										
										
											2017-06-17 19:37:33 +02:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-15 17:10:49 -07:00
										 |  |  |  | LLNL-CODE-811652 |