environment: allow group of specs with dependencies#51891
environment: allow group of specs with dependencies#51891alalazo merged 32 commits intospack:developfrom
Conversation
|
Looks useful. From a first high-level pass:
Further, I think more work is needed to let users select a particular group for views. Presumably they wanna have the end product in the view and omit the first group (?). What would that look like? Currently, users would have two environments, and care about the view of the second env. |
fe6f26a to
893f783
Compare
* Revert "ci: disable tutorial pipeline (#3249)" * Revert "tutorial stack: use when_possible and bootstrap gcc12 (new container) (#2277)" This commit re-enables the tutorial stack without using `when_possible` which was leading to extremely long multi round concretization times post spack/spack#51796. Although this implementation of the tutorial stack is not technically correct when using compilers as nodes, it'll allow us to continue to ensure that all of the components of the stack build and are not accidentally broken due to a package PR. The long term solution here is to merge spack/spack#51891 which allows for multiple concretization groups in an environment and thus allows us to bootstrap a gcc compiler and then use it to build additional specs in the tutorial. --------- Signed-off-by: Gregory Becker <[email protected]>
1f7ebba to
43dd4a1
Compare
1f14eee to
86d35bb
Compare
|
So, with respect to "unify specs from multiple groups" that is possible, and there is a well defined place to change for that: I would introduce this behavior in a following PR, since the current behavior of included environments is buggy and so would be good to first sort that out, then mimic it with groups. What we'd need is just a way to know which groups are unified and which needs just to be reused. Likewise, I'd keep parallelizing the concretization for another PR. Support for groups in views has been implemented and documented. |
Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
This should break the additional circular imports Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
fdbd4bf to
5be798d
Compare
Signed-off-by: Massimiliano Culpo <[email protected]>
Leftover from refactoring Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
Signed-off-by: Massimiliano Culpo <[email protected]>
2fa6d0f to
76fcd24
Compare
closes #49097
Currently, there are scenarios and use cases that are difficult to express with a single
spack.yamlfile. For instance:These use cases are usually dealt with multiple environments1 or by "abusing" certain concretization strategies2. Both methods are sub-optimal and error prone.
In this PR we solve these kind of issues by allowing named group of specs, as shown in #49097. Each named group of specs:
An example environment using these features is:
The groups can also be used to create tailored views. For instance, an entry like:
will just put specs from the
apps-x86_64_v3group into the view.Benchmark
Trying this PR in spack/spack-packages#3175 already shows:
ml-*-x86_64stacks, when they are unifiedunify:false, which is currently broken ondevelopwhen using theunify:when_possiblehackNotes
This PR requires a bump of the lockfile for environments, from v6 to v7. Nonetheless, to preserve backward compatbility, if the feature is not used Spack will continue to write lockfiles in v6 format, which are undersatood by previous version of Spack.
To do in following PRs
Footnotes
See for instance the
ml-*stack in out public pipelines ↩See the
tutorialpipeline where we useunify:when_possibleto bootstrapgcc@12↩