spack install: simplify behavior when inside environments (#35206)

Example one:

```
spack install --add x y z
```

is equivalent to

```
spack add x y z
spack concretize
spack install --only-concrete
```

where `--only-concrete` installs without modifying spack.yaml/spack.lock

Example two:

```
spack install
```

concretizes current spack.yaml if outdated and installs all specs.

Example three:

```
spack install x y z
```

concretizes current spack.yaml if outdated and installs *only* concrete
specs in the environment that match abstract specs `x`, `y`, or `z`.
This commit is contained in:
Harmen Stoppels
2023-03-20 13:51:30 +01:00
committed by GitHub
parent 7e981d83fd
commit 88d78025a6
4 changed files with 185 additions and 219 deletions

View File

@@ -19,11 +19,11 @@ SPACK_INSTALL_FLAGS ?=
{% endif %}
# The spack install commands are of the form:
# spack -e my_env --no-add --only=package --only=concrete /hash
# spack -e my_env --only=package --only=concrete /hash
# This is an involved way of expressing that Spack should only install
# an individual concrete spec from the environment without deps.
{{ install_target }}/%: | {{ dirs_target }}
{{ jobserver_support }}$(SPACK) -e '{{ environment }}' install $(SPACK_BUILDCACHE_FLAG) $(SPACK_INSTALL_FLAGS) --only-concrete --only=package --no-add /$(HASH) # $(SPEC)
{{ jobserver_support }}$(SPACK) -e '{{ environment }}' install $(SPACK_BUILDCACHE_FLAG) $(SPACK_INSTALL_FLAGS) --only-concrete --only=package /$(HASH) # $(SPEC)
@touch $@
{{ install_deps_target }}/%: | {{ dirs_target }}