2018-01-17 17:06:14 +00: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 04:10:08 +00:00
|
|
|
|
|
2017-11-05 00:08:04 +00:00
|
|
|
|
[![Build Status](https://travis-ci.org/spack/spack.svg?branch=develop)](https://travis-ci.org/spack/spack)
|
|
|
|
|
[![codecov](https://codecov.io/gh/spack/spack/branch/develop/graph/badge.svg)](https://codecov.io/gh/spack/spack)
|
2017-05-06 19:24:45 +00:00
|
|
|
|
[![Read the Docs](https://readthedocs.org/projects/spack/badge/?version=latest)](https://spack.readthedocs.io)
|
2017-06-19 08:00:40 +00:00
|
|
|
|
[![Slack](https://spackpm.herokuapp.com/badge.svg)](https://spackpm.herokuapp.com)
|
2015-11-30 05:40:23 +00:00
|
|
|
|
|
2017-06-17 17:37:33 +00: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 04:10:08 +00:00
|
|
|
|
|
|
|
|
|
See the
|
2016-09-06 21:52:44 +00:00
|
|
|
|
[Feature Overview](http://spack.readthedocs.io/en/latest/features.html)
|
2014-01-13 04:10:08 +00:00
|
|
|
|
for examples and highlights.
|
|
|
|
|
|
2017-06-17 17:37:33 +00:00
|
|
|
|
To install spack and your first package, make sure you have Python.
|
|
|
|
|
Then:
|
2014-01-13 04:10:08 +00:00
|
|
|
|
|
2017-11-05 00:08:04 +00:00
|
|
|
|
$ git clone https://github.com/spack/spack.git
|
2014-01-13 04:10:08 +00:00
|
|
|
|
$ cd spack/bin
|
2019-07-01 06:01:57 +00:00
|
|
|
|
$ ./spack install zlib
|
2014-01-13 04:10:08 +00:00
|
|
|
|
|
|
|
|
|
Documentation
|
|
|
|
|
----------------
|
|
|
|
|
|
2019-07-01 06:01:57 +00:00
|
|
|
|
[**Full documentation**](http://spack.readthedocs.io/) is available, or
|
|
|
|
|
run `spack help` or `spack help --all`.
|
2015-11-29 03:25:53 +00:00
|
|
|
|
|
2019-07-01 06:01:57 +00:00
|
|
|
|
Tutorial
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
We maintain a
|
|
|
|
|
[**hands-on tutorial**](http://spack.readthedocs.io/en/latest/tutorial.html).
|
|
|
|
|
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 01:35:21 +00:00
|
|
|
|
|
2019-07-01 06:01:57 +00:00
|
|
|
|
Feel free to use these materials to teach users at your organization
|
|
|
|
|
about Spack.
|
2015-11-29 03:25:53 +00:00
|
|
|
|
|
2019-07-01 06:01:57 +00:00
|
|
|
|
Community
|
2015-03-24 16:28:47 +00:00
|
|
|
|
------------------------
|
|
|
|
|
|
2015-03-24 16:58:32 +00:00
|
|
|
|
Spack is an open source project. Questions, discussion, and
|
|
|
|
|
contributions are welcome. Contributions can be anything from new
|
2019-07-01 06:01:57 +00:00
|
|
|
|
packages to bugfixes, documentation, or even new core features.
|
2017-06-19 08:00:40 +00:00
|
|
|
|
|
2019-07-01 06:01:57 +00:00
|
|
|
|
**Resources:**
|
2017-06-19 08:00:40 +00:00
|
|
|
|
|
2019-07-01 06:01:57 +00:00
|
|
|
|
* **Slack workspace**: [spackpm.slack.com](https://spackpm.slack.com).
|
|
|
|
|
Open to anyone; visit
|
|
|
|
|
[spackpm.herokuapp.com](https://spackpm.herokuapp.com) to have an
|
|
|
|
|
invitation emailed to you automatically.
|
|
|
|
|
* **Mailing list**: https://groups.google.com/d/forum/spack
|
|
|
|
|
* **Twitter**: [@spackpm](https://twitter.com/spackpm). Be sure to
|
|
|
|
|
`@mention` us!
|
2015-03-24 16:58:32 +00:00
|
|
|
|
|
2019-07-01 06:01:57 +00:00
|
|
|
|
Contributing
|
|
|
|
|
------------------------
|
2016-08-25 09:46:12 +00:00
|
|
|
|
Contributing to Spack is relatively easy. Just send us a
|
2016-08-10 19:54:42 +00:00
|
|
|
|
[pull request](https://help.github.com/articles/using-pull-requests/).
|
2016-03-30 20:44:08 +00:00
|
|
|
|
When you send your request, make ``develop`` the destination branch on the
|
2017-11-05 00:08:04 +00:00
|
|
|
|
[Spack repository](https://github.com/spack/spack).
|
2015-03-24 16:58:32 +00:00
|
|
|
|
|
2016-10-14 16:16:13 +00:00
|
|
|
|
Your PR must pass Spack's unit tests and documentation tests, and must be
|
2017-06-17 17:37:33 +00:00
|
|
|
|
[PEP 8](https://www.python.org/dev/peps/pep-0008/) compliant. We enforce
|
2017-11-05 00:08:04 +00:00
|
|
|
|
these guidelines with [Travis CI](https://travis-ci.org/spack/spack). To
|
2017-06-17 17:37:33 +00:00
|
|
|
|
run these tests locally, and for helpful tips on git, see our
|
2016-10-14 16:16:13 +00:00
|
|
|
|
[Contribution Guide](http://spack.readthedocs.io/en/latest/contribution_guide.html).
|
2016-08-10 19:54:42 +00:00
|
|
|
|
|
2017-06-17 17:37:33 +00:00
|
|
|
|
Spack uses a rough approximation of the
|
|
|
|
|
[Git Flow](http://nvie.com/posts/a-successful-git-branching-model/)
|
2015-03-24 16:58:32 +00:00
|
|
|
|
branching model. The ``develop`` branch contains the latest
|
2017-06-17 17:37:33 +00:00
|
|
|
|
contributions, and ``master`` is always tagged and points to the latest
|
|
|
|
|
stable release.
|
2015-03-24 16:58:32 +00:00
|
|
|
|
|
2019-07-01 06:01:57 +00: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 04:10:08 +00:00
|
|
|
|
Authors
|
|
|
|
|
----------------
|
2017-11-05 00:08:04 +00:00
|
|
|
|
Many thanks go to Spack's [contributors](https://github.com/spack/spack/graphs/contributors).
|
2015-10-18 00:41:17 +00:00
|
|
|
|
|
2017-06-17 17:37:33 +00:00
|
|
|
|
Spack was created by Todd Gamblin, tgamblin@llnl.gov.
|
2014-08-01 15:33:00 +00:00
|
|
|
|
|
2015-11-29 03:25:53 +00: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.
|
|
|
|
|
[**The Spack Package Manager: Bringing Order to HPC Software Chaos**](http://www.computer.org/csdl/proceedings/sc/2015/3723/00/2807623.pdf).
|
|
|
|
|
In *Supercomputing 2015 (SC’15)*, Austin, Texas, November 15-20 2015. LLNL-CONF-669890.
|
|
|
|
|
|
2018-10-08 07:26:31 +00:00
|
|
|
|
License
|
2014-08-01 15:33:00 +00:00
|
|
|
|
----------------
|
2018-10-08 07:26:31 +00: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 15:33:00 +00:00
|
|
|
|
|
2019-01-01 07:40:32 +00:00
|
|
|
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
2017-06-17 17:37:33 +00:00
|
|
|
|
|
2019-01-01 07:40:32 +00:00
|
|
|
|
LLNL-CODE-647188
|