-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Build dependency on ppx_sexp_conv
should be runtime dependency?
#11852
Comments
@trefis Any suggestions for the right way to address this? |
What @paurkedal said sounds correct to me indeed, the opam file of these packages should be fixed. |
an excerpt of the META file of
this means that -- as in sexplib v0.9.0 -- a dependency onto base (which cmxa is >6MB (6267306 bytes) in size) is added. with v0.10.0 this is not the case. given that I mostly compile my libraries to MirageOS unikernels, I'm not eager to accept this additional dependency (please see further discussion in mirleft/ocaml-nocrypto#143). if, as proposed in the nocrypto PR/issue by @gasche, a runtime dependency to for any of the packages in the above list which I maintain, I'm instead in favour of adding an upper bound to sexplib* v0.10.0. this is not a good solution because it means a split universe in the opam repository, but I honestly don't understand the motivation behind the added dependencies (maybe @trefis can enlighten us). EDIT: I added upper bounds for otr, tls, x509 in #11880 |
Would |
thanks, earlier discussion (from March 2017 when sexplib v0.9.0 was released with a dependency on base) at https://www.mail-archive.com/mirageos-devel@lists.xenproject.org/msg02638.html |
We did some work to remove the sexplib->Base dependency but didn't consider ppx_sexp_conv. We can remove the latter as well. @hannesm, can you open a ticket on ppx_sexp_conv so that we can track this issue? Regarding this PR, yes, ppx_sexp_conv should definitely be a runtime dependency as well. I think it is safe to always make ppx rewriters be runtime dependencies since they often have runtime libraries. |
which I did in janestreet/ppx_sexp_conv#22 |
I also constrained lots of packages in #11898 with |
BTW, if I understand the meaning of |
@diml nothing should ever be |
(Declaring |
@paurkedal Yeah, I wish I know how to make |
This removes the {build} tag from all ppx dependencies, as ppxs often have runtime libraries and aren't true build-only dependencies, causing spurious build failures after upgrades of ppx packages. See ocaml#11852
@xclerc This issue affects datakit-ci.1.0.0. Should we remove the Apart from that, I can't find any package which in its latest version has a build dependency on |
I'd be fine with a PR removing the {build} flag from all ppx packages. Our experience with dune has shown us it's not a safe flag, and I strongly prefer correctness over minor efficiencies with this repository. |
Thanks for the call, I sent a PR proposal. |
The
ipaddr
package installs aMETA
file with a dependency onppx_sexp_conv.runtime-lib
, butppx_sexp_conv
is only declared a build dependency in opam. This can cause dependent packages to fail building when theipaddr
itself is not rebuilt, due since opam does not know thatppx_sexp_conv
must be rebuilt first. An example is show below.Note that
ipaddr
has a runtime dependency onsexplib
, so theppx_sexp_conv.runtime-lib
may have been an unexpected dependency due to therequires(-ppx_driver) = "ppx_sexp_conv.runtime-lib"
line in theMETA
ofppx_sexp_conv
.My conclusion is that, as things are,
ppx_sexp_conv
must always be a runtime dependency in opam. The following packages listsppx_sexp_conv
as a build dependency:The text was updated successfully, but these errors were encountered: