Bootstrap most of Spack dependencies using environments (#34029)

This commit reworks the bootstrapping procedure to use Spack environments 
as much as possible.

The `spack.bootstrap` module has also been reorganized into a Python package. 
A distinction is made among "core" Spack dependencies (clingo, GnuPG, patchelf)
and other dependencies. For a number of reasons, explained in the `spack.bootstrap.core`
module docstring, "core" dependencies are bootstrapped with the current ad-hoc
method. 

All the other dependencies are instead bootstrapped using a Spack environment
that lives in a directory specific to the interpreter and the architecture being used.
This commit is contained in:
Massimiliano Culpo
2022-12-06 11:54:02 +01:00
committed by GitHub
parent e550665df7
commit 4c05fe569c
26 changed files with 1531 additions and 1154 deletions

View File

@@ -0,0 +1,34 @@
# This environment contains Spack non-core dependencies for the
# following configuration
#
# Python spec: {{ python_spec }}
# Python interpreter: {{ python_prefix }}
# Architecture: {{ architecture }}
#
spack:
specs:
{% for spec in environment_specs %}
- "{{ spec }}"
{% endfor %}
view: {{ environment_path }}/view
config:
install_tree:
root: {{ store_path }}
packages:
python:
buildable: false
externals:
- spec: "{{ python_spec }}"
prefix: "{{ python_prefix }}"
py-typed-ast:
require: "+wheel"
py-platformdirs:
require: "+wheel"
concretizer:
reuse: false
unify: true