spack environment: expose a subset of packages to a user#4585
spack environment: expose a subset of packages to a user#4585scheibelp wants to merge 68 commits intospack:developfrom
Conversation
… and writes stop early if an inconcistency is detected
…d the Spec back, all the build deps are present)
…compilers/architectures
…esn't prevent it from appearing multiple times as a dependency)
…package to the context repo if it is already there
…ing them into a yaml and json file)
|
What is the expected timescale of merging this PR? I haven't looked into this PR too deeply yet, but if this can be made compatible with filesystemviews our setup and deployment chain here would get much simpler and more robust. |
@healther this PR is ready and integration with filesystem views is expected in January |
…lop version was just a style change so this keeps the version from this branch.
…add the 'log-parse' command)
|
what is the timescale on merging this? I'd really like to start using this |
|
@healther: Latest September but this will probably be merged much much earlier. |
|
Peter, this is really nice! Sorry it took me a year to get around to looking at it; but in that year, I had everything I needed already built, and I didn't need to really use Spack. I was pleasantly surprised to see that even config scopes had made it into the current version. Here are issues I've found on an initial trial of the system: TODO: Necessary FeaturesThere are features that I consider necessary for my work.
Functionality Issues (Minor)
Bugs
Documentation Issues
TODO: Nice-to-Have FeaturesThese features would be nice, but I can do my work even without them.
|
|
(this doesn't address all of the comments at #4585 (comment), e.g. the part about
A user cannot explicitly add the same top-level package twice. A package may appear in the environment multiple times as a dependency (or once as a top-level package and multiple times as a dependency). In this case when it comes to listing out associated modules, for example, it will report only the first instance of the package (in terms of the order that the user added the specs to the environment).
To be clear, you consider this essential? I'd prefer to add this functionality in a follow-up PR. |
|
On Tue, Apr 17, 2018 at 2:30 PM, scheibelp ***@***.***> wrote:
(this doesn't address all of the comments at #4585 (comment)
<#4585 (comment)>, e.g.
the part about spack setup - still thinking about that)
How can I see the fully concretized spec for a particular spec in an
environment? spack env list xyz only shows the top-level of the DAG.
spack env list --include-deps
perfect!
What is the difference between spack env concretize and spack env relocate?
Why is spack env relocate not called spack env reconcretize?
spack env relocate attempts to preserve all features of the spec dag
other than the operating system and compiler, while spack env concretize
is used to concretize whatever specs the user added. A command like spack
env reconcretize (not currently present) would start again with just the
specs as provided by the user.
Can an environment contain multiple specs that conflict?
A user cannot explicitly add the same top-level package twice. A package
may appear in the environment multiple times as a dependency (or once as a
top-level package and multiple times as a dependency). In this case when it
comes to listing out associated modules, for example, it will report only
the first instance of the package (in terms of the order that the user
added the specs to the environment).
The command spack env create ./c1 should create an environment named c1
in the current directory. Instead, it create
spack/var/spack/environments/c1
These explanations should go in the docs.
To be clear, you consider this essential? I'd prefer to add this
functionality in a follow-up PR.
I consider it a bug. I think I've fond other bugs surrounding environments
outside of the Spack tree. For now, I would consider that feature to be in
need of further testing. In the meantime, you are right: environments
outside the Spack tree are NOT an essential feature.
|
|
One suggestion... consider changing the command format from |
|
I have copied the branch |
|
I would prefer a little bit of refactoring on this PR:
That said, I think it's best to get this merged first before cleaning up code in this way. |
|
I'm having a problem with this PR just creating and installing a simple environment. Am I doing something wrong? (I believe I have fixed this bug; see #7843) |
|
Continued at #7843 |
This implements some of the functionality for a
spack envcommand described at https://github.com/LLNL/spack/wiki/Environments-Road-Map (EDIT:spack contextas discussed in the proposal has since been renamed tospack env).An environment is used to group together a subset of package installs. This description can be used to replicate the installation on other systems. It can also be used to collect the environment modifications necessary to expose that subset of packages to a user.
Example commands: