https://github.com/spack/spack-bootstrap-mirrors
Generate binary packages to bootstrap Spack
https://github.com/spack/spack-bootstrap-mirrors
Last synced: 2 months ago
JSON representation
Generate binary packages to bootstrap Spack
- Host: GitHub
- URL: https://github.com/spack/spack-bootstrap-mirrors
- Owner: spack
- Created: 2022-03-17T13:13:21.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2025-11-21T03:03:14.000Z (6 months ago)
- Last Synced: 2025-11-30T00:14:35.638Z (5 months ago)
- Language: Python
- Size: 267 KB
- Stars: 2
- Watchers: 5
- Forks: 4
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Spack Bootstrap Mirrors
This repository contains several Github Action workflows that are used
to generate binaries to bootstrap
[Spack](https://github.com/spack/spack).
Stable binary artifacts are tagged and released.
## Purpose of this repository
Spack has some minimum requirements to work correctly. Most of them are
currently _system requirements_ i.e. they are assumed to be present on
the machines where Spack is run.
This is usually the case for common software found on `linux` systems,
such as the `patch` or `tar` executables.
A few less common, but critical, dependencies are
instead bootstrapped by Spack if not present on the system.
These are currently:
1. `clingo`: needed to concretize specs
2. `GnuPG`: needed to sign and verify binaries
3. `patchelf`: needed to relocate binaries on `linux`
**The purpose of this repository is to define workflows that generate
binary packages suitable for bootstrapping Spack on most architectures**.
For completeness we report a summary of Spack requirements below:
Name | Supported Versions | System Requirement | Requirement Reason
--- | -------------------|---------------------|--------------------
Python | 3.6-3.13 | Yes | Interpreter for Spack
C/C++ compilers | - | Yes | Building software
GNU make | - | Yes | Building software
patch | - | Yes | Building software
curl | - | Yes | Fetching archives
tar | - | Yes | Extract/create archives
gzip | - | Yes | Archive compression
unzip | - | Yes | Archive compression
bzip2 | - | Yes | Archive compression
xz | - | Yes | Archive compression
zstd | - | Yes | Archive compression
file | - | Yes | Binary packages
patchelf | 0.13 or later | No | Binary packages
GnuPG | 2.3 or later | No | Binary packages
clingo | 5.5 | No | Concretization
git | - | Yes | Software repositories
hg | - | Yes | Software repositories
svn | - | Yes | Software repositories
## Supported platforms
A few different toolchains have been used to produce binaries depending
on the target platform and architecture. Choices have been mainly driven
by compatibility with the [manylinux](https://github.com/pypa/manylinux) project.
Platform | Compatibility | Compiler Toolchain | Architecture | Python
---------|----|--------------------|--------------|-------
`linux` | `glibc 2.17` or later | `GCC 10.2.1`| `x86_64` | 3.6-3.13
`linux` | `glibc 2.17` or later | `GCC 10.2.1`| `aarch64` | 3.6-3.13
`linux` | `glibc 2.17` or later | `GCC 10.2.1`| `ppc64le` | 3.6-3.13
`darwin`| `macOS 10.13` or later | `Apple Clang 15.0.0` | `x86_64` | 3.6-3.13
`darwin`| `macOS 11` or later | `Apple Clang 15.0.0` | `aarch64` | 3.8-3.13
## Github Actions Workflows
All the `linux` workflows make use of a slightly customized
[manylinux2014](https://github.com/spack/manylinux) image. The customization is minimal
and amounts to building multi-arch images with the same name
on Github Actions.
### `clingo` specific caveats
To avoid having runtime dependencies on `libstdc++.so`, `clingo` is
linked against a static version of the runtime library.
### `GnuPG` specific caveats
On `darwin` `GnuPG` had to be built with `--disable-nls --without-libintl-prefix` to avoid having binary requirements on
the system `libintl` installed in the CI environment.