mod resolvo_provider#

module resolvo_provider#

EasyBuild candidate graph as a resolvo DependencyProvider (CDCL SAT).

Feasibility is decided by resolvo. Multi-root optimization (priority-lex newest jointly consistent stack) lives in solve_with_resolvo, which constrains and re-solves rather than returning the first SAT assignment.

Functions

fn solve_with_resolvo(candidates: &[Candidate], policy: &Policy, baseline: Option<&StackLock>) -> Result<Vec<Candidate>, String>#

Solve using resolvo CDCL SAT as the feasibility core, then optimize over satisfying assignments: lexicographically maximize each application root’s version in declared Policy::effective_root_priority order.

The outcome depends only on the policy (including priority) and the candidate set — not on incidental list order of non-priority fields or HashMap iteration order inside the provider.

fn solve_with_stack_policy(candidates: &[Candidate], policy: &Policy, baseline: Option<&StackLock>, stack_policy: &StackPolicy) -> Result<StackPolicySolve, String>#

Structs and Unions

struct EbProvider#

Maps (package NameId, version rank) -> candidate index.

pool: Pool<Ranges<u32>>#
candidates: Vec<Candidate>#

Implementations

impl EbProvider#

Functions

fn candidate_for_solvable(&self, id: SolvableId) -> &Candidate#
fn from_universe(candidates_in: &[Candidate], policy: &Policy, baseline: Option<&StackLock>) -> Result<Self, String>#
fn from_universe_with_stack_policy(candidates_in: &[Candidate], policy: &Policy, baseline: Option<&StackLock>, stack_policy: Option<&StackPolicy>) -> Result<Self, String>#
fn root_requirements(&self, roots: &[String]) -> Vec<resolvo::ConditionalRequirement>#

Traits implemented

impl Interner for EbProvider#
impl DependencyProvider for EbProvider#