Software Stacks (SStack)

SStack is a tool to install multiple software stacks, such as Spack, EasyBuild, conda or others. These stacks are then linked together, using Lmod module files, to easily integrate with most HPC environments.

The main goal is to provide an easy way to install common software build tools, with same or institution specific configurations, for both site administrators and end users. The secondary goal is to provide a structured Lmod module hierarchy to enable easier use of different core software stacks and hierarchically display all software on a HPC cluster.

SStack is intended to be simple. It offers a nice and easy way to better structure your software stack deployments. The intended audience is for both site administrators and end users. SStack allows installing software in global locations as well as user specified directories. Since the module hierarchy is identical in both locations the over all module path will remain highly structured.

Important Terminology

  1. SStack: name of this tool.

  2. Stack: single instance, or installation, of a stack type (software tool).

  3. Stack Type: specific software tool deployed as a stack (Spack, Conda, EasyBuild, etc..).

  4. Module: this is a lua file used by the Lmod Module System. Every stack has its own module that’s placed in a common module tree.

  5. Module Tree:

    1. A collection of modules stored in the same directory, or set of subdirectories, under a common directory.

    2. Each SStack data root has a single module tree it organizes everything under.

  6. SStack Data Root or Path (-p / --path option)

    1. This is the top level directory where SStack stores stacks, modules, and a stateful json database.

data_root (Default: ~/sstack/os_version)
├── modules
│   └── stack_type
│       └── stack_name.lua
├── stacks
│   └── stack_type
│       └── stack_name
│           ├── stack_installation_data
│           └── ...
└── stacks.json
$ tree ~/sstack/os_version
/home/username/sstack/os_version
├── modules
│   └── custom
│       └── c1.lua
├── stacks
│   └── custom
│       └── c1
│           ├── builds
│           ├── modules
│           ├── packages
│           └── sources
└── stacks.json