Externals and snapshots

One of the prominent and unique features of Spack-Manager is the ability for developers to automatically link against binaries that were created in a snapshot of builds, or even between individual developer environments. This feature is enabled through Spack’s external specification for packages, and is automated with the spack manager external command.

Spack has several ways of reusing previous builds, and sharing binaries. The major ways of doing this are:

  • Re-using packages in the current Spack database: Standard operation and through the --reuse flag

  • Buildcaches: Indpepndent binary caches that can be hosted on webservers and filesystems

  • Upstreams: Chaining Spack installations so that the installed packages in the upstream versions are usable and read-only downstream

  • Externals: Manually specifying the path or module for a known installation of software

All of these options were evaluated during the inception of Spack-Manager, but the first three were discarded for the same fundamental reason: the control over which software you get is not stricitly yours. For all three cases you must rely on the concretizer to pick a compatible software installation for you. Externals are the only way to take explicit control and force Spack to use libraries from a specific location of your choosing.

How is an external defined

CMD: spack manager external

How to use spack manager external to share binares with others

Relationship with Spack-Manager snapshots