Skip to main content

Slurm Factory Spack Build Cache

The Slurm Factory Spack Build Cache is a public, GPG-signed binary package repository hosted on AWS that provides pre-compiled Slurm packages built with OS-native compilers. This dramatically reduces build times from 45-90 minutes to 5-15 minutes by eliminating the need for compilation.

Overview

The build cache is a CloudFront-distributed S3 bucket with a toolchain-based architecture:

  • OS Toolchains - Ubuntu (noble, jammy, resolute) and Rocky Linux (8, 9, 10)
  • Slurm Dependencies - Pre-built dependencies for each toolchain
  • Slurm Packages (versions 23.11, 24.11, 25.11) - 3 versions
  • Total: 18 Slurm combinations (3 Slurm × 6 OS toolchains)

All packages are:

  • 🔐 GPG-Signed - Cryptographically signed for security and integrity
  • Pre-compiled - Ready to install in minutes
  • 📦 Relocatable - Deploy to any filesystem path
  • 🎯 Optimized - CPU-specific compilation (x86_64_v3)
  • Tested - Validated via GitHub Actions CI/CD

Public Access

The build cache is publicly accessible via CloudFront CDN:

https://slurm-factory-spack-binary-cache.vantagecompute.ai

No AWS credentials are required for read access.

Directory Structure

The buildcache uses a toolchain-first architecture organized by OS:

slurm-factory-spack-binary-cache.vantagecompute.ai/
├── noble/ # Ubuntu 24.04 (recommended)
│ └── slurm/
│ ├── deps/ # Slurm dependencies (GPG-signed)
│ ├── 25.11/ # Slurm 25.11 packages (GPG-signed)
│ ├── 24.11/ # Slurm 24.11 packages (GPG-signed)
│ └── 23.11/ # Slurm 23.11 packages (GPG-signed)
├── jammy/ # Ubuntu 22.04
│ └── slurm/
│ ├── deps/
│ ├── 25.11/
│ ├── 24.11/
│ └── 23.11/
├── resolute/ # Ubuntu 25.04
│ └── slurm/
│ └── ...
├── rockylinux10/ # Rocky Linux 10 / RHEL 10
│ └── slurm/
│ └── ...
├── rockylinux9/ # Rocky Linux 9 / RHEL 9
│ └── slurm/
│ └── ...
├── rockylinux8/ # Rocky Linux 8 / RHEL 8
│ └── slurm/
│ └── ...
└── builds/
├── 25.11/
│ ├── noble/
│ │ ├── slurm-25.11-noble-software.tar.gz # Complete tarball
│ │ └── slurm-25.11-noble-software.tar.gz.asc # GPG signature
│ ├── jammy/
│ │ ├── slurm-25.11-jammy-software.tar.gz
│ │ └── slurm-25.11-jammy-software.tar.gz.asc
│ └── ... # All OS toolchains
├── 24.11/
│ └── ... # All toolchains with tarballs + signatures
└── 23.11/
└── ... # All toolchains with tarballs + signatures

All 18 combinations are GPG-signed and ready to install.

Toolchain-Based Architecture Benefits

The organization by OS toolchain provides:

  • OS Compatibility - Packages built with native system compilers
  • Better caching - Dependencies shared across Slurm versions within each toolchain
  • Reduced storage - No duplication of common packages per OS
  • Parallel downloads - Spack fetches from multiple mirrors simultaneously
  • Easier updates - Update dependencies independently of Slurm versions

GPG Package Signing

All packages in the build cache are cryptographically signed with GPG for security and integrity verification.

Key Information

Signing Key Details:

  • Key ID: DFB92630BCA5AB71
  • Owner: Vantage Compute Corporation (Slurm Factory Spack Cache Signing Key)
  • Email: info@vantagecompute.ai
  • Type: RSA 4096-bit

Automatic Key Import

The easiest way to import the signing keys is to let Spack fetch them automatically from the buildcache:

# Add a mirror first
spack mirror add slurm-factory \
https://slurm-factory-spack-binary-cache.vantagecompute.ai/noble/slurm/25.11/

# Import and trust all GPG keys from the buildcache
spack buildcache keys --install --trust

This command:

  1. Downloads all GPG public keys from the _pgp/ directory in the buildcache
  2. Imports them into Spack's GPG keyring
  3. Marks them as trusted for package verification

Manual Key Verification

For additional security in production environments, you can verify the key fingerprint:

# List imported keys
spack gpg list

# Expected output shows the Slurm Factory signing key:
# pub rsa4096/DFB92630BCA5AB71 2025-XX-XX
# Fingerprint: 9C4E 8B2F 3A1D 5E6C 7F8A 9B0D DFB9 2630 BCA5 AB71

Signature Verification

Once keys are imported, Spack automatically verifies package signatures during installation:

# Install with automatic signature verification
spack install slurm@25.11

# Spack will verify GPG signatures before installing packages
# Any signature mismatch will abort the installation

# Check a specific package signature manually
spack buildcache check slurm@25.11

Why GPG Signing Matters

  • 🔒 Integrity: Ensures packages haven't been tampered with during transit
  • Authenticity: Confirms packages came from Vantage Compute
  • 🛡️ Security: Protects against man-in-the-middle attacks
  • 📋 Compliance: Meets security requirements for production systems
  • 🔍 Provenance: Establishes trust chain for audit trails

Using the Build Cache

Quick Start with Spack

Install GPG-signed Slurm from the build cache in 5-15 minutes:

# 1. Install Spack v1.0.0
git clone --depth 1 --branch v1.0.0 https://github.com/spack/spack.git
source spack/share/spack/setup-env.sh

# 2. Set versions
SLURM_VERSION=25.11
TOOLCHAIN=noble # or: jammy, resolute, rockylinux9, rockylinux10, rockylinux8
CLOUDFRONT_URL=https://slurm-factory-spack-binary-cache.vantagecompute.ai

# 3. Add two-tier mirrors (organized by toolchain)
spack mirror add slurm-factory-deps "${CLOUDFRONT_URL}/${TOOLCHAIN}/slurm/deps/"
spack mirror add slurm-factory-slurm "${CLOUDFRONT_URL}/${TOOLCHAIN}/slurm/${SLURM_VERSION}/"

# 4. Import and trust GPG signing keys (enables automatic signature verification)
spack buildcache keys --install --trust

# 5. Install GPG-signed Slurm from buildcache (5-15 minutes!)
spack install slurm@${SLURM_VERSION} target=x86_64_v3

# 6. Load and verify
spack load slurm@${SLURM_VERSION}
sinfo --version
# Output: slurm 25.11.4

Download Pre-built Tarball

Alternatively, download a complete Slurm installation as a signed tarball:

# Set versions
SLURM_VERSION=25.11
TOOLCHAIN=noble # or: jammy, resolute, rockylinux9, rockylinux10, rockylinux8
CLOUDFRONT_URL=https://slurm-factory-spack-binary-cache.vantagecompute.ai

# Download tarball and GPG signature
wget "${CLOUDFRONT_URL}/${TOOLCHAIN}/${SLURM_VERSION}/slurm-${SLURM_VERSION}-${TOOLCHAIN}-software.tar.gz"
wget "${CLOUDFRONT_URL}/${TOOLCHAIN}/${SLURM_VERSION}/slurm-${SLURM_VERSION}-${TOOLCHAIN}-software.tar.gz.asc"

# Import GPG key
gpg --keyserver keyserver.ubuntu.com --recv-keys DFB92630BCA5AB71

# Verify signature (REQUIRED - do not skip!)
gpg --verify slurm-${SLURM_VERSION}-${TOOLCHAIN}-software.tar.gz.asc \
slurm-${SLURM_VERSION}-${TOOLCHAIN}-software.tar.gz

# Expected output:
# gpg: Good signature from "Vantage Compute Corporation (Slurm Factory Spack Cache Signing Key) <info@vantagecompute.ai>"

# Extract and install
sudo tar -xzf slurm-${SLURM_VERSION}-${TOOLCHAIN}-software.tar.gz -C /opt/
cd /opt && sudo ./data/slurm_assets/slurm_install.sh --full-init

Using with slurm-factory CLI

The slurm-factory CLI can leverage the build cache automatically:

# Install from PyPI
pip install slurm-factory

# Build uses buildcache by default for dependencies
slurm-factory build-slurm --slurm-version 25.11 --toolchain noble

The CLI will:

  1. Pull the compiler from the buildcache (if available)
  2. Pull all Slurm dependencies from the buildcache
  3. Only compile Slurm itself from source
  4. Package everything into a relocatable tarball

Available Packages

OS Toolchains

All OS toolchains use the system GCC and glibc from the base OS:

ToolchainOS/DistributionSystem GCCGlibcUse Case
nobleUbuntu 24.0413.2.02.39Recommended - Modern stable
resoluteUbuntu 25.0415.2.02.42Latest features
jammyUbuntu 22.0411.4.02.35LTS - Wide compatibility
rockylinux10Rocky Linux 10 / RHEL 1014.3.12.40RHEL 10 compatible
rockylinux9Rocky Linux 9 / RHEL 911.4.12.34RHEL 9 compatible
rockylinux8Rocky Linux 8 / RHEL 88.5.02.28RHEL 8 compatible

Slurm Packages

All combinations of Slurm version × OS toolchain are available:

Slurm VersionStatusAvailable ToolchainsBuildcache URL Pattern
25.11LatestAll 6 toolchains{toolchain}/slurm/25.11/
24.11LTSAll 6 toolchains{toolchain}/slurm/24.11/
23.11StableAll 6 toolchains{toolchain}/slurm/23.11/

Each Slurm buildcache includes:

  • Slurm - Complete workload manager with all plugins
  • OpenMPI - MPI implementation
  • PMIx - Process Management Interface for Exascale
  • Munge - Authentication service
  • OpenSSL - TLS/SSL support
  • HDF5 - High-performance data format
  • hwloc - Hardware locality
  • libevent - Event notification
  • UCX - Unified Communication X
  • And 40+ more dependencies

GPU builds additionally include:

  • CUDA - NVIDIA CUDA toolkit (11.8+, 12.x)
  • ROCm - AMD ROCm platform (5.7+, 6.x for select builds)

Build Cache Benefits

Speed Comparison

Build TypeFrom SourceFrom BuildcacheSpeedup
Compiler Only30-60 min2-5 min10-15x
Slurm (CPU)45-90 min5-15 min10-15x
Slurm (GPU)90-180 min15-25 min6-10x

Storage Savings

Build TypeLocal BuildBuildcacheSavings
Compiler50 GB disk5 GB download90%
Slurm (CPU)50 GB disk10 GB download80%
Slurm (GPU)100 GB disk25 GB download75%

Additional Benefits

  • No Docker required - Install directly with Spack
  • Reproducible - Same binaries every time
  • Verified - All packages built and tested via CI/CD
  • Signed - GPG signatures for package integrity
  • Global CDN - Fast downloads worldwide via CloudFront
  • Bandwidth efficient - Only download what you need

Advanced Usage

List Available Packages

# Set toolchain and version
TOOLCHAIN=noble
SLURM_VERSION=25.11
CLOUDFRONT_URL=https://slurm-factory-spack-binary-cache.vantagecompute.ai

# Add mirrors for deps and slurm
spack mirror add slurm-factory-deps "${CLOUDFRONT_URL}/${TOOLCHAIN}/slurm/deps/"
spack mirror add slurm-factory-slurm "${CLOUDFRONT_URL}/${TOOLCHAIN}/slurm/${SLURM_VERSION}/"

# Import GPG signing keys
spack buildcache keys --install --trust

# List all packages in buildcache
spack buildcache list --allarch

Install Specific Dependencies

# Import GPG keys (if not already done)
spack buildcache keys --install --trust

# Install only OpenMPI from signed buildcache
spack install --cache-only openmpi@5.0.6

# Install PMIx from signed buildcache
spack install --cache-only pmix@5.0.3

Use Multiple Mirrors for Different Toolchains

# Set CloudFront URL
CLOUDFRONT_URL=https://slurm-factory-spack-binary-cache.vantagecompute.ai

# Add mirrors for Ubuntu 24.04 (noble) - Slurm 25.11
spack mirror add noble-deps "${CLOUDFRONT_URL}/noble/slurm/deps/"
spack mirror add noble-slurm "${CLOUDFRONT_URL}/noble/slurm/25.11/"

# Add mirrors for Rocky Linux 9 - Slurm 24.11
spack mirror add rocky9-deps "${CLOUDFRONT_URL}/rockylinux9/slurm/deps/"
spack mirror add rocky9-slurm "${CLOUDFRONT_URL}/rockylinux9/slurm/24.11/"

# Add mirrors for Ubuntu 22.04 (jammy) - Slurm 23.11
spack mirror add jammy-deps "${CLOUDFRONT_URL}/jammy/slurm/deps/"
spack mirror add jammy-slurm "${CLOUDFRONT_URL}/jammy/slurm/23.11/"

# Import GPG signing keys from all mirrors
spack buildcache keys --install --trust

# Install with verified signatures
spack install slurm@25.11 # Uses noble mirrors if that's configured
spack install slurm@24.11 # Uses rocky9 mirrors if that's configured

Cache-Only Installation

Force Spack to only use buildcache (fail if package not in cache):

# Import GPG keys first
spack buildcache keys --install --trust

# Install only from buildcache with signature verification
spack install --cache-only slurm@25.11

GPG Key Management

All packages in the buildcache are GPG-signed for security and integrity:

# Import and trust GPG keys from buildcache
spack buildcache keys --install --trust

# List trusted GPG keys
spack gpg list

# Verify a package signature manually
spack buildcache check <package-spec>

CI/CD Integration

The buildcache is automatically maintained by GitHub Actions workflows. See GitHub Actions for details.

Automated Builds

Six workflows keep the buildcache current across all toolchains:

WorkflowPurpose
publish-slurm-buildcache-deps.ymlBuilds and publishes Slurm dependencies for a single toolchain
publish-slurm-buildcache-version.ymlBuilds and publishes a specific Slurm version for a single toolchain
publish-slurm-all-deps.ymlMatrix workflow - builds deps across all 6 toolchains
publish-slurm-all-versions.ymlMatrix workflow - builds all Slurm versions across all 6 toolchains
build-and-publish-slurm-tarball.ymlBuilds relocatable Slurm tarballs
slurm-docker-image.ymlBuilds Docker images with Slurm pre-installed

All workflows:

  • Run on self-hosted runners for performance
  • Use AWS OIDC for secure S3 access
  • Sign packages with GPG
  • Test installations before publishing
  • Generate deployment summaries

Infrastructure

The buildcache is hosted on AWS infrastructure managed via CDK. See Infrastructure for details.

Components

  • S3 Bucket: slurm-factory-spack-buildcache-4b670
  • CloudFront Distribution: Global CDN for fast access
  • Route53: DNS for slurm-factory-spack-binary-cache.vantagecompute.ai
  • IAM Roles: GitHub OIDC for automated publishing

Regions and Availability

  • Primary Region: us-east-1
  • CDN: CloudFront with global edge locations
  • Availability: 99.9% SLA via AWS

Troubleshooting

Build Cache Not Found

If Spack can't find packages in buildcache:

# Verify mirror is configured
spack mirror list

# Import GPG keys if not already done
spack buildcache keys --install --trust

# Check buildcache index
spack buildcache list --allarch

# Try updating buildcache index
spack buildcache update-index

Signature Verification Issues

If you encounter GPG signature errors:

# Import and trust GPG keys from buildcache
spack buildcache keys --install --trust

# Verify keys are installed
spack gpg list

# Check package signature
spack buildcache check slurm@25.11

Network Issues

If downloads are slow or failing:

# Test CloudFront access
curl -I https://slurm-factory-spack-binary-cache.vantagecompute.ai/

# Try direct S3 access (if CloudFront is down)
# Replace {toolchain} with: noble, jammy, resolute, rockylinux9, etc.
spack mirror add s3-direct \
https://slurm-factory-spack-buildcache-4b670.s3.amazonaws.com/noble/slurm/25.11/
spack buildcache keys --install --trust

Signature Verification Failures

If package signatures fail, the issue is usually that GPG keys haven't been imported:

# Import GPG keys from the buildcache
spack buildcache keys --install --trust

# Verify keys are installed
spack gpg list

# Try installation again
spack install slurm@25.11

If you still encounter issues:

# Update buildcache index
spack buildcache update-index

# Verify the package signature manually
spack buildcache check slurm@25.11

See Also