spack.solver package¶
Submodules¶
spack.solver.asp module¶
- class spack.solver.asp.AspFunction(name, args=None)[source]¶
Bases:
spack.solver.asp.AspObject
- class spack.solver.asp.DeclaredVersion(version, idx, origin)¶
Bases:
tuple
Named tuple to contain information on declared versions
- property idx¶
Alias for field number 1
- property origin¶
Alias for field number 2
- property version¶
Alias for field number 0
- exception spack.solver.asp.InternalConcretizerError(provided, conflicts)[source]¶
Bases:
spack.error.UnsatisfiableSpecError
Subclass for new constructor signature for new concretizer
- class spack.solver.asp.PyclingoDriver(cores=True)[source]¶
Bases:
object
- fact(head)[source]¶
ASP fact (a rule without a body).
- Parameters
head (AspFunction) – ASP function to generate as fact
- solve(setup, specs, nmodels=0, reuse=None, timers=False, stats=False, out=None, setup_only=False)[source]¶
Set up the input and solve for dependencies of
specs
.- Parameters
setup (SpackSolverSetup) – An object to set up the ASP problem.
specs (list) – List of
Spec
objects to solve for.nmodels (int) – Number of models to consider (default 0 for unlimited).
reuse (None or list) – list of concrete specs that can be reused
timers (bool) – Print out coarse timers for different solve phases.
stats (bool) – Whether to output Clingo’s internal solver statistics.
out – Optional output stream for the generated ASP program.
setup_only (bool) – if True, stop after setup and don’t solve (default False).
- class spack.solver.asp.Result(specs, asp=None)[source]¶
Bases:
object
Result of an ASP solve.
- format_core(core)[source]¶
Format an unsatisfiable core for human readability
Returns a list of strings, where each string is the human readable representation of a single fact in the core, including a newline.
Modeled after traceback.format_stack.
- format_cores()[source]¶
List of facts for each core
Separate cores are separated by an empty line Cores are not minimized
- format_minimal_cores()[source]¶
List of facts for each core
Separate cores are separated by an empty line
- minimize_core(core)[source]¶
Return a subset-minimal subset of the core.
Clingo cores may be thousands of lines when two facts are sufficient to ensure unsatisfiability. This algorithm reduces the core to only those essential facts.
- raise_if_unsat()[source]¶
Raise an appropriate error if the result is unsatisfiable.
The error is an InternalConcretizerError, and includes the minimized cores resulting from the solve, formatted to be human readable.
- property specs¶
List of concretized specs satisfying the initial abstract request.
- property specs_by_input¶
- property unsolved_specs¶
List of abstract input specs that were not solved.
- class spack.solver.asp.Solver[source]¶
Bases:
object
This is the main external interface class for solving.
It manages solver configuration and preferences in one place. It sets up the solve and passes the setup method to the driver, as well.
Properties of interest:
reuse (bool)
Whether to try to reuse existing installs/binaries
- solve(specs, out=None, models=0, timers=False, stats=False, tests=False, setup_only=False)[source]¶
- Parameters
specs (list) – List of
Spec
objects to solve for.out – Optionally write the generate ASP program to a file-like object.
models (int) – Number of models to search (default: 0 for unlimited).
timers (bool) – Print out coarse fimers for different solve phases.
stats (bool) – Print out detailed stats from clingo.
tests (bool or tuple) – If True, concretize test dependencies for all packages. If a tuple of package names, concretize test dependencies for named packages (defaults to False: do not concretize test dependencies).
setup_only (bool) – if True, stop after setup and don’t solve (default False).
- solve_in_rounds(specs, out=None, models=0, timers=False, stats=False, tests=False)[source]¶
Solve for a stable model of specs in multiple rounds.
This relaxes the assumption of solve that everything must be consistent and solvable in a single round. Each round tries to maximize the reuse of specs from previous rounds.
The function is a generator that yields the result of each round.
- Parameters
specs (list) – list of Specs to solve.
models (int) – number of models to search (default: 0)
out – Optionally write the generate ASP program to a file-like object.
timers (bool) – print timing if set to True
stats (bool) – print internal statistics if set to True
tests (bool) – add test dependencies to the solve
- class spack.solver.asp.SpackSolverSetup(tests=False)[source]¶
Bases:
object
Class to set up and run a Spack concretization solve.
- build_version_dict(possible_pkgs, specs)[source]¶
Declare any versions in specs not declared in packages.
- condition(required_spec, imposed_spec=None, name=None, msg=None)[source]¶
Generate facts for a dependency or virtual provider condition.
- Parameters
required_spec (spack.spec.Spec) – the spec that triggers this condition
imposed_spec (spack.spec.Spec or None) – the spec with constraints that are imposed when this condition is triggered
name (str or None) – name for required_spec (required if required_spec is anonymous, ignored if not)
msg (str or None) – description of the condition
- Returns
id of the condition created by this function
- Return type
- define_variant_values()[source]¶
Validate variant values from the command line.
Also add valid variant values from the command line to the possible values for a variant.
- define_virtual_constraints()[source]¶
Define versions for constraints on virtuals.
Must be called before define_version_constraints().
- pkg_version_rules(pkg)[source]¶
Output declared versions of a package.
This uses self.declared_versions so that we include any versions that arise from a spec.
- preferred_variants(pkg_name)[source]¶
Facts on concretization preferences, as read from packages.yaml
- setup(driver, specs, reuse=None)[source]¶
Generate an ASP program with relevant constraints for specs.
This calls methods on the solve driver to set up the problem with facts and rules from all possible dependencies of the input specs, as well as constraints from the specs themselves.
- Parameters
driver (PyclingoDriver) – driver instance of this solve
specs (list) – list of Specs to solve
reuse (None or list) – list of concrete specs that can be reused
- spec_clauses(*args, **kwargs)[source]¶
Wrap a call to _spec_clauses() into a try/except block that raises a comprehensible error message in case of failure.
- class spack.solver.asp.SpecBuilder(specs, reuse=None)[source]¶
Bases:
object
Class with actions to rebuild a spec from ASP results.
- external_spec_selected(pkg, idx)[source]¶
This means that the external spec and index idx has been selected for this package.
- ignored_attributes = ['opt_criterion']¶
Attributes that don’t need actions
- reorder_flags()[source]¶
Order compiler flags on specs in predefined order.
We order flags so that any node’s flags will take priority over those of its dependents. That is, the deepest node in the DAG’s flags will appear last on the compile line, in the order they were specified.
The solver determines wihch flags are on nodes; this routine imposes order afterwards.
- exception spack.solver.asp.UnsatisfiableSpecError(msg)[source]¶
Bases:
spack.error.UnsatisfiableSpecError
Subclass for new constructor signature for new concretizer
- spack.solver.asp.ast_sym(node)¶
- spack.solver.asp.ast_type(node)¶
- spack.solver.asp.build_criteria_names(costs, tuples)[source]¶
Construct an ordered mapping from criteria names to costs.
- spack.solver.asp.build_priority_offset = 200¶
Priority offset for “build” criteria (regular criterio shifted to higher priority for specs we have to build)
- spack.solver.asp.check_same_flags(flag_dict_1, flag_dict_2)[source]¶
Return True if flag dicts contain the same flags regardless of order.
- spack.solver.asp.extend_flag_list(flag_list, new_flags)[source]¶
Extend a list of flags, preserving order and precedence.
Add new_flags at the end of flag_list. If any flags in new_flags are already in flag_list, they are moved to the end so that they take higher precedence on the compile line.
- spack.solver.asp.fixed_priority_offset = 100¶
Priority offset of “fixed” criteria (those w/o build criteria)
- spack.solver.asp.high_fixed_priority_offset = 300¶
High fixed priority offset for criteria that supersede all build criteria
- spack.solver.asp.version_origin_fields = ['spec', 'external', 'packages_yaml', 'package_py', 'installed']¶
Order of precedence for version origins. Topmost types are preferred.
- spack.solver.asp.version_origin_str = {0: 'spec', 1: 'external', 2: 'packages_yaml', 3: 'package_py', 4: 'installed'}¶
Look up version precedence strings by enum id
- spack.solver.asp.version_provenance = VersionProvenance(spec=0, external=1, packages_yaml=2, package_py=3, installed=4)¶
Enumeration like object to mark version provenance