compiler-wrapper

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

https://github.com/spack/spack

Science Score: 54.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
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    319 of 1566 committers (20.4%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.6%) to scientific vocabulary

Keywords

build-tools hpc hpsf linux macos package-manager python radiuss scientific-computing spack windows

Keywords from Contributors

parallel-computing finite-elements amr amrex fem adaptive-mesh-refinement parallel mpi distributed openmp
Last synced: 6 months ago · JSON representation ·

Repository

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

Basic Info
  • Host: GitHub
  • Owner: spack
  • License: apache-2.0
  • Language: Python
  • Default Branch: develop
  • Homepage: https://spack.io
  • Size: 224 MB
Statistics
  • Stars: 4,782
  • Watchers: 97
  • Forks: 2,409
  • Open Issues: 2,047
  • Releases: 56
Topics
build-tools hpc hpsf linux macos package-manager python radiuss scientific-computing spack windows
Created about 12 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation Security Notice Copyright

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

Owner

  • Name: Spack
  • Login: spack
  • Kind: organization
  • Location: Worldwide

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

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"

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 39,571
  • Total Committers: 1,566
  • Avg Commits per committer: 25.269
  • Development Distribution Score (DDS): 0.919
Past Year
  • Commits: 4,707
  • Committers: 490
  • Avg Commits per committer: 9.606
  • Development Distribution Score (DDS): 0.881
Top Committers
Name Email Commits
Adam J. Stewart a****6@g****m 3,208
Todd Gamblin t****n@l****v 2,012
Massimiliano Culpo m****o@g****m 2,010
Harmen Stoppels h****s@g****m 1,711
Alec Scott hi@a****m 940
Wouter Deconinck w****c@g****m 888
Glenn Johnson g****n@u****u 811
Manuela Kuhn 3****n 707
Michael Kuhn m****n@o****e 688
iarspider i****r@g****m 648
Greg Becker b****3@l****v 579
darmac x****2@h****m 571
Denis Davydov d****n@g****m 520
Erik Schnetter s****r@g****m 491
eugeneswalker 3****r 490
Axel Huebl a****l@l****v 384
Jen Herting j****n@h****c 378
Peter Scheibel s****1@l****v 360
George Hartzell h****l@a****m 332
Tamara Dahlgren 3****n 322
Satish Balay b****y@m****v 314
Seth R. Johnson j****r@o****v 304
Christoph Junghans c****s@g****m 299
dependabot[bot] 4****] 295
healther h****r 284
Sinan s****w@g****m 239
snehring 7****g 235
John W. Parent 4****t 223
Eric e****7 215
Mario Melara m****a@g****m 212
and 1,536 more...
Committer Domains (Top 20 + Academic)
llnl.gov: 48 lanl.gov: 29 sandia.gov: 26 ornl.gov: 17 kitware.com: 15 lbl.gov: 13 intel.com: 13 anl.gov: 12 mcs.anl.gov: 10 epfl.ch: 10 cscs.ch: 7 iastate.edu: 7 inria.fr: 6 amd.com: 6 amazon.com: 6 cea.fr: 6 qq.com: 5 cern.ch: 5 google.com: 4 illinois.edu: 4 cam.ac.uk: 4 dlr.de: 4 ucar.edu: 4 ucl.ac.uk: 4 fnal.gov: 4 icl.utk.edu: 3 aei.mpg.de: 3 ipvs.uni-stuttgart.de: 3 kip.uni-heidelberg.de: 3 wu-kan.cn: 2 fz-juelich.de: 2 bristol.ac.uk: 2 cs.uoregon.edu: 2 itwm.fraunhofer.de: 2 nd.edu: 2 flatironinstitute.org: 2 ncsu.edu: 2 kit.edu: 2 informatik.uni-hamburg.de: 2 umich.edu: 2 anu.edu.au: 2 purdue.edu: 2 rpi.edu: 2 g.harvard.edu: 2 pnnl.gov: 2 nasa.gov: 2 cs.stanford.edu: 1 osu.edu: 1 informatik.hu-berlin.de: 1 umn.edu: 1 kth.se: 1 unh.edu: 1 buffalo.edu: 1 kaust.edu.sa: 1 virginia.edu: 1 glasgow.ac.uk: 1 email.wm.edu: 1 cornell.edu: 1 colorado.edu: 1 univ-grenoble-alpes.fr: 1 caltech.edu: 1 geophysik.uni-muenchen.de: 1 carc.unm.edu: 1 unc.edu.ar: 1 umd.edu: 1 rice.edu: 1 columbia.edu: 1 rit.edu: 1 mpimet.mpg.de: 1 uiowa.edu: 1 cardiff.ac.uk: 1 tamucc.edu: 1 sanger.ac.uk: 1 ziti.uni-heidelberg.de: 1 vectorinstitute.ai: 1 bnl.gov: 1 alaska.edu: 1 ligo.org: 1 bpi.cam.ac.uk: 1 uconn.edu: 1 uw.edu: 1 ebi.ac.uk: 1 build.las.iastate.edu: 1 uwyo.edu: 1 cit.tum.de: 1 leeds.ac.uk: 1 ccs.neu.edu: 1 gatech.edu: 1 fiu.edu: 1 soton.ac.uk: 1 polytechnique.edu: 1 cs.wisc.edu: 1 rzmerl162.llnl.gov: 1 seas.harvard.edu: 1 rz.rwth-aachen.de: 1 stfc.ac.uk: 1 bham.ac.uk: 1 ethz.ch: 1 udel.edu: 1 uibk.ac.at: 1 pasteur.fr: 1 ucdavis.edu: 1 sdsc.edu: 1 iu.edu: 1 id.ethz.ch: 1 umbc.edu: 1 email.unc.edu: 1 uni-due.de: 1 utexas.edu: 1 nmsu.edu: 1 utah.edu: 1 missouri.edu: 1 eecs.utk.edu: 1 manchester.ac.uk: 1 mpi-hd.mpg.de: 1 bu.edu: 1 smu.edu: 1 ucsc.edu: 1 mpsd.mpg.de: 1 msdtc.ox.ac.uk: 1 cct.lsu.edu: 1 epcc.ed.ac.uk: 1 hawk.iit.edu: 1 vt.edu: 1 uchicago.edu: 1 psi.ch: 1 in.tum.de: 1 ttu.edu: 1 indiana.edu: 1 imperial.ac.uk: 1 uni-mainz.de: 1 smail.uni-koeln.de: 1 physik.fu-berlin.de: 1 cnrs.fr: 1 hmc.edu: 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 1,900
  • Total pull requests: 9,750
  • Average time to close issues: over 2 years
  • Average time to close pull requests: about 2 months
  • Total issue authors: 727
  • Total pull request authors: 752
  • Average comments per issue: 2.7
  • Average comments per pull request: 1.75
  • Merged pull requests: 6,133
  • Bot issues: 3
  • Bot pull requests: 229
Past Year
  • Issues: 573
  • Pull requests: 5,503
  • Average time to close issues: 14 days
  • Average time to close pull requests: 7 days
  • Issue authors: 253
  • Pull request authors: 449
  • Average comments per issue: 1.24
  • Average comments per pull request: 1.39
  • Merged pull requests: 3,354
  • Bot issues: 1
  • Bot pull requests: 93
Top Authors
Issue Authors
  • eugeneswalker (73)
  • haampie (57)
  • alalazo (55)
  • adamjstewart (46)
  • climbfuji (39)
  • wspear (34)
  • wdconinc (28)
  • Thomas-Ulrich (24)
  • AcriusWinter (22)
  • payerle (21)
  • BenWibking (18)
  • vsoch (18)
  • Chrismarsh (17)
  • AlexanderRichert-NOAA (15)
  • mdorier (15)
Pull Request Authors
  • haampie (863)
  • wdconinc (798)
  • alalazo (518)
  • adamjstewart (476)
  • dependabot[bot] (229)
  • alecbcs (228)
  • johnwparent (173)
  • tldahlgren (153)
  • RobertMaaskant (142)
  • eugeneswalker (126)
  • kwryankrattiger (124)
  • teaguesterling (120)
  • tgamblin (120)
  • msimberg (109)
  • Chrismarsh (100)
Top Labels
Issue Labels
build-error (1,006) bug (477) stale (365) triage (288) feature (152) impact-low (81) e4s (72) update-package (58) impact-medium (54) dependencies (35) concretization (33) new-version (32) macOS (30) compilers (29) test-error (26) not-a-bug (25) cray (23) intel (20) core (20) ROCm/hip (16) external-packages (14) tests (14) oneapi (14) modules (12) new-variant (12) impact-high (11) environments (11) fetching (11) arm (11) documentation (9)
Pull Request Labels
update-package (5,617) new-version (3,899) dependencies (3,135) core (1,978) python (1,584) new-variant (899) new-package (735) tests (721) conflicts (692) patch (624) commands (448) gitlab (367) documentation (331) stand-alone-tests (322) utilities (285) workflow (275) build-systems (191) environments (148) e4s (147) shell-support (146) waiting-on-maintainer (117) intel (115) compilers (110) defaults (110) build-environment (103) binary-packages (96) github_actions (90) virtual-dependencies (90) fetching (87) extends (79)

Packages

  • Total packages: 2
  • Total downloads: unknown
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 67
proxy.golang.org: github.com/spack/spack
  • Versions: 66
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 6.5%
Average: 6.7%
Dependent repos count: 7.0%
Last synced: 6 months ago
spack.io: compiler-wrapper

Spack compiler wrapper script. Compiler commands go through this compiler wrapper in Spack builds. The compiler wrapper is a thin layer around the standard compilers. It enables several key pieces of functionality: 1. It allows Spack to swap compilers into and out of builds easily. 2. It adds several options to the compile line so that spack packages can find their dependencies at build time and run time: -I and/or -isystem arguments for dependency /include directories. -L arguments for dependency /lib directories. -Wl,-rpath arguments for dependency /lib directories. 3. It provides a mechanism to inject flags from specs

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Average: 27.7%
Dependent packages count: 55.4%
Last synced: 6 months ago

Dependencies

.github/workflows/audit.yaml actions
  • actions/checkout 755da8c3cf115ac066823e79a1e1788f8940201b composite
  • actions/setup-python 5ccb29d8773c3f3f653e1705f474dfaa8a06a912 composite
  • codecov/codecov-action d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 composite
.github/workflows/bootstrap.yml actions
  • actions/checkout 755da8c3cf115ac066823e79a1e1788f8940201b composite
.github/workflows/build-containers.yml actions
  • actions/checkout 755da8c3cf115ac066823e79a1e1788f8940201b composite
  • actions/upload-artifact 0b7f8abb1508181956e8e162db84b466c27e18ce composite
  • docker/build-push-action c56af957549030174b10d6867f20e78cfd7debc5 composite
  • docker/login-action f4ef78c080cd8ba55a85445d5b36e214a81df20a composite
  • docker/setup-buildx-action 8c0edbc76e98fa90f69d9a2c020dcb50019dc325 composite
  • docker/setup-qemu-action e81a89b1732b9c48d79cd809d8d81d79c4647a18 composite
.github/workflows/ci.yaml actions
  • actions/checkout 755da8c3cf115ac066823e79a1e1788f8940201b composite
  • dorny/paths-filter 4512585405083f25c027a35db413c2b3b9006d50 composite
.github/workflows/unit_tests.yaml actions
  • actions/checkout 755da8c3cf115ac066823e79a1e1788f8940201b composite
  • actions/setup-python 5ccb29d8773c3f3f653e1705f474dfaa8a06a912 composite
  • codecov/codecov-action d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 composite
.github/workflows/valid-style.yml actions
  • actions/checkout 755da8c3cf115ac066823e79a1e1788f8940201b composite
  • actions/setup-python 5ccb29d8773c3f3f653e1705f474dfaa8a06a912 composite
.github/workflows/windows_python.yml actions
  • actions/checkout 755da8c3cf115ac066823e79a1e1788f8940201b composite
  • actions/setup-python 5ccb29d8773c3f3f653e1705f474dfaa8a06a912 composite
  • codecov/codecov-action d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 composite
share/spack/docker/package-index/Dockerfile docker
  • nginx mainline-alpine build
  • ubuntu 18.04 build
share/spack/docs/docker/module-file-tutorial/Dockerfile docker
  • ubuntu 16.04 build
share/spack/templates/container/Dockerfile docker
  • {{ latest build
lib/spack/docs/requirements.txt pypi
  • docutils <0.17
  • pygments <2.13
  • python-levenshtein *
  • sphinx >=3.4,
  • sphinx-design *
  • sphinx-rtd-theme *
  • sphinxcontrib-programoutput *
.github/workflows/generate_spack_yaml_containerize.sh actions
.github/workflows/nightly-win-builds.yml actions
  • actions/checkout 3df4ab11eba7bda6032a0b82a6bb43b11571feac composite
  • actions/setup-python 61a6322f88396a6271a6ee3565807d608ecaddd1 composite
.github/workflows/style/requirements.txt pypi
  • black ==23.1.0
  • clingo ==5.6.2
  • flake8 ==6.1.0
  • isort ==5.12.0
  • mypy ==1.5.0
  • types-six ==1.16.21.9
  • vermin ==1.5.2
pyproject.toml pypi
  • clingo *
  • setuptools *