spack

A flexible package manager that supports multiple versions, configurations, platforms, and compilers.

https://gitlab.com/spack/spack

Science Score: 18.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.4%) to scientific vocabulary

Keywords

HPC cray gov linux macos package-manager python scientific-computing spack supercomputer
Last synced: 6 months ago · JSON representation ·

Repository

A flexible package manager that supports multiple versions, configurations, platforms, and compilers.

Basic Info
  • Host: gitlab.com
  • Owner: spack
  • License: apache-2.0
  • Default Branch: develop
Statistics
  • Stars: 6
  • Forks: 3
  • Open Issues:
  • Releases: 0
Topics
HPC cray gov linux macos package-manager python scientific-computing spack supercomputer
Created over 7 years ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation Security

README.md

Spack

CI Status Bootstrap Status Containers Status Documentation Status Code coverage Slack Matrix

**[Getting Started]   •   [Config]   •   [Community]   •   [Contributing]   •   [Packaging Guide]   •   [Packages]**

Spack is a multi-platform package manager that builds and installs multiple versions and configurations of software. It works on Linux, macOS, Windows, 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.

See the Feature Overview for examples and highlights.

Installation

To install spack, first make sure you have Python & Git. Then:

bash git clone --depth=2 https://github.com/spack/spack.git

```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 ```

Documentation

Full documentation is available, or run spack help or spack help --all.

For a cheat sheet on Spack syntax, run spack help --spec.

Tutorial

We maintain a hands-on tutorial. 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.

Feel free to use these materials to teach users at your organization about Spack.

Community

Spack is an open source project. Questions, discussion, and contributions are welcome. Contributions can be anything from new packages to bugfixes, documentation, or even new core features.

Resources:

Contributing

Contributing to Spack is relatively easy. Just send us a pull request.

Most contributors will want to contribute to Spack's community package recipes. To do that, you should visit the spack-packages repository.

If you want to contribute to Spack itself, you can submit a pull request to the spack repository (this repository).

Your PR must:

  1. Make develop the destination branch;
  2. Pass Spack's unit tests, documentation tests, and package build tests;
  3. Be PEP 8 compliant;
  4. Sign off all commits with git commit --signoff. Signoff says that you agree to the Developer Certificate of Origin. Note that this is different from signing commits, which you may also do, but it's not required.

We enforce these guidelines with our continuous integration (CI) process. To run tests locally, and for helpful tips on git, see our Contribution Guide.

Releases

For multi-user site deployments or other use cases that need very stable software installations, we recommend using Spack's stable 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.

The latest release is always available with the releases/latest tag.

See the docs on releases for more details.

Code of Conduct

Please note that Spack has a Code of Conduct. By participating in the Spack community, you agree to abide by its rules.

Authors

Many thanks go to Spack's contributors.

Spack was created by Todd Gamblin, tgamblin@llnl.gov.

Citing Spack

If you are referencing Spack in a publication, please cite the following paper:

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.

License

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, LICENSE-APACHE, COPYRIGHT, and NOTICE for details.

SPDX-License-Identifier: (Apache-2.0 OR MIT)

LLNL-CODE-811652

Citation (CITATION.cff)

# If you are referencing Spack in a publication, please cite the SC'15 paper
# described here.
#
# Here's the raw citation:
#
#   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.
#   In Supercomputing 2015 (SC’15), Austin, Texas, November 15-20 2015. LLNL-CONF-669890.
#
# Or, in BibTeX:
#
# @inproceedings{Gamblin_The_Spack_Package_2015,
#     address = {Austin, Texas, USA},
#     author = {Gamblin, Todd and LeGendre, Matthew and
#               Collette, Michael R. and Lee, Gregory L. and
#               Moody, Adam and de Supinski, Bronis R. and Futral, Scott},
#     doi = {10.1145/2807591.2807623},
#     month = {November 15-20},
#     note = {LLNL-CONF-669890},
#     series = {Supercomputing 2015 (SC’15)},
#     title = {{The Spack Package Manager: Bringing Order to HPC Software Chaos}},
#     url = {https://github.com/spack/spack},
#     year = {2015}
# }
#
# And here's the CITATION.cff format:
#
cff-version: 1.2.0
type: software
message: "If you are referencing Spack in a publication, please cite the paper below."
title: "The Spack Package Manager: Bringing Order to HPC Software Chaos"
abstract: >-
  Large HPC centers spend considerable time supporting software for thousands of users, but the
  complexity of HPC software is quickly outpacing the capabilities of existing software management
  tools. Scientific applications require specific versions of compilers, MPI, and other dependency
  libraries, so using a single, standard software stack is infeasible. However, managing many
  configurations is difficult because the configuration space is combinatorial in size. We
  introduce Spack, a tool used at Lawrence Livermore National Laboratory to manage this complexity.
  Spack provides a novel, re- cursive specification syntax to invoke parametric builds of packages
  and dependencies. It allows any number of builds to coexist on the same system, and it ensures
  that installed packages can find their dependencies, regardless of the environment. We show
  through real-world use cases that Spack supports diverse and demanding applications, bringing
  order to HPC software chaos.
preferred-citation:
  title: "The Spack Package Manager: Bringing Order to HPC Software Chaos"
  type: conference-paper
  url: "https://tgamblin.github.io/pubs/spack-sc15.pdf"
  authors:
    - family-names: "Gamblin"
      given-names: "Todd"
    - family-names: "LeGendre"
      given-names: "Matthew"
    - family-names: "Collette"
      given-names: "Michael R."
    - family-names: "Lee"
      given-names: "Gregory L."
    - family-names: "Moody"
      given-names: "Adam"
    - family-names: "de Supinski"
      given-names: "Bronis R."
    - family-names: "Futral"
      given-names: "Scott"
  conference:
    name: "Supercomputing 2015 (SC’15)"
    city: "Austin"
    region: "Texas"
    country: "US"
    date-start: 2015-11-15
    date-end: 2015-11-20
  month: 11
  year: 2015
  identifiers:
    - description: "The concept DOI of the work."
      type: doi
      value: 10.1145/2807591.2807623
    - description: "The DOE Document Release Number of the work"
      type: other
      value: "LLNL-CONF-669890"
authors:
  - family-names: "Gamblin"
    given-names: "Todd"
  - family-names: "LeGendre"
    given-names: "Matthew"
  - family-names: "Collette"
    given-names: "Michael R."
  - family-names: "Lee"
    given-names: "Gregory L."
  - family-names: "Moody"
    given-names: "Adam"
  - family-names: "de Supinski"
    given-names: "Bronis R."
  - family-names: "Futral"
    given-names: "Scott"

Dependencies

lib/spack/docs/requirements.txt pypi
  • docutils <0.17
  • pygments <2.13
  • python-levenshtein *
  • sphinx >=3.4,
  • sphinx-rtd-theme *
  • sphinxcontrib-programoutput *