-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Spack Bug : Adding Explicit Dependency to Package Can Make it Unusable by Dependents #1559
Comments
@becker33 The fact that Spack doesn't take into account already installed packages is what forces him to specify the variants every time:
It sounds to me like this is a completely different problem. Even when he specifies the variants manually, he is getting two different specs, one with python and one without. Because of this, he is unable to install visit. @mathstuf You may want to take a look at this. It looks like a deptype problem to me. From my understanding, the problem is that when you build qt, the libxcb dependency has a build dependency on Python. But when you build VisIt, it has a normal dependency on Python. That's why the hashes are the same but the spec is different. |
could be related to #1457 (comment) or #1409 |
maybe a more general question and suggested solution: when there is a DAG with a package that is used differently (
? So if |
@becker33 @tgamblin could you please comment on #1559 (comment) (comment above)? It appears to be a bug in logic which could solve several issues. |
@tgamblin: I'll rebase on develop and give it a shot sometime this afternoon. |
@tgamblin: It turns out that there are some merge conflicts I have to get through before I can reproduce this. I'm going to finalize #1455 and retest this as part of that update. As a quick note, I don't suspect that this issue will be fixed by #1409 and #1692 because it deals more with dependency types and how they interact with dependency resolution in complicated graphs than dependency ordering. |
@tgamblin: It looks like #1409 and #1692 helped eliminate problems with same package hash conflicts (i.e. |
@tgamblin: I'll test it out sometime later today or tomorrow and I'll let you know. |
@xjrc: thanks! |
Wasn't able to get to this last week since I was a bit busy, but I'm taking a look at it now. Setting this test up takes a while, but I should have a response in a few hours. |
@tgamblin: Unfortunately, I wasn't able to perform a clean test for this because a number of the dependencies for
Since it looks like the dependency type differences for |
Thanks @xjrc! |
Since Spack currently always uses the default version of a dependency during spec normalization, I often add explicit dependencies to packages on install to prevent unnecessary package installs. For example, if I need to install
a^b+debug
andc^b
, I'll typically installa^b+debug
andc^b+debug
to prevent an unnecessary install ofb~debug
. Unfortunately, I've found that doing this can make packages unusable as dependencies by other packages.In the error case that I was able to find, I wanted to install the following set of packages in an empty Spack repository:
qt@4.8.6+webkit
vtk@6.1.0~opengl2
, which depends onqt
visit@2.10.2
, which depends onqt@4.8.6
andvtk@6.1.0~opengl2
In order to prevent redundant installs, I attempted to install each of the Qt-dependent packages with an explicit
^qt@4.8.6+webkit
dependency in the order listed above. This caused thevisit@2.10.2
install to attempt to install a new instance ofvtk@6.1.0~opengl2
that required new instances of thelibxcb
andqt
packages. I haven't allowed this newvtk@6.1.0~opengl2
to fully install yet, but I found that thelibxcb
installed in this way has a different hash than thelibxcb
installed throughqt@4.8.6+webkit
but is otherwise identical (even querying either one of the hashes withspack find
yields both installs).I also tried to install
visit@2.10.2 ^"/pidklxj" ^qt@4.8.6+webkit
(where/pidklxj
is the hash for thevtk@6.1.0~opengl2 ^qt@4.8.6+webkit
install), but encountered the following error:It's apparent in this output that the installs are pretty much identical with the only real difference being the
libxcb
dependency, which isn't as fully filled out in the second case sincepython
is included earlier in thevisit@2.10.2
dependency list.@tgamblin, @becker33: Is this difference in how the specification is being filled out causing these problems? If not, what else do you suppose could be causing this problem? Thanks in advance to all that provide input.
The text was updated successfully, but these errors were encountered: