Treat externals as concrete specs with missing information#36179
Closed
alalazo wants to merge 10 commits intospack:developfrom
Closed
Treat externals as concrete specs with missing information#36179alalazo wants to merge 10 commits intospack:developfrom
alalazo wants to merge 10 commits intospack:developfrom
Conversation
8290595 to
bce59c7
Compare
bce59c7 to
0e6e62b
Compare
1 task
0e6e62b to
84faa4e
Compare
Add "spack external import" command ASP-based solver: install externals from config and reuse them unconditionally Restore the ability to infer a Python interpreter for external extensions
Removed a few regression tests which are not needed anymore: spack#8082 spack#8036 spack#31484
84faa4e to
55e4a07
Compare
Member
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
fixes #24498
fixes #24506
fixes #26034
fixes #28827
fixes #29930
fixes #30911
This draft PR reworks how externals are treated by Spack. The main change is that detecting an external writes directly into the DB:

Externals are inserted in the DB as they are detected, so any missing information stays missing by default. In the picture above, for instance, only
curlwas detected with some variants. They are also inserted as "implicit", so to make it easy to garbage collect them.To deal with existing

packages.yamlconfigurations there is another explicit command, calledimport:Concretization
Preferring externals over new builds is done through the "reuse" mechanism of our solver. Importing externals from
packages.yamlis done automatically just before we concretize a spec, so to be sure we can reuse them. It is also done unconditionally, i.e. we'll reuse externals inpackages.yamleven ifconcretizer:reuse:false. This gives us back a behavior that is very similar to the one indevelop.