[opam-devel] 'opam install' fails when it should(?) downgrade packages

Martin Lucina martin at lucina.net
Thu Jul 9 11:03:45 BST 2015


after reinstalling my OPAM installation that I use for working on the
cross-compiled packages for rumprun [1], and thus updating to the latest
OPAM upstream repository I can no longer install mirage drivers
cross-compiled for rumprun:

$ opam install mirage-console-rumprun mirage-unix-rumprun
The following dependencies couldn't be met:
  - ipaddr-rumprun -> sexplib-rumprun -> sexplib = 112.24.01
Your request can't be satisfied:
  - No package matches sexplib.112.24.01.

The requirement for an older sexplib is expected, since my sexplib-rumprun
package has not been updated to the latest version. However, I would expect
'opam install' to resolve this by downgrading sexplib and any dependencies.

If I try to install the older version of sexplib manually, the result is:

The following actions will be performed:
  ↘  downgrade ocamlfind     1.5.5 to 1.5.4          [required by sexplib]
  ∗  install   ounit         1.1.2                   [required by cstruct]
  ↘  downgrade ipaddr        2.5.0 to 1.0.0          [uses ocamlfind]
  ↘  downgrade cmdliner      0.9.7 to 0.9.5          [uses ocamlfind]
  ∗  install   base-bytes    base                    [required by ocplib-endian]
  ↻  recompile ocaml-rumprun 4.02.1                  [uses ocamlfind]
  ↻  recompile camlp4        4.02+6                  [uses ocamlfind]
  ↘  downgrade depext        0.6 to 0.4              [uses cmdliner]
  ↘  downgrade crunch        1.4.0 to 1.0.0          [uses ocamlfind]
  ↗  upgrade   re            1.2.2 to 1.3.2          [uses ocamlfind]
  ↘  downgrade type_conv     112.01.02 to 112.01.00  [required by sexplib]
  ↻  recompile optcomp       1.6                     [uses ocamlfind]
  ↻  recompile lwt           2.4.5                   [uses ocamlfind]
  ↘  downgrade sexplib       112.35.00 to 112.24.01
  ↗  upgrade   ocplib-endian 0.4 to 0.6              [uses ocamlfind]
  ↘  downgrade cstruct       1.6.0 to 1.2.0          [uses ocamlfind]
  ↘  downgrade io-page       1.5.1 to 1.5.0          [uses ocamlfind]
  ↘  downgrade mirage-types  2.3.0 to 2.1.1          [uses sexplib]
  ↘  downgrade mirage        2.5.0+rumprun to 2.1.1  [uses sexplib]

This is not correct either; I can't see anything in the older sexplib that
would cause all of the downgrades above, and the solution is incorrect in
downgrading mirage from 2.5.0+rumprun to 2.1.1.

How can I debug this? Is there a way to get more information from the
dependency solver about why it is choosing the above solution?



[1] https://github.com/mato/opam-rumprun

More information about the opam-devel mailing list