mod select#

module select#

Stack selection via resolvo CDCL SAT (fed by parsed easyconfig candidates).

Also provides resolvo_resolve_dep_versions: joint SAT co-select of dependency pins for a single recipe (used by canonical package planning and bumps), so version selection is not hierarchy-lookup-only.

Functions

fn resolvo_resolve_dep_versions(specs: &[SourceDepSpec], cands: &[Candidate], hierarchy: &ToolchainHierarchy, toolchain: &Toolchain, root_name: &str, root_version: &str, preferred_pins: Option<&HashMap<String, String>>) -> Result<(HashMap<String, String>, String), String>#

Joint resolvo co-select of dependency versions for one recipe.

Builds a synthetic root candidate whose dependencies are the foreign or source-recipe deps that exist under the generation hierarchy, solves with select_stack, and returns name→version for co-selected deps plus a human note (engine id). Hierarchy members (GCCcore, gfbf, …) are rewritten to the policy toolchain label so crate::resolvo_provider::EbProvider keeps them — membership is already enforced by filter_candidates_in_hierarchy.

When preferred_pins is set (typically hierarchy consensus), those packages are exact pins in the policy: resolvo joint-checks feasibility under generation-native versions rather than free prefer_newer overriding consensus (which would re-select SYSTEM/out-of-generation newest). Unpinned resolvable specs still free-select under residual floors.

Specs with SYSTEM toolchain or a non-empty versionsuffix are skipped (frozen pins). Pure SYSTEM install candidates are dropped when a non-SYSTEM hierarchy candidate for the same name exists.

fn select_stack(universe: &Universe, policy: &Policy, baseline: Option<&StackLock>) -> Result<StackLock, SelectError>#

Select a stack using resolvo (CDCL SAT) over EasyBuild-derived candidates.

Enums

enum SelectError#
MissingPackage(String)#
Unsat(String)#