mod domain#

module domain#

Domain types for EasyBuild stack selection.

Structs and Unions

struct Candidate#
name: String#
version: String#
toolchain: Toolchain#
versionsuffix: Option<String>#
easyconfig_path: String#
dependencies: Vec<DepReq>#
builddependencies: Vec<DepReq>#

Build-time-only requirements (builddependencies in the easyconfig). Same DepReq semantics as runtime dependencies; kept separate so lock/SBOM/serialized outputs can distinguish build vs runtime roles.

exts_list: Vec<ExtEntry>#

Bundled extensions (exts_list) resolved from the easyconfig.

struct DepReq#
name: String#
version_req: String#
versionsuffix: Option<String>#

Optional versionsuffix on this dependency (e.g. -CUDA-%(cudaver)s after resolve). When set, selection treats it as part of the requirement identity.

toolchain: Option<Toolchain>#

Per-dependency toolchain override (None = inherit the dependent’s toolchain). Includes EasyBuild SYSTEM{name: "system", version: "system"}.

struct ExtEntry#

One bundled extension entry from an easyconfig exts_list.

name: String#
version: String#
struct LockPackage#
name: String#
version: String#
toolchain: Toolchain#
versionsuffix: Option<String>#
easyconfig_path: String#
struct Pin#
name: String#
version_req: String#
struct Policy#
toolchain: Toolchain#
roots: Vec<String>#
root_priority: Option<Vec<String>>#

Declared priority order over application roots for multi-root lexicographic newest selection. When omitted or empty, defaults to Self::roots list order. Explicit priority is independent of reordering roots in the policy JSON.

pins: Vec<Pin>#
forbid: Vec<String>#
objective: String#
require_upgrade: Vec<RequireUpgrade>#

Packages that must be strictly newer than baseline (when relative_to_baseline is true). Accepts a single object or an array in JSON for backward compatibility.

Implementations

impl Policy#

Functions

fn effective_root_priority(&self) -> Vec<String>#

Effective root priority: explicit root_priority when non-empty, otherwise roots order. Any root missing from the priority list is appended in roots order so every application root is optimized.

struct RequireUpgrade#
name: String#
relative_to_baseline: bool#

When true, the selected version of name must be strictly newer than the baseline lock’s version. When false, construction fails with a clear error (absolute require_upgrade is not silently ignored).

struct SolverMeta#
engine: String#
engine_version: String#
timestamp: String#
struct StackLock#
schema_version: u32#
toolchain: Toolchain#
generation_label: Option<String>#
packages: Vec<LockPackage>#
solver: SolverMeta#

Implementations

impl StackLock#

Functions

fn package(&self, name: &str) -> Option<&LockPackage>#
struct Toolchain#
name: String#
version: String#

Implementations

impl Toolchain#

Functions

fn label(&self) -> String#
struct Universe#
toolchain: Toolchain#
generation_label: Option<String>#
candidates: Vec<Candidate>#