-
Notifications
You must be signed in to change notification settings - Fork 547
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
End the suffering, turn back on implicit_transitive_deps
#14787
Conversation
!ci-build-me |
Our dune deps could be so pretty... |
I get it ended up being too much pain, and not worth the benefit, but could you include a few bullet points at the top about why it ended up being a mistake so we have a record of it? Here's the original issue on it: |
!ci-build-me |
As a quick example of the pain, a recent change I introduced to wire types required changing exactly It also makes it challenging to figure out which libraries are actually in use for a given library- and leads to cargo-culting huge library lists that may not even be precise anymore. |
!ci-build-me |
!approved-for-mainnet |
This was a mistake, and we have now learned from it :)
Context:
We had hoped that this option would get dune to warn us when we were underspecifying our dependencies. In particular, since dune is able to infer the transitive dependencies, it has all the information that we need. However, in practice this is implemented in a way that's very inconvenient to use:
core -> core_kernel -> base -> base.caml
), which makes our external dependencies unnecessarily and unhelpfully verbose;A.t = B.t = C.t = int * bool
, the error will report thatA.t
is abstract even whenB
orC
are the missing libraries.The correct approach is to add a mode for dune to check the (local/workspace) dependency enumeration, using its internal tracking; this is explicitly not done here.