awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
spack avatar

spack/spack

0
View on GitHub↗
5,076 stars·2,436 forks·Python·Apache-2.0·17 viewsspack.io↗

Spack

Spack is a source-based build system and package manager designed for high-performance computing. It serves as a multi-version software manager and a logic-based dependency solver that handles complex software stacks across various platforms and hardware architectures.

The project distinguishes itself by managing multiple compilers and toolchains to target specific hardware. It allows the coexistence of multiple versions and configurations of the same software package on a single system by utilizing prefix-based isolation and unprivileged deployment.

The system provides comprehensive capabilities for dependency resolution, source patching, and build variant configuration. It includes tools for creating isolated software environments, managing environment modules, and defining package recipes through scripts.

The project is implemented in Python.

Features

  • High-Performance Computing - Designed specifically to manage and install complex scientific software stacks on supercomputers and HPC architectures.
  • Custom Build Pipelines - Provides precise control over build variants, dependency trees, and compiler flags when compiling software from source.
  • Toolchain Managers - Detects and configures multiple compilers and toolchains to target specific hardware architectures.
  • Build Variant Configuration - Specifies versions, compile-time options, target architectures, and compiler flags for specific software installations.
  • Constraint Resolvers - Employs logic engines to calculate a single compatible set of package versions from overlapping constraints.
  • Package Build Recipes - Defines build steps and metadata in Python scripts that automate the installation process.
  • Constraint-Based Dependency Solvers - Uses a logic-based solver to resolve complex software dependencies based on platform, compiler, and configuration variants.
  • Build Recipes - Uses declarative Python scripts to define source locations and build steps for software packages.
  • Source Builds - Compiles and installs software from source code while managing complex dependency trees and version conflicts.
  • Versioned Component Installations - Compiles and deploys multiple versions and configurations of software packages across various platforms and architectures.
  • Versioned Package Managers - Allows the coexistence of multiple versions and configurations of the same software package on a single system.
  • Binary and Source Installation - Builds and installs software from source or binaries while allowing multiple configurations to coexist.
  • Filesystem Prefix Isolators - Installs each unique configuration into its own prefix and uses RPATH to prevent library version conflicts.
  • Installation Instance Isolation - Maintains separate directories and configurations for different versions of the same software to prevent conflicts.
  • Compiler Toolchain Management - Detects and manages multiple compilers and custom toolchains to target specific hardware architectures.
  • HPC Package Managers - Acts as a comprehensive package manager for supercomputers, building software from source for multiple architecture targets.
  • Package Dependency Resolution - Resolves specific versions and options of libraries required by a package to ensure platform compatibility.
  • Dependency Tree Customization - Defines specific versions and configurations for direct and transitive dependencies to ensure a reproducible build environment.
  • Installation Constraint Enforcement - Defines conflicts and requirements to block incompatible compiler, version, or platform combinations.
  • Environment Variable Injection - Dynamically modifies shell environment variables based on the specific set of packages loaded into the current session.
  • Package Discovery - Facilitates searching and inspecting available software packages and their metadata.
  • Installation Isolation - Creates dedicated software environments to group specific packages and versions, separate from other system installations.
  • Feature Toggles - Provides mechanisms to enable or disable optional package functionality at compile time to tailor builds.
  • Source - Tracks download locations via URLs and mirror lists to ensure reproducible installation processes.
  • Shell Environment Managers - Loads or unloads specific packages into the current shell session to make executables and libraries available.
  • Software Specification Syntaxes - Implements a concise syntax for specifying exact versions, configuration variants, and architecture requirements.
  • Source Patching Utilities - Automatically modifies source code files using patches during the installation process.
  • Environment Variable Configuration - Defines custom modifications for environment variables within configuration files.
  • Configuration Hierarchy Resolvers - Resolves settings across overlapping scopes using a strict precedence order.
  • Research Environment Reproducibility - Creates isolated software environments with fixed package versions to ensure reproducible results across different computing platforms.
  • User-Space Installations - Deploys software packages into user-defined directories to allow installation without root or administrator privileges.
  • Compiler Detection - Spack scans the host machine to locate and register available compiler suites required for building software from source.
  • Plugin Mixin Systems - Inherits common variants, conflicts, and mirror configurations through mixin classes to reduce duplication across packages.
  • Metadata Mixins - Implements mixin classes to share common configuration variants and mirror settings across related software packages.
  • Platform-Specific Configuration Merging - Loads specialized configuration files based on the detected operating system using include files.
  • Precedence-Based Resolution - Determines final configuration settings by merging user, system, and package scopes according to a strict precedence order.
  • Build-Time Dependency Declarations - Declares required software for build, link, run, or test phases and applies conditional patches to dependencies.
  • Unprivileged Software Deployment - Deploys software into user-defined directories to avoid the need for administrator or root access.
  • Package Management - Flexible package manager for multiple versions and compilers.
  • Package Managers - Language-independent package manager for supercomputers.

Star history

Star history chart for spack/spackStar history chart for spack/spack

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does spack/spack do?

Spack is a source-based build system and package manager designed for high-performance computing. It serves as a multi-version software manager and a logic-based dependency solver that handles complex software stacks across various platforms and hardware architectures.

What are the main features of spack/spack?

The main features of spack/spack are: High-Performance Computing, Custom Build Pipelines, Toolchain Managers, Build Variant Configuration, Constraint Resolvers, Package Build Recipes, Constraint-Based Dependency Solvers, Build Recipes.

What are some open-source alternatives to spack/spack?

Open-source alternatives to spack/spack include: conda/conda — Conda is a binary package manager, cross-platform environment manager, and dependency resolution engine. It serves as… homebrew/legacy-homebrew — This project is a command line package manager and dependency management engine used for installing, updating, and… nixos/nix.dev — This project provides a functional package manager and a reproducible build system designed to ensure identical build… pypa/sampleproject — This project is a reference implementation and tutorial designed to demonstrate the end-to-end workflow of building,… rust-lang/cargo — Cargo is the official build system and package manager for the Rust programming language. It provides a unified… moonrepo/moon — Moon is a monorepo build system and task runner designed to orchestrate complex projects with multiple packages. It…

Open-source alternatives to Spack

Similar open-source projects, ranked by how many features they share with Spack.
  • conda/condaconda avatar

    conda/conda

    7,444View on GitHub↗

    Conda is a binary package manager, cross-platform environment manager, and dependency resolution engine. It serves as a software repository manager that enables the installation and update of pre-compiled binaries and their dependencies across different operating systems. The system creates isolated execution spaces to prevent dependency conflicts between projects and uses a solver to calculate compatible package versions based on constraints from available repositories. It supports the creation of custom software packages from recipes, which can be hosted in public or private channels for di

    Python
    View on GitHub↗7,444
  • homebrew/legacy-homebrewHomebrew avatar

    Homebrew/legacy-homebrew

    26,849View on GitHub↗

    This project is a command line package manager and dependency management engine used for installing, updating, and removing software packages across different operating systems. It functions as a package recipe system and software repository administrator, utilizing declarative scripts to define software sources, build arguments, and installation steps. The system operates as a binary distribution platform that compiles source code into pre-compiled binaries and distributes them through remote repositories. It includes an automated version tracker that monitors upstream software releases and

    View on GitHub↗26,849
  • nixos/nix.devNixOS avatar

    NixOS/nix.dev

    3,630View on GitHub↗

    This project provides a functional package manager and a reproducible build system designed to ensure identical build inputs always produce the same outputs. It serves as the foundation for a declarative Linux distribution where the entire system state is defined in a configuration file, enabling predictable deployments and full-system rollbacks. The system uses a deterministic functional language and a lazy-evaluation expression engine to manage software dependencies and isolate build environments. It distinguishes itself through a content-addressable store that allows multiple versions of s

    Nixcookbookdocumentationlearning
    View on GitHub↗3,630
  • pypa/sampleprojectpypa avatar

    pypa/sampleproject

    5,245View on GitHub↗

    This project is a reference implementation and tutorial designed to demonstrate the end-to-end workflow of building, versioning, and uploading Python distributions. It serves as a concrete project template and example for configuring metadata and build artifacts for package indices. The repository illustrates how to package software by defining project metadata and dependencies in static configuration files. It covers the process of transforming source trees into versioned archives and platform-specific binary distributions, specifically showing how to build binary wheels and source distribut

    Python
    View on GitHub↗5,245
  • See all 30 alternatives to Spack→