From 800ed16e7a3b95b15f831a26b92c753e43934b65 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 17 Jan 2022 09:54:00 -0800 Subject: config: add a new `concretizer` config section The concretizer is going to grow to have many more configuration, and we really need some structured config for that. * We have the `config:concretizer` option that chooses the solver, but extending that is awkward (we'd need to replace a string with a `dict`) and the solver choice will be deprecated eventually. * We have the `concretization` option in environments, but it's not a top-level config section -- it's just for environments, and it also only admits a string right now. To avoid overlapping with either of these and to allow the most extensibility in the future, this adds a new `concretizer` config section that can be used in and outside of environments. There is only one option right now: `reuse`. This can expand to include other options later. Likely, we will soon deprecate `config:concretizer` and warn when the user doesn't use `clingo`, and we will eventually (sometime later) move the `together` / `separately` options from `concretization` into the top-level `concretizer` section. This commit just adds the new section and schema. Fully wiring it up is TBD. --- etc/spack/defaults/concretizer.yaml | 17 +++++++++++++++++ etc/spack/defaults/config.yaml | 11 +++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 etc/spack/defaults/concretizer.yaml (limited to 'etc') diff --git a/etc/spack/defaults/concretizer.yaml b/etc/spack/defaults/concretizer.yaml new file mode 100644 index 0000000000..52200062c8 --- /dev/null +++ b/etc/spack/defaults/concretizer.yaml @@ -0,0 +1,17 @@ +# ------------------------------------------------------------------------- +# This is the default spack configuration file. +# +# Settings here are versioned with Spack and are intended to provide +# sensible defaults out of the box. Spack maintainers should edit this +# file to keep it current. +# +# Users can override these settings by editing +# `$SPACK_ROOT/etc/spack/concretizer.yaml`, `~/.spack/concretizer.yaml`, +# or by adding a `concretizer:` section to an environment. +# ------------------------------------------------------------------------- +concretizer: + # Whether to consider installed packages or packages from buildcaches when + # concretizing specs. If `true`, we'll try to use as many installs/binaries + # as possible, rather than building. If `false`, we'll always give you a fresh + # concretization. + reuse: false diff --git a/etc/spack/defaults/config.yaml b/etc/spack/defaults/config.yaml index eb0d4fc409..d0d3468e8d 100644 --- a/etc/spack/defaults/config.yaml +++ b/etc/spack/defaults/config.yaml @@ -155,14 +155,17 @@ config: # The concretization algorithm to use in Spack. Options are: # - # 'original': Spack's original greedy, fixed-point concretizer. This - # algorithm can make decisions too early and will not backtrack - # sufficiently for many specs. - # # 'clingo': Uses a logic solver under the hood to solve DAGs with full # backtracking and optimization for user preferences. Spack will # try to bootstrap the logic solver, if not already available. # + # 'original': Spack's original greedy, fixed-point concretizer. This + # algorithm can make decisions too early and will not backtrack + # sufficiently for many specs. This will soon be deprecated in + # favor of clingo. + # + # See `concretizer.yaml` for more settings you can fine-tune when + # using clingo. concretizer: clingo -- cgit v1.2.3-60-g2f50