mirage / ocaml-conduit

Dereference URIs into communication channels for Async or Lwt
ISC License
84 stars 74 forks source link

Cannot install cohttp with latest Core due to conduit #120

Closed Flight310 closed 7 years ago

Flight310 commented 8 years ago

There seems to be a conflict with "conduit" with the latest versions of other packages. This prevents installing the cohttp package (which relies on conduit) with the latest version of other things in opam.

This is preventing installing dependencies for the Real World OCaml book, per instructions here: https://github.com/realworldocaml/book/wiki/Installation-Instructions which is very confusing.

Is there some way you can modify your conduit not to give huge numbers of scary downgrade warnings? For now, I'll simply not install cohttp & conduit. I have installed every other dependency of cohttp without any downgrade warnings.

This seems to be related to the commit here: https://github.com/mirage/ocaml-conduit/commit/4f876e517b0d8ee2a4bdcbad259a8d87bcfe9d60 but it is not explained in the commit notes WHY this restriction was applied.

Many thanks!

$ opam install conduit
The following actions will be performed:
  ⊘  remove    ppx_jane           113.24.01               [uses ppx_expect]
  ∗  install   camlp4             4.02+system             [required by async, cstruct]
  ∗  install   ocplib-endian      0.8                     [required by cstruct]
  ⊘  remove    ppx_sexp_message   113.24.00               [conflicts with ppx_core]
  ⊘  remove    ppx_let            113.24.00               [conflicts with ppx_core]
  ⊘  remove    ppx_expect         113.24.00               [conflicts with fieldslib]
  ∗  install   type_conv          113.00.02               [required by conduit]
  ∗  install   pipebang           113.00.00               [required by async_extra]
  ∗  install   herelib            112.35.00               [required by async_kernel]
  ↻  recompile lwt                2.5.1                   [uses camlp4]
  ↘  downgrade ppx_core           113.24.00 to 113.09.00  [upstream changes]
  ↘  downgrade variantslib        113.24.00 to 109.15.03  [uses camlp4]
  ↘  downgrade sexplib            113.24.00 to 113.00.00  [required by conduit]
  ∗  install   pa_ounit           113.00.00               [required by async_extra]
  ↘  downgrade fieldslib          113.24.00 to 113.00.00  [required by async_extra]
  ∗  install   enumerate          111.08.00               [required by core]
  ∗  install   comparelib         113.00.00               [required by async_rpc_kernel]
  ↘  downgrade bin_prot           113.24.00 to 113.00.00  [required by async_extra]
  ↻  recompile lambda-term        1.9                     [uses lwt]
  ↘  downgrade ppx_optcomp        113.24.00 to 113.09.00  [uses ppx_core]
  ∗  install   pa_structural_sexp 113.00.00               [required by core]
  ∗  install   pa_bench           113.00.00               [required by core]
  ∗  install   custom_printf      113.00.00               [required by core]
  ∗  install   pa_test            112.24.00               [required by async_kernel]
  ↘  downgrade typerep            113.24.00 to 113.00.00  [uses bin_prot]
  ↻  recompile utop               1.18.1                  [uses camlp4]
  ↘  downgrade ppx_driver         113.24.00 to 113.09.00  [upstream changes]
  ↘  downgrade core_kernel        113.24.00 to 113.00.00  [required by async_kernel]
  ↘  downgrade ppx_type_conv      113.24.00 to 113.09.00  [required by ppx_compare]
  ↘  downgrade ppx_pipebang       113.24.00 to 113.09.00  [upstream changes]
  ↘  downgrade ppx_here           113.24.00 to 113.09.00  [upstream changes]
  ↘  downgrade core               113.24.01 to 113.00.00  [required by async_extra]
  ↘  downgrade async_kernel       113.24.00 to 113.00.00  [required by async]
  ↘  downgrade ppx_variants_conv  113.24.00 to 113.09.00  [upstream changes]
  ↘  downgrade ppx_typerep_conv   113.24.00 to 113.09.00  [upstream changes]
  ↘  downgrade ppx_sexp_conv      113.24.00 to 113.09.00  [required by ipaddr]
  ↘  downgrade ppx_inline_test    113.24.00 to 113.09.00  [upstream changes]
  ↘  downgrade ppx_fields_conv    113.24.00 to 113.09.00  [upstream changes]
  ↘  downgrade ppx_enumerate      113.24.00 to 113.09.00  [upstream changes]
  ↘  downgrade ppx_compare        113.24.00 to 113.09.00  [upstream changes]
  ↘  downgrade ppx_bin_prot       113.24.01 to 113.09.00  [upstream changes]
  ↘  downgrade ppx_fail           113.24.00 to 113.09.00  [upstream changes]
  ↘  downgrade textutils          113.24.00 to 112.17.00  [uses camlp4]
  ↘  downgrade re2                113.24.00 to 113.00.00  [uses bin_prot]
  ↘  downgrade async_unix         113.24.00 to 113.00.00  [required by async]
  ↘  downgrade async_rpc_kernel   113.24.00 to 113.00.00  [required by async_extra]
  ↘  downgrade ppx_sexp_value     113.24.00 to 113.09.00  [upstream changes]
  ↘  downgrade ppx_custom_printf  113.24.00 to 113.09.00  [upstream changes]
  ∗  install   ipaddr             2.7.0                   [required by conduit]
  ↘  downgrade ppx_bench          113.24.00 to 113.09.00  [upstream changes]
  ↘  downgrade ppx_assert         113.24.00 to 113.09.00  [upstream changes]
  ↘  downgrade core_bench         113.24.00 to 112.35.00  [uses bin_prot]
  ↘  downgrade core_extended      113.24.00 to 113.00.00  [uses bin_prot]
  ↘  downgrade async_extra        113.24.00 to 113.00.00  [required by async]
  ↘  downgrade async              113.24.00 to 113.00.00  [required by conduit]
  ∗  install   cstruct            1.9.0                   [required by conduit]
  ↻  recompile async_graphics     0.5.1                   [uses async]
  ∗  install   conduit            0.10.0                
===== ∗  15   ↻  4   ↘  35   ⊘  4 =====
Do you want to continue ? [Y/n] n

$ opam list
# Installed packages for system:
alcotest               0.4.7  Alcotest is a lightweight and colourful test framework.
async              113.24.00  Monadic concurrency library
async_extra        113.24.00  Monadic concurrency library
async_graphics         0.5.1  Async wrapper for the OCaml Graphics library
async_kernel       113.24.00  Monadic concurrency library
async_rpc_kernel   113.24.00  Platform-independent core of Async RPC library
async_unix         113.24.00  Monadic concurrency library
base-bigarray           base  Bigarray library distributed with the OCaml compiler
base-bytes              base  Bytes library distributed with the OCaml compiler
base-ocamlbuild         base  OCamlbuild binary and libraries distributed with the OCaml compiler
base-threads            base  Threads library distributed with the OCaml compiler
base-unix               base  Unix library distributed with the OCaml compiler
base64                 2.0.0  Base64 encoding and decoding library
bin_prot           113.24.00  A binary protocol generator
biniou                 1.0.9  Binary data format designed for speed, safety, ease of use and backwar
camomile               0.8.5  A comprehensive Unicode library
cmdliner               0.9.8  Declarative definition of command line interfaces for OCaml
core               113.24.01  Industrial strength alternative to OCaml's standard library
core_bench         113.24.00  Benchmarking library
core_extended      113.24.00  Extra components that are not as closely vetted or as stable as Core
core_kernel        113.24.00  Industrial strength alternative to OCaml's standard library
cppo                   1.3.1  Equivalent of the C preprocessor for OCaml programs
cryptokit               1.10  Cryptographic primitives library. 
easy-format            1.2.0  High-level and functional interface to the Format module of the OCaml 
fieldslib          113.24.00  Syntax extension to define first class values representing record fiel
lambda-term              1.9  Terminal manipulation library for OCaml
lwt                    2.5.1  A cooperative threads library for OCaml
magic-mime             1.0.0  Convert file extensions to MIME types
menhir              20151112  LR(1) parser generator
ocamlbuild                 0  Build system distributed with the OCaml compiler since OCaml 3.10.0
ocamlfind              1.5.6  A library manager for OCaml
ounit                  2.0.0  Unit testing framework loosely based on HUnit. It is similar to JUnit,
ppx_assert         113.24.00  Assert-like extension nodes that raise useful errors on failure
ppx_bench          113.24.00  Syntax extension for writing in-line benchmarks in ocaml code
ppx_bin_prot       113.24.01  Generation of bin_prot readers and writers from types
ppx_compare        113.24.00  Generation of comparison functions from types
ppx_core           113.24.00  Standard library for ppx rewriters
ppx_custom_printf  113.24.00  Printf-style format-strings for user-defined string conversion
ppx_deriving             3.1  Type-driven code generation for OCaml >=4.02
ppx_driver         113.24.00  Feature-full driver for OCaml AST transformers
ppx_enumerate      113.24.00  Generate a list containing all values of a finite type
ppx_expect         113.24.00  Cram like framework for OCaml
ppx_fail           113.24.00  Add location to calls to failwiths
ppx_fields_conv    113.24.00  Generation of accessor and iteration functions for ocaml records
ppx_here           113.24.00  Expands [%here] into its location
ppx_inline_test    113.24.00  Syntax extension for writing in-line tests in ocaml code
ppx_jane           113.24.01  Standard Jane Street ppx rewriters
ppx_let            113.24.00  Monadic let-bindings
ppx_optcomp        113.24.00  Optional compilation for OCaml
ppx_pipebang       113.24.00  A ppx rewriter that inlines reverse application operators `|>` and `|!
ppx_sexp_conv      113.24.00  Generation of S-expression conversion functions from type definitions
ppx_sexp_message   113.24.00  A ppx rewriter for easy construction of s-expressions
ppx_sexp_value     113.24.00  A ppx rewriter that simplifies building s-expressions from ocaml value
ppx_tools             0.99.3  Tools for authors of ppx rewriters and other syntactic tools
ppx_type_conv      113.24.00  Support Library for type-driven code generators
ppx_typerep_conv   113.24.00  Generation of runtime types from type declarations
ppx_variants_conv  113.24.00  Generation of accessor and iteration functions for ocaml variant types
re                     1.5.0  RE is a regular expression library for OCaml
re2                113.24.00  OCaml bindings for RE2, Google's regular expression library
react                  1.2.0  Declarative events and signals for OCaml
result                   1.1  Compatibility Result module
sexplib            113.24.00  Library for serializing OCaml values to and from S-expressions
stringext              1.4.0  Extra string functions for OCaml
textutils          113.24.00  Text output utilities
typerep            113.24.00  typerep is a library for runtime types.
uri                   1.3.12  RFC3986 URI/URL parsing library
utop                  1.18.1  Universal toplevel for OCaml
variantslib        113.24.00  Part of Jane Street's Core library
yojson                 1.3.1  Yojson is an optimized parsing and printing library for the JSON forma
zed                      1.4  Abstract engine for text edition in OCaml

$ opam switch
--     -- 3.07    Official 3.07 release
--     -- 3.08.0  Official 3.08.0 release
--     -- 3.08.1  Official 3.08.1 release
--     -- 3.08.2  Official 3.08.2 release
--     -- 3.08.3  Official 3.08.3 release
--     -- 3.08.4  Official 3.08.4 release
--     -- 3.09.0  Official 3.09.0 release
--     -- 3.09.1  Official 3.09.1 release
--     -- 3.09.2  Official 3.09.2 release
--     -- 3.09.3  Official 3.09.3 release
--     -- 3.10.0  Official 3.10.0 release
--     -- 3.10.1  Official 3.10.1 release
--     -- 3.10.2  Official 3.10.2 release
--     -- 3.11.0  Official 3.11.0 release
--     -- 3.11.1  Official 3.11.1 release
--     -- 3.11.2  Official 3.11.2 release
--     -- 3.12.0  Official 3.12.0 release
--     -- 3.12.1  Official 3.12.1 release
--     -- 4.00.0  Official 4.00.0 release
--     -- 4.00.1  Official 4.00.1 release
--     -- 4.01.0  Official 4.01.0 release
--     -- 4.02.0  Official 4.02.0 release
--     -- 4.02.1  Official 4.02.1 release
--     -- 4.02.2  Official 4.02.2 release
--     -- 4.02.3  Official 4.02.3 release
system  C system  System compiler (4.02.3)
#121 more patched or experimental compilers, use '--all' to show
rgrinberg commented 8 years ago

I wonder if we should just move conduit + cohttp to ppx to avoid all this headache.

@ivg are you ok with that?

ivg commented 8 years ago

@rgrinberg, I can only dream about this!

rgrinberg commented 8 years ago

@ivg OK, then we need to heckle the TLS devs first.

vbmithr commented 8 years ago

Obviously need to move cohttp and conduit to ppx!

rgrinberg commented 8 years ago

@vbmithr already done!

Need to release conduit though.

vbmithr commented 8 years ago

Well done. Actually I was able to install latest cohttp, conduit has not been yet released but not a problem :) Thanks!

hcarty commented 8 years ago

It looks like this is preventing conduit/cohttp from being installable through opam under 4.03.0.

rgrinberg commented 8 years ago

@hcarty will release this weekend

hcarty commented 8 years ago

@rgrinberg :+1:

rgrinberg commented 8 years ago

new version of conduit was released. this is no longer an issue.

vbmithr commented 7 years ago

I use cohttp with latest Core everyday. Closing.