-
Notifications
You must be signed in to change notification settings - Fork 696
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
Solver tries to solve for unneeded internal libs: #5413
Comments
I don't think the solver has any support for disabling components or tracking intra-package dependencies yet. It combines all of the libraries and executables' dependencies here: cabal/cabal-install/Distribution/Solver/Modular/IndexConversion.hs Lines 194 to 198 in ff32a4e
It also ignores dependencies on internal libraries: cabal/cabal-install/Distribution/Solver/Modular/IndexConversion.hs Lines 177 to 181 in ff32a4e
#4087 will need to address this issue. |
@Mikolaj this ticket hasn't seen activity in a few years. Any particular circumstances that would cause bumping priority at this time? |
I think you're right, yes, that per-component dependency solving subsumes this. The specific issue where this was biting us was like this:
I think that's a manifestation of this particular ticket, but I agree that the per-component dependency solving should fix it. |
I'm a bit lost. I understand this here issue (#5413), not #6039, is the one that hampers @michaelpj, his team, users of his software, etc. But is #6039 required to solve #5413, or is it one of the ways to solve it, the preferred one being #4087, or do the two overlap somehow and/or perhaps #4087 solves #6039 as well? I'm asking, because I'd like to downgrade the priority of #6039 based on how long ago users expressed interest and how it's related to other tickets. (Of course these are not the only indicators of priority, but given that we are understaffed right now, the cooperation or outright PR creation by users is super important.) |
I think @grayjay tries to say that there is no known easier&faster way to solve either of these than to solve them in principal way by implementing #4087 If it helps, #6039 and #5413 should be listed as related issues in #4087, among ones already there. |
I don't understand the landscape here. #6039 and #4087 look similar to me as an outsider, but I'm unsure if there's actually a significant difference. This issue probably does not represent the root cause: I think @grayjay is right to say that the root cause is one of those two issues. But this issue accurately describes the issue that I see, which is why I posted here. |
I realized that the relationship between the issues is more complex than I described: #4087: This issue describes a large design change to the solver that would fix many issues related to components, including this one. It is partially implemented. #5413: This issue focuses on the solver incorrectly requiring dependencies from unused internal libraries. The problem is more general though and affects all types of components, including the scenario with executables in #5413 (comment). I think that the best solution is to implement the part of #4087 that relates to enabling individual components. #6039: This issue is specifically about the multiple public libraries feature. It overlaps with #4087 but also deals with problems that only affect multilibs, such as the visibility field and allowing one package to depend on multiple installed components from another package. Some parts of #6039 are necessary to implement #5413. |
cabal-plan has an internal lib, which depends on
base-orphans ^>= 0.7
, but main-library doesn't depend on that component. There's also an automatic flag, which could turn out the executable component (which depends on the internal lib).EDIT even explicitly saying
cabal new-build --constraint='cabal-plan -exe'
doesn't help.The text was updated successfully, but these errors were encountered: