Spack is a package manager for supercomputers, Linux, and macOS. It makes installing scientific software easy. With Spack, you can build a package with multiple versions, configurations, platforms, and compilers, and all of these builds can coexist on the same machine.
Spack isn't tied to a particular language; you can build a software stack in Python or R, link to libraries written in C, C++, or Fortran, and easily swap compilers. Use Spack to install in your home directory, to manage shared installations and modules on a cluster, or to build combinatorial versions of software for testing.
Clone Spack from github and you’re ready to go:
Custom versions & configurations
Spack allows installation to be customized. Users can specify the version, build compiler, compile-time options, and cross-compile platform, all on the command line.
Users can specify as many or few options as they care about. Spack will fill in the unspecified values with sensible defaults. The two listed syntaxes for variants are identical when the value is boolean.
Spack allows dependencies of particular installations to be
customized extensively. Suppose that
mpileaks depends indirectly
^, users can add custom
configurations for the dependencies:
Packages can peacefully coexist
Spack installs every unique package/dependency configuration into its own prefix, so new installs will not break existing ones.
Spack avoids library misconfiguration by using
RPATH to link
dependencies. When a user links a library or runs a program, it is
tied to the dependencies it was built with, so there is no need to
LD_LIBRARY_PATH at runtime.
Creating packages is easy
Spack packages are simple Python scripts. The
command will generate boilerplate to get you started, and you can
create a package in a matter of minutes. You write the build
instructions; Spack builds the dependencies for you.