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
clingo should allow two providers in the same DAG #27157
Comments
I've taken a closer look at this and I think there is a reasonable solution. First, to review the problem, The path for elfutils is:
And for hip and libelf:
Although these are both paths of link dependencies, hpctoolkit doesn't So the solution is:
That is, spack should add I tested this. I removed elf as a virtual package and set everything ping @scheibelp and @alalazo |
(Note: this initial part predates #27157 (comment)) I added this to discuss for tomorrow's meeting (https://github.com/spack/spack/wiki/Telcon%3A-2021-12-15) but a few points:
(This part was written after #27157 (comment)) The modeling of the problem is simpler given #27157 (comment) (but unfortunately still challenging - I think in this case the good news is that we know how to move forward with it): if |
Yes, I'm saying that in this case for hpctoolkit, it's safe to change And yes, eventually there will be harder cases where a package really |
Notes from today's spack meeting.
I (krentel) will investigate this.
As package DAGs grow ever larger, this case will become more common. Note: In a DAG (as opposed to a tree), the LCA need not be unique. In this case of hpctoolkit, (2) can be tested by changing the three
It's likely that (1) will happen before (2) in which case, you'll have Good meeting, thanks @scheibelp ! |
Steps to reproduce
@alalazo Could we rethink the fix from #26718 and #26740 ?
The problem is that the fix breaks another concretization that I need,
namely,
hpctoolkit +rocm
. The problem is that hpctoolkit +rocm hastwo dependencies,
llvm-amdgpu
andhsa-rocr-dev
that both requirespecifically
libelf
, and hpctoolkit requireselfutils
.I understand this is an advanced use case.
elfutils
andlibelf
are both providers for the virtual package
elf
. The originalconcretizer would never allow both of these in the same DAG. But in
this case, the two uses of elf are separate. The part of hpctoolkit
that uses elf does not call ROCM and there is no actual conflict.
Therefore, this should be allowed, at least by some means, even if
hpctoolkit has to sign a waiver that says, "I promise there is no
actual conflict with the two elf providers."
I can see where DAGs get bigger and virtual providers become more
common that this issue will become more common.
ping @becker33 @tgamblin
Error message
I tracked this down to the commit from #26740.
You can see the problem with
spack spec hpctoolkit +rocm
.(I'm leaving out large parts of the output.)
Information on your system
General information
spack debug report
and reported the version of Spack/Python/PlatformThe text was updated successfully, but these errors were encountered: