-
Notifications
You must be signed in to change notification settings - Fork 396
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
Dependees not able to link with vendored C library since 2.1, using lang dune 1.8 #3054
Comments
Do you think it would be possibly to port luv to use the |
Yes, however I have to take exception with the idea that this is a specialized setup, as it's the ordinary setup that was supported by Dune until recently that Dune broke in a non-major release. I will update the Luv build system. |
Thanks, I apologize for the frustration and this is absolutely our own fault for not providing a proper mechanism to support this from beginning and leaving users to create their own fragile hacks.
Here, the issue is that we’ve stopped passing the root dir of the library in the include path when linking. Instead, we’re relying on precise specification of library archives using our higher level stanzas (library, foreign_library). In retrospect, we could certainly bring this back and somehow warn users that they should not rely on this in a proper deprecation cycle.
How feasible is it for you to just switch to foreign_library and cut off support for older dune’s? If it’s not feasible, then we’ll reconsider and re-introduce this behavior.
…On Jan 24, 2020, 12:57 PM +0800, Anton Bachin ***@***.***>, wrote:
Yes, however I have to take exception with the idea that this is a specialized setup, as its the ordinary setup that was supported by Dune until recently that Dune broke in a non-major release. I will update the Luv build system.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
It's totally feasible, I wouldn't make any changes in Dune to support Luv. Part of the reason this breaking change is "especially breaking" is that Dune has versioned syntax, so one would be surprised, if subscribing to a syntax less than 2.1, to see this broken by a change in 2.1, especially since older syntax shouldn't have |
Thanks for reporting @aantron. I agree with your interpretation. Let's just say that when it comes to C, there are a lot of ways to organise a project and less established conventions. As a result it's difficult for us to provide a 100% compatibility guarantee. But agreed with @rgrinberg. If it was a problem or too many users were affected, we'd reconsider. |
I'm closing this issue, as IMO nothing needs to be done at this point. Thanks for the discussions! |
Expected Behavior
Actual Behavior
Produces
This works if one inserts
opam install dune.2.0.1
beforemake test-installation
.The
Makefile
target installs Luv, which contains a vendored libuv. It then tries to build a trivial test project against the installed Luv. It is linking the executable in this project that fails.I checked that the compiled
libuv.a
is present in my switch'slib/luv/
directory:This is the same whether using Dune 2.0.1 or 2.1.1.
The main project has
EDIT: the test project has
Specifications
dune
(output ofdune --version
): 2.1.1 (also fails with 2.1.3; 2.1.1 is the minimal available version for which this failure occurs)ocaml
(output ofocamlc --version
) 4.08.0The text was updated successfully, but these errors were encountered: