Modeling and simulation environments are very heterogeneous. Spack therefore supports many different production environments:

  • 7 different compilers: Intel, GCC, Clang, PGI, …

  • Resolving dependencies

  • Resolving different versions of dependencies

Previous systems

They usually do not offer any support for combinatorial versioning.

  • Traditional binary package managers like RPM, yum, APT, yast, etc.

    • are designed to manage a single software stack

    • install one version of a package

    • usually problem-free upgrades to a stable, well-tested stack

  • Port systems

    • BSD Ports, portage, NixOS, Macports, Homebrew, etc.

    • mostly little support for builds that are parameterised by compilers or dependent versions

  • Virtual machines and Linux containers

    • Containers allow the creation of different environments for different applications

    • However, they do not solve the build problem for the image

    • Performance, security and upgrades become very complex with many different builds.