Conversation
|
@amundson I'm trying to start thinking through the corner cases of this. I think this will need some special handling for extendable packages. Extendable packages we need to be able to write to their prefix to activate extensions, and we can't guarantee that a spack instance can write to locations in an instance with which it is chained. The obvious answer is symlinks from the extendable package to its prefix in the local spack instance, but I don't think that will work. Packages like python get their location at compile time and need the extensions to be there. My current thought is that we will need to add some sort of |
|
Without having read it in detail, this seems to be similar to (EDIT: which can be found at #7081) |
|
|
It sounds like these two features are quite similar. And that Spack Chain can do some thing sthat Spack Stack cannot. @obreitwi Can you think of use cases that Stack Spack would be good for but not Spack Chain? Or is there a way to combine the functionality of the two features into one? I think we should try to avoid maintaining multiple features that do similar things in slightly different ways. |
|
@obreitwi I think that |
|
@obreitwi If |
|
I haven't had much to add to this conversation because I see others recognizing the advantages of the chain approach. However, I think there is one advantage over the stack approach that has not yet been discussed. Can you tell which package came from which repository in Spack Stack? In my chain PR the spack find command has been modified to list the packages in each chained repository separately. |
Yes, absolutely. Plus: In the meantime our approach of Therefore dropping |
|
@amundson, all: I really like this feature. I'll try to do a full review soon. I'd like to get this or something like it integrated.
Awesome, and thanks for the stack PR, too! |
|
@amundson FYI with |
|
Thanks.
Actually, I fixed the flake8 errors yesterday. I somewhat embarrassed that they were there in the first place — I had meant to run flake8 before I submitted the pull request, but I forgot to do so in my rush to get the pull request in before the weekly phone meeting.
------------------------
James Amundson
Head, Scientific Software Infrastructure Department
Scientific Computing Division, Fermilab
+1 (630) 840-2430
On May 14, 2018, at 4:02 PM, healther <[email protected]<mailto:[email protected]>> wrote:
@amundson<https://github.com/amundson> FYI with flake8 on your path you can do spack flake8 locally to reproduce Travis' checks. To get flake8 either do a pip install or spack install py-flake8 && spack activate py-flake8
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#8014 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/AAIi0ffkcoFOY7m0uhx-Yj2VuUa3S7qDks5tyfEBgaJpZM4Txrn6>.
|
|
I would be interested in testing this PR, currently there are conflicts. |
Conflicts: lib/spack/spack/cmd/find.py lib/spack/spack/modules/common.py lib/spack/spack/store.py share/spack/setup-env.sh
Develop chain update
…nly one parent. Actually set the default for parent_install_trees. Don't exit if query on parent is empty.
|
My assumption with this feature is that inside userlike, running spack install with a package that already exists inside systemlike should link the installation from there instead of building the package again. I configure systemlike following the above and install a package, then configure userlike to see the packages inside systemlike by adding to chain_prefixes inside etc/spack/defaults/config.yaml. Now running spack find inside userlike lists the package from systemlike as well. Then I run spack install inside userlike with a package that has a dependency on the package that exists already inside systemlike. I expect spack to display a different behavior than when installing from scratch and link the dependency from systemlike. However, spack will download and build the dependency again inside userlike. Am I misunderstanding the usage of this feature? It should guard against having duplicate packages in different environments like systemlike and userlike, however I have not managed to replicate this behavior. I have used the latest version of this branch and I have also tried to checkout the version from May the 3rd with no success. I am testing using pkgconfig and ncurses, the latter depends on the former. |
@paul-chelarescu my understanding from reading through the PR is that it intends to support this. It may be useful to include the paths for all the Spack installations you are testing with, and the contents of your configuration files if possible. @amundson @gartung I've started looking at this, would you want to chat about it during the Thursday telcon on 6/28? |
|
@paul-chelarescu Try out #8545 |
|
@gartung I am having the same result with that PR as well. |
|
I see the problem. The system-like db is not being linked into the user-like db. When I try linking them I end up with infinite recursions that I am trying to debug. |
|
@scheibelp @tgamblin This PR is broken since commit f202198 was merged. Since then I am unable to find a way to add the parent database without infinite recursion. |
|
I wanted to make sure: should we continue conversation in #8545 or here? |
|
We should move the discussion to #8545 |
…ike spack will links against system-like spack.
|
@paul-chelarescu Can you try #8545 again |
|
@gartung I have and I am still getting the same behavior. Spack does not use the dependencies inside systemlike and instead is building them again. I have added both systemlike and userlike paths to chain_prefixes. |
|
The spack chain configuration has been reworked in |
Note: This pull request is being presented for discussion. At the very least, testing and documentation are required before it can be accepted.
Spack Chain
Spack Chain implements a chain of spack install trees.
Use cases:
installation. The user adds packages to his/her own private spack
installation.
in between the user and system.
additional development area.
Defining the chain:
systemlike.
truncated at the current instance.
Demo:
This demonstration uses my toy repo:
[email protected]:amundsonfnal/metasynrepo.gitTo use it, do:
It contains three packages,
corge, which depends onquux, which dependson
garply.Edit config.yaml to look like the example above.
session 1:
session 2:
session 3: