- Notifications
You must be signed in to change notification settings - Fork2.4k
A flexible package manager that supports multiple versions, configurations, platforms, and compilers.
License
Apache-2.0, MIT licenses found
Licenses found
spack/spack
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Spack is a multi-platform package manager that builds and installsmultiple versions and configurations of software. It works on Linux,macOS, Windows, and many supercomputers. Spack is non-destructive: installing anew version of a package does not break existing installations, so manyconfigurations of the same package can coexist.
Spack offers a simple "spec" syntax that allows users to specify versionsand configuration options. Package files are written in pure Python, andspecs allow package authors to write a single script for many differentbuilds of the same package. With Spack, you can build your softwareall the ways you want to.
See theFeature Overviewfor examples and highlights.
To install spack and your first package, make sure you have Python & Git.Then:
$ git clone -c feature.manyFiles=true --depth=2 https://github.com/spack/spack.git$ cd spack/bin$ ./spack install zlib
Tip
-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.
Full documentation is available, orrunspack help
orspack help --all
.
For a cheat sheet on Spack syntax, runspack help --spec
.
We maintain ahands-on tutorial.It covers basic to advanced usage, packaging, developer features, and large HPCdeployments. You can do all of the exercises on your own laptop using aDocker container.
Feel free to use these materials to teach users at your organizationabout Spack.
Spack is an open source project. Questions, discussion, andcontributions are welcome. Contributions can be anything from newpackages to bugfixes, documentation, or even new core features.
Resources:
- Slack workspace:spackpm.slack.com.To get an invitation, visitslack.spack.io.
- Matrix space:#spack-space:matrix.org:bridged to Slack.
- Github Discussions:for Q&A and discussions. Note the pinned discussions for announcements.
- X:@spackpm. Be sure to
@mention
us! - Mailing list:groups.google.com/d/forum/spack:only for announcements. Please use other venues for discussions.
Contributing to Spack is relatively easy. Just send us apull request.When you send your request, makedevelop
the destination branch on theSpack repository.
Your PR must pass Spack's unit tests and documentation tests, and must bePEP 8 compliant. We enforcethese guidelines with our CI process. To run these tests locally, and forhelpful tips on git, see ourContribution Guide.
Spack'sdevelop
branch has the latest contributions. Pull requestsshould targetdevelop
, and users who want the latest package versions,features, etc. can usedevelop
.
For multi-user site deployments or other use cases that need very stablesoftware installations, we recommend using Spack'sstable releases.
Each Spack release series also has a corresponding branch, e.g.releases/v0.14
has0.14.x
versions of Spack, andreleases/v0.13
has0.13.x
versions. We backport important bug fixes to these branches butwe do not advance the package versions or make other changes that wouldchange the way Spack concretizes dependencies within a release branch.So, you can base your Spack deployment on a release branch andgit pull
to get fixes, without the package churn that comes withdevelop
.
The latest release is always available with thereleases/latest
tag.
See thedocs on releasesfor more details.
Please note that Spack has aCode of Conduct. By participating inthe Spack community, you agree to abide by its rules.
Many thanks go to Spack'scontributors.
Spack was created by Todd Gamblin,tgamblin@llnl.gov.
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.InSupercomputing 2015 (SC’15), Austin, Texas, November 15-20 2015. LLNL-CONF-669890.
On GitHub, you can copy this citation in APA or BibTeX format via the "Cite this repository"button. Or, see the comments inCITATION.cff
for the raw BibTeX.
Spack is distributed under the terms of both the MIT license and theApache License (Version 2.0). Users may choose either license, at theiroption.
All new contributions must be made under both the MIT and Apache-2.0licenses.
SeeLICENSE-MIT,LICENSE-APACHE,COPYRIGHT, andNOTICE for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
LLNL-CODE-811652
About
A flexible package manager that supports multiple versions, configurations, platforms, and compilers.