ocaml / opam-repository

Main public package repository for opam, the source package manager of OCaml.
https://opam.ocaml.org
Creative Commons Zero v1.0 Universal
517 stars 1.14k forks source link

`opam admin check` #11378

Open AltGr opened 6 years ago

AltGr commented 6 years ago

is an in-progress new command for analysing the repo. Nothing as in-depth as the unfortunately unmaintained "weather service", but we have been hitting problems with dependency cycles recently (https://github.com/ocaml/opam/issues/3213, #11365 ), and those at least are fairly easy to check for.

So here are some preliminary reports for the pleasure of our dear repository maintainer team 😸

Uninstallable packages

These 46 packages were detected as uninstallable (due to missing or conflicting dependencies). They should be fixed, or have no reason to remain in the repository:

async_core.108.00.01 bap.0.9.1 bap.0.9.2 github-jsoo.3.0.0 gpr.1.2.2 gpr.1.3.0 jitsu.0.2 jitsu.0.3.0 mirage-fs-unix.1.0.0 mirage-fs-unix.1.1.0 mirage-net-xen.0.9.0 mirage-net-xen.1.1.0 mirage-net-xen.1.1.1 mirage-net-xen.1.1.2 mirage-net-xen.1.1.3 mirage-net-xen.1.2.0 mirage-net-xen.1.3.0 mirage-net-xen.1.4.0 mirage-net-xen.1.4.1 modelica_ml.0.2.0 ocaml-top.1.0.0 ocaml-top.1.0.1 ocaml-top.1.1.0 ocaml-variants.4.01.0+BER ospec.0.3.0 ox.1.0.0 ox.1.0.1 posixat.v0.9.1 release.1.0.2 sociaml-tumblr-api.0.1.0 stog.0.11.0 stog.0.12.0 topkg-care.0.7.5 topkg-care.0.7.6 topkg-care.0.7.7 topkg-care.0.7.8 topkg-care.0.7.9 topkg-care.0.8.0 topkg-care.0.8.1 utop.1.6 vhd-format.0.7.0 vhd-format.0.7.1 webdav.1.1 xen-block-driver.0.2.3 xen-block-driver.0.2.4 xen-block-driver.0.2.5

These are dependent on the above, so they are also broken:

async.108.00.01 async_extra.108.00.01 async_unix.108.00.01 bap.0.9.3 bap.0.9.4 bap.0.9.6 bap.0.9.7 jitsu-libvirt.0.0.1 jitsu-libxl.0.0.1 jitsu-xapi.0.0.1 mirage-http-xen.1.0.0 mirage-tcpip-xen.0.9.5 stog-writing.0.12.0 vhd-tool.0.7.1 vhd-tool.0.7.2 vhd-tool.0.7.5 vhd-tool.0.7.6 vhd-tool.0.7.7 xen-disk.1.0.2 xen-disk.1.0.3

Additionally, these are uninstallable when --with-test and --with-doc are turned on. Their corresponding dependencies need to be fixed:

bitcoinml.0.2 bitcoinml.0.2.4 dog.0.1.0 functoria.2.2.0 ppx_deriving_yojson.2.0 ppx_deriving_yojson.2.1 secp256k1.0.2.5 secp256k1.0.3.0 secp256k1.0.3.1 secp256k1.0.3.2

And their dependents:

bip32.0.1 functoria-runtime.2.2.0 ketrew.1.1.0 mirage.3.0.5 mirage.3.0.7 mirage.3.0.8 mirage-www.1.0.0 mirage-www.1.0.0 ojs-base.0.2.0

The tool doesn't include explanations for uninstallability at the moment, but just opam install [--with-test] [--with-doc] <uninstallable-package> should give you fairly good explanations.

Dependency cycles

Strong component analysis of the dependency graph provides the following cycles. This doesn't necessarily make the packages uninstallable individually, but can actually lead to worse results, because the solver doesn't detect it, and can return a solution that is then rejected by opam; also note that depopts can lead to cycles, while they don't affect the installability check above:

  * mirage-types (>= 1.1.0 & < 3.0.0), io-page < 1.1.0
  * pa_test (< 109.45.00 | >= 109.53.00 & < 111.08.00), core_kernel (>= 112.01.00 & < 113.24.00)
  * expect < 0.0.3, oasis < 0.3.0

Which amounts to the following broken packages:

core_kernel.112.01.00 core_kernel.112.06.00 core_kernel.112.06.02 core_kernel.112.17.00 core_kernel.112.24.00 core_kernel.112.35.00 core_kernel.113.00.00 expect.0.0.2 io-page.1.0.0 mirage-types.1.1.0 mirage-types.1.1.1 mirage-types.1.1.2 mirage-types.1.1.3 mirage-types.1.2.0 mirage-types.2.0.0 mirage-types.2.0.1 mirage-types.2.1.0 mirage-types.2.1.1 mirage-types.2.2.0 mirage-types.2.3.0 mirage-types.2.5.1 mirage-types.2.6.0 mirage-types.2.8.0 oasis.0.2.0 pa_test.109.34.00 pa_test.109.53.00 pa_test.109.53.02 pa_test.110.01.00

If we add in test/doc dependencies, the situation is much worse currently, as has been noticed already (#11365):

  * mirage-types (>= 1.1.0 & < 3.0.0), io-page < 1.1.0
  * ocaml-compiler-libs, pa_test, ppx_type_conv, sexplib >= v0.9.0, ppx_base, js_of_ocaml, tyxml (< 3.0.0 | >= 3.3.0), utop, odoc, ppx_expect,
    batteries (< 2.0.0 | >= 2.5.0), ppx_driver, biniou, ocamlnet >= 3.6.0, ppx_sexp_conv, ppx_pipebang, core_kernel, lambda-term, async_kernel (>=
    113.33.00 & < v0.9.0), alcotest, ppx_traverse, ppx_ast, ppx_optcomp, rresult >= 0.3.0, bin_prot >= v0.9.0, ppx_tools_versioned, ppx_core (<
    113.24.00 | >= v0.9.0), ppx_fail, qtest (< 2.2 | >= 2.5), ppx_bin_prot, ppx_sexp_message, yojson, ppx_inline_test, octavius, typerep (>= 109.55.02
    & < 113.24.00 | >= v0.9.0), ppx_derivers, expect, ppx_typerep_conv, text >= 0.7, ppx_sexp_value, ppx_bench, ppx_custom_printf, cmdliner >= 1.0.0,
    stringext >= 1.4.0, ppx_here, stdio, camomile, js_of_ocaml-compiler, base64 >= 2.1.2, merlin >= 2.5.0, res >= 5.0.0, result >= 1.3, lwt >= 2.4.3,
    reason, logs, gettext, markup, ANSITerminal >= 0.8, benchmark >= 1.2, bos, ppx_variants_conv, mtime, ppx_fields_conv, topkg, custom_printf (>=
    109.15.00 & != 111.25.00), ppx_compare, fmt >= 0.7.1, ocaml-migrate-parsetree, reason-parser (>= 1.13.0 & != 1.13.3), ppx_let, reactiveData,
    ppx_assert, zed, cppo_ocamlbuild, doc-ock, ppx_jane, pcre >= 7.3.0, oasis (< 0.3.0 | >= 0.4.5), base, easy-format >= 1.3.0, ppx_enumerate,
    jane-street-headers, doc-ock-html, configurator, jbuilder >= 1.0+beta17, merlin-extend, ppx_deriving >= 3.3, ppx_hash, ppx_js_style, lwt_react,
    BetterErrors, uutf >= 0.9.4, fieldslib >= v0.9.0, xmlm >= 1.3.0, ppx_metaquot, fpath, qcheck >= 0.8, doc-ock-xml, ppx_traverse_builtins, astring >=
    0.8.2, variantslib >= v0.9.0, cppo >= 1.6.0, ppx_optional, deriving >= 0.7.1, react >= 1.2.1

Which amounts to the following 669 broken packages :

alcotest.0.1.0 alcotest.0.2.0 alcotest.0.3.0 alcotest.0.3.1 alcotest.0.3.2 alcotest.0.3.3 alcotest.0.4.0 alcotest.0.4.1 alcotest.0.4.2 alcotest.0.4.3 alcotest.0.4.4 alcotest.0.4.5 alcotest.0.4.6 alcotest.0.4.7 alcotest.0.4.8 alcotest.0.4.9 alcotest.0.4.10 alcotest.0.4.11 alcotest.0.5.0 alcotest.0.6.0 alcotest.0.7.0 alcotest.0.7.1 alcotest.0.7.2 alcotest.0.8.0 alcotest.0.8.1 ANSITerminal.0.8 astring.0.8.2 astring.0.8.3 async_kernel.113.33.00 async_kernel.113.33.03 base.v0.9.0 base.v0.9.1 base.v0.9.2 base.v0.9.3 base.v0.9.4 base.v0.10.0 base64.2.1.2 base64.2.2.0 batteries.1.4.3 batteries.1.5.0 batteries.2.5.0 batteries.2.5.2 batteries.2.5.3 batteries.2.6.0 batteries.2.7.0 batteries.2.8.0 benchmark.1.2 benchmark.1.3 benchmark.1.3.1 benchmark.1.4 BetterErrors.0.0.1 bin_prot.v0.9.0 bin_prot.v0.9.1 bin_prot.v0.9.2 bin_prot.v0.10.0 biniou.1.0.5 biniou.1.0.6 biniou.1.0.9 biniou.1.0.12 biniou.1.0.13 biniou.1.1.0 biniou.1.2.0 bos.0.1.0 bos.0.1.1 bos.0.1.2 bos.0.1.3 bos.0.1.4 bos.0.1.5 bos.0.1.6 bos.0.2.0 camomile.0.8.3 camomile.0.8.5 camomile.0.8.6 camomile.0.8.7 cmdliner.1.0.0 cmdliner.1.0.1 cmdliner.1.0.2 configurator.v0.9.0 configurator.v0.9.1 configurator.v0.10.0 core_kernel.109.27.00 core_kernel.109.28.00 core_kernel.109.30.00 core_kernel.109.31.00 core_kernel.109.32.00 core_kernel.109.33.00 core_kernel.109.34.00 core_kernel.109.35.00 core_kernel.109.35.01 core_kernel.109.36.00 core_kernel.109.37.00 core_kernel.109.38.00 core_kernel.109.40.00 core_kernel.109.41.00 core_kernel.109.42.00 core_kernel.109.45.00 core_kernel.109.47.00 core_kernel.109.53.00 core_kernel.109.55.00 core_kernel.109.55.02 core_kernel.109.58.00 core_kernel.109.60.00 core_kernel.110.01.00 core_kernel.111.03.00 core_kernel.111.06.00 core_kernel.111.08.00 core_kernel.111.11.00 core_kernel.111.13.00 core_kernel.111.17.00 core_kernel.111.21.00 core_kernel.111.25.00 core_kernel.111.28.00 core_kernel.112.01.00 core_kernel.112.06.00 core_kernel.112.06.02 core_kernel.112.17.00 core_kernel.112.24.00 core_kernel.112.35.00 core_kernel.113.00.00 core_kernel.113.24.00 core_kernel.113.33.00 core_kernel.113.33.01 core_kernel.113.33.01+4.03 core_kernel.113.33.02+4.03 core_kernel.113.33.03 core_kernel.v0.9.0 core_kernel.v0.9.1 core_kernel.v0.10.0 cppo.1.6.0 cppo.1.6.1 cppo_ocamlbuild.1.6.0 custom_printf.109.15.00 custom_printf.109.27.00 custom_printf.109.27.02 custom_printf.109.60.00 custom_printf.111.03.00 custom_printf.111.21.00 custom_printf.112.01.00 custom_printf.112.06.00 custom_printf.112.17.00 custom_printf.112.24.00 custom_printf.113.00.00 deriving.0.7.1 doc-ock.1.0.0 doc-ock.1.1.0 doc-ock.1.1.1 doc-ock.1.2.0 doc-ock-html.1.0.0 doc-ock-html.1.1.0 doc-ock-html.1.1.1 doc-ock-html.1.2.0 doc-ock-xml.1.0.0 doc-ock-xml.1.1.0 doc-ock-xml.1.2.0 easy-format.1.3.0 easy-format.1.3.1 expect.0.0.2 expect.0.0.3 expect.0.0.4 expect.0.0.6 fieldslib.v0.9.0 fieldslib.v0.10.0 fmt.0.7.1 fmt.0.8.0 fmt.0.8.1 fmt.0.8.2 fmt.0.8.3 fmt.0.8.4 fmt.0.8.5 fpath.0.7.0 fpath.0.7.1 fpath.0.7.2 gettext.0.3.4 gettext.0.3.5 gettext.0.3.7 gettext.0.3.8 io-page.1.0.0 jane-street-headers.v0.9.0 jane-street-headers.v0.10.0 jbuilder.1.0+beta17 js_of_ocaml.1.2 js_of_ocaml.1.3.1 js_of_ocaml.1.3.2 js_of_ocaml.1.4.0 js_of_ocaml.2.0 js_of_ocaml.2.1 js_of_ocaml.2.2 js_of_ocaml.2.3 js_of_ocaml.2.4 js_of_ocaml.2.4.1 js_of_ocaml.2.5 js_of_ocaml.2.6 js_of_ocaml.2.7 js_of_ocaml.2.8 js_of_ocaml.2.8.1 js_of_ocaml.2.8.2 js_of_ocaml.2.8.3 js_of_ocaml.2.8.4 js_of_ocaml.3.0 js_of_ocaml.3.0.1 js_of_ocaml.3.0.2 js_of_ocaml-compiler.3.0 js_of_ocaml-compiler.3.0.1 js_of_ocaml-compiler.3.0.2 lambda-term.1.2 lambda-term.1.4 lambda-term.1.5 lambda-term.1.6 lambda-term.1.7 lambda-term.1.8 lambda-term.1.9 lambda-term.1.10 lambda-term.1.10.1 lambda-term.1.11 lambda-term.1.12.0 logs.0.4.2 logs.0.5.0 logs.0.6.0 logs.0.6.1 logs.0.6.2 lwt.2.4.3 lwt.2.4.4 lwt.2.4.5 lwt.2.4.6 lwt.2.4.7 lwt.2.4.8 lwt.2.5.0 lwt.2.5.1 lwt.2.5.2 lwt.2.6.0 lwt.2.7.0 lwt.2.7.1 lwt.3.0.0 lwt.3.1.0 lwt.3.2.0 lwt.3.2.1 lwt_react.1.0.0 lwt_react.1.0.1 lwt_react.1.1.0 markup.0.5 markup.0.6 markup.0.7 markup.0.7.1 markup.0.7.2 markup.0.7.3 markup.0.7.4 markup.0.7.5 markup.0.7.6 merlin.2.5.0 merlin.2.5.1 merlin.2.5.2 merlin.2.5.3 merlin.2.5.4 merlin.2.5.5 merlin.3.0.0 merlin.3.0.1 merlin.3.0.2 merlin.3.0.3 merlin.3.0.4 merlin.3.0.5 merlin-extend.0.3 mirage-types.1.1.0 mirage-types.1.1.1 mirage-types.1.1.2 mirage-types.1.1.3 mirage-types.1.2.0 mirage-types.2.0.0 mirage-types.2.0.1 mirage-types.2.1.0 mirage-types.2.1.1 mirage-types.2.2.0 mirage-types.2.3.0 mirage-types.2.5.1 mirage-types.2.6.0 mirage-types.2.8.0 mtime.0.8.0 mtime.0.8.1 mtime.0.8.2 mtime.0.8.3 mtime.0.8.4 mtime.1.0.0 mtime.1.1.0 oasis.0.2.0 oasis.0.4.5 oasis.0.4.6 oasis.0.4.7 oasis.0.4.8 oasis.0.4.10 ocaml-compiler-libs.v0.9.0 ocaml-compiler-libs.v0.10.0 ocaml-migrate-parsetree.0.6 ocaml-migrate-parsetree.0.7 ocaml-migrate-parsetree.1.0 ocaml-migrate-parsetree.1.0.1 ocaml-migrate-parsetree.1.0.2 ocaml-migrate-parsetree.1.0.3 ocaml-migrate-parsetree.1.0.4 ocaml-migrate-parsetree.1.0.5 ocaml-migrate-parsetree.1.0.6 ocaml-migrate-parsetree.1.0.7 ocamlnet.3.6.0 ocamlnet.3.6.3 ocamlnet.3.6.5 ocamlnet.3.7.3 ocamlnet.3.7.4 ocamlnet.3.7.4-1 ocamlnet.3.7.5 ocamlnet.3.7.6 ocamlnet.3.7.7 ocamlnet.4.0.1 ocamlnet.4.0.2 ocamlnet.4.0.4 ocamlnet.4.1.2 ocamlnet.4.1.4 ocamlnet.4.1.5 octavius.0.1.0 octavius.0.2.0 octavius.1.1.0 octavius.1.2.0 odoc.1.0.0 odoc.1.1.0 odoc.1.1.1 odoc.1.2.0 pa_test.109.34.00 pa_test.109.45.00 pa_test.109.47.00 pa_test.109.53.00 pa_test.109.53.02 pa_test.110.01.00 pa_test.111.08.00 pa_test.111.08.01 pa_test.112.24.00 pcre.7.3.0 pcre.7.3.2 pcre.7.3.3 pcre.7.3.4 ppx_assert.113.09.00 ppx_assert.113.24.00 ppx_assert.113.33.00 ppx_assert.113.33.03 ppx_assert.v0.9.0 ppx_assert.v0.10.0 ppx_ast.v0.9.0 ppx_ast.v0.9.1 ppx_ast.v0.9.2 ppx_ast.v0.10.0 ppx_base.v0.9.0 ppx_base.v0.10.0 ppx_bench.113.09.00 ppx_bench.113.24.00 ppx_bench.113.33.00 ppx_bench.113.33.00+4.03 ppx_bench.113.33.03 ppx_bench.v0.9.0 ppx_bench.v0.9.1 ppx_bench.v0.10.0 ppx_bin_prot.113.09.00 ppx_bin_prot.113.24.00 ppx_bin_prot.113.24.01 ppx_bin_prot.113.33.00 ppx_bin_prot.113.33.00+4.03 ppx_bin_prot.113.33.03 ppx_bin_prot.v0.9.0 ppx_bin_prot.v0.10.0 ppx_compare.113.09.00 ppx_compare.113.24.00 ppx_compare.113.33.00 ppx_compare.113.33.00+4.03 ppx_compare.113.33.03 ppx_compare.v0.9.0 ppx_compare.v0.10.0 ppx_core.113.09.00 ppx_core.v0.9.0 ppx_core.v0.9.2 ppx_core.v0.9.3 ppx_core.v0.10.0 ppx_custom_printf.113.09.00 ppx_custom_printf.113.24.00 ppx_custom_printf.113.33.00 ppx_custom_printf.113.33.00+4.03 ppx_custom_printf.113.33.03 ppx_custom_printf.v0.9.0 ppx_custom_printf.v0.10.0 ppx_derivers.1.0 ppx_deriving.3.3 ppx_deriving.4.0 ppx_deriving.4.1 ppx_deriving.4.1.5 ppx_deriving.4.2 ppx_deriving.4.2.1 ppx_driver.113.09.00 ppx_driver.113.24.00 ppx_driver.113.33.00 ppx_driver.113.33.00+4.03 ppx_driver.113.33.01+4.03 ppx_driver.113.33.02+4.03 ppx_driver.113.33.03 ppx_driver.113.33.04 ppx_driver.v0.9.0 ppx_driver.v0.9.1 ppx_driver.v0.9.2 ppx_driver.v0.10.0 ppx_driver.v0.10.1 ppx_driver.v0.10.2 ppx_enumerate.113.09.00 ppx_enumerate.113.24.00 ppx_enumerate.113.33.00 ppx_enumerate.113.33.00+4.03 ppx_enumerate.113.33.03 ppx_enumerate.v0.9.0 ppx_enumerate.v0.10.0 ppx_expect.113.24.00 ppx_expect.113.33.00 ppx_expect.113.33.00+4.03 ppx_expect.113.33.01 ppx_expect.113.33.01+4.03 ppx_expect.113.33.03 ppx_expect.v0.9.0 ppx_expect.v0.10.0 ppx_fail.113.09.00 ppx_fail.113.24.00 ppx_fail.113.33.00 ppx_fail.113.33.00+4.03 ppx_fail.113.33.03 ppx_fail.v0.9.0 ppx_fail.v0.10.0 ppx_fields_conv.113.09.00 ppx_fields_conv.113.24.00 ppx_fields_conv.113.33.00 ppx_fields_conv.113.33.00+4.03 ppx_fields_conv.113.33.03 ppx_fields_conv.v0.9.0 ppx_fields_conv.v0.10.0 ppx_hash.v0.9.0 ppx_hash.v0.10.0 ppx_here.113.09.00 ppx_here.113.24.00 ppx_here.113.33.00 ppx_here.113.33.03 ppx_here.v0.9.0 ppx_here.v0.9.1 ppx_here.v0.10.0 ppx_inline_test.113.09.00 ppx_inline_test.113.24.00 ppx_inline_test.113.33.00 ppx_inline_test.113.33.00+4.03 ppx_inline_test.113.33.03 ppx_inline_test.v0.9.0 ppx_inline_test.v0.9.1 ppx_inline_test.v0.9.2 ppx_inline_test.v0.10.0 ppx_jane.113.24.00 ppx_jane.113.24.01 ppx_jane.113.33.00 ppx_jane.113.33.03 ppx_jane.v0.9.0 ppx_jane.v0.10.0 ppx_js_style.v0.9.0 ppx_js_style.v0.10.0 ppx_let.113.24.00 ppx_let.113.33.00 ppx_let.113.33.00+4.03 ppx_let.113.33.03 ppx_let.v0.9.0 ppx_let.v0.10.0 ppx_metaquot.v0.9.0 ppx_metaquot.v0.10.0 ppx_optcomp.113.09.00 ppx_optcomp.113.24.00 ppx_optcomp.113.33.00 ppx_optcomp.113.33.00+4.03 ppx_optcomp.113.33.01+4.03 ppx_optcomp.113.33.03 ppx_optcomp.v0.9.0 ppx_optcomp.v0.10.0 ppx_optional.v0.9.0 ppx_optional.v0.10.0 ppx_pipebang.113.09.00 ppx_pipebang.113.24.00 ppx_pipebang.113.33.00 ppx_pipebang.113.33.00+4.03 ppx_pipebang.113.33.03 ppx_pipebang.v0.9.0 ppx_pipebang.v0.10.0 ppx_sexp_conv.113.09.00 ppx_sexp_conv.113.24.00 ppx_sexp_conv.113.33.00 ppx_sexp_conv.113.33.00+4.03 ppx_sexp_conv.113.33.01+4.03 ppx_sexp_conv.113.33.03 ppx_sexp_conv.v0.9.0 ppx_sexp_conv.v0.10.0 ppx_sexp_message.113.24.00 ppx_sexp_message.113.33.00 ppx_sexp_message.113.33.00+4.03 ppx_sexp_message.113.33.03 ppx_sexp_message.v0.9.0 ppx_sexp_message.v0.10.0 ppx_sexp_value.113.09.00 ppx_sexp_value.113.24.00 ppx_sexp_value.113.33.00 ppx_sexp_value.113.33.00+4.03 ppx_sexp_value.113.33.03 ppx_sexp_value.v0.9.0 ppx_sexp_value.v0.10.0 ppx_tools_versioned.5.0alpha ppx_tools_versioned.5.0beta ppx_tools_versioned.5.0beta1 ppx_tools_versioned.5.0.1 ppx_tools_versioned.5.1 ppx_traverse.v0.9.0 ppx_traverse.v0.10.0 ppx_traverse_builtins.v0.9.0 ppx_traverse_builtins.v0.10.0 ppx_type_conv.113.09.00 ppx_type_conv.113.24.00 ppx_type_conv.113.33.00 ppx_type_conv.113.33.00+4.03 ppx_type_conv.113.33.01+4.03 ppx_type_conv.113.33.02+4.03 ppx_type_conv.113.33.03 ppx_type_conv.v0.9.0 ppx_type_conv.v0.9.1 ppx_type_conv.v0.10.0 ppx_typerep_conv.113.09.00 ppx_typerep_conv.113.24.00 ppx_typerep_conv.113.33.00 ppx_typerep_conv.113.33.00+4.03 ppx_typerep_conv.113.33.03 ppx_typerep_conv.v0.9.0 ppx_typerep_conv.v0.10.0 ppx_variants_conv.113.09.00 ppx_variants_conv.113.24.00 ppx_variants_conv.113.33.00 ppx_variants_conv.113.33.00+4.03 ppx_variants_conv.113.33.03 ppx_variants_conv.v0.9.0 ppx_variants_conv.v0.10.0 qcheck.0.8 qtest.2.0.0 qtest.2.0.1 qtest.2.1.0 qtest.2.1.1 qtest.2.5 qtest.2.6 qtest.2.7 react.1.2.1 reactiveData.0.1 reactiveData.0.2 reactiveData.0.2.1 reason.1.3.0 reason.1.4.0 reason.1.7.4 reason.1.11.0 reason.1.13.0 reason.1.13.2 reason.1.13.3 reason.1.13.4 reason.1.13.5 reason.1.13.6 reason.1.13.7 reason.2.0.0 reason.3.0.0 reason.3.0.3 reason.3.0.4 reason-parser.1.13.0 reason-parser.1.13.2 reason-parser.1.13.4 reason-parser.1.13.5 reason-parser.1.13.6 reason-parser.2.0.0 res.5.0.0 result.1.3 rresult.0.3.0 rresult.0.4.0 rresult.0.5.0 sexplib.v0.9.0 sexplib.v0.9.1 sexplib.v0.9.2 sexplib.v0.9.3 sexplib.v0.10.0 stdio.v0.9.0 stdio.v0.9.1 stdio.v0.10.0 stringext.1.4.0 stringext.1.4.1 stringext.1.4.2 stringext.1.4.3 stringext.1.5.0 text.0.7 text.0.7.1 text.0.8.0 topkg.0.7.5 topkg.0.7.6 topkg.0.7.7 topkg.0.7.8 topkg.0.7.9 topkg.0.8.0 topkg.0.8.1 topkg.0.9.0 topkg.0.9.1 typerep.109.55.02 typerep.111.06.00 typerep.111.17.00 typerep.112.06.00 typerep.112.17.00 typerep.112.24.00 typerep.112.35.00 typerep.113.00.00 typerep.v0.9.0 typerep.v0.10.0 tyxml.2.1 tyxml.2.2.0 tyxml.3.3.0 tyxml.3.4.0 tyxml.3.5.0 tyxml.3.6.0 tyxml.4.0.0 tyxml.4.0.1 tyxml.4.1.0 tyxml.4.2.0 utop.1.2.1 utop.1.3.0 utop.1.4.0 utop.1.5 utop.1.6 utop.1.7 utop.1.8 utop.1.9 utop.1.10 utop.1.11 utop.1.12 utop.1.14 utop.1.15 utop.1.16 utop.1.17 utop.1.18 utop.1.18.1 utop.1.18.2 utop.1.19 utop.1.19.1 utop.1.19.2 utop.1.19.3 utop.2.0.0 utop.2.0.1 utop.2.0.2 uutf.0.9.4 uutf.1.0.0 uutf.1.0.1 variantslib.v0.9.0 variantslib.v0.10.0 xmlm.1.3.0 yojson.1.0.3 yojson.1.1.3 yojson.1.1.6 yojson.1.1.8 yojson.1.2.0 yojson.1.2.1 yojson.1.2.3 yojson.1.3.0 yojson.1.3.1 yojson.1.3.2 yojson.1.3.3 yojson.1.4.0 zed.1.2 zed.1.3 zed.1.4 zed.1.5 zed.1.6

EDIT: fixed (wrong) mentions of cycles leading necessarily to broken packages, and reduced cycles by taking conflicts into account

AltGr commented 6 years ago

Rectification: cycles don't mean the packages are not installable: there might be a cycle between two specific versions a.va and b.vb, which wouldn't be co-installable, but a.va may be installable with other versions of b, and conversely.

AltGr commented 6 years ago

Edited the OP with an update that removes conflicting packages from the cycles.

Cycles are still problems that could manifest on the user side, so the proper fix, if the packages are actually installable, is to mark them as conflicts.

AltGr commented 6 years ago

Update: with the fixed dependency of jbuilder, an enumeration of cycles becomes possible:

These are real issues, that would have been tricky to find otherwise. For example, assuming you have js_of_ocaml.2.6 already installed, building the tests for base64 would become broken:

% opam reinstall --with-test base64
The actions to process have cyclic dependencies:
  - βˆ—  base64.2.1.2 β†’ βˆ—  js_of_ocaml.2.6 β†’ βˆ—  logs.0.6.2 β†’ βˆ—  bos.0.2.0 β†’ βˆ—  base64.2.1.2

This is due to the test dependencies of base64 transitively including logs, which in turn has an optional dependency on js_of_ocaml... which depends on base64. There is no possible order for opam to build these. Note that marking the test dependency to bos in package base64 as {post} would fix the build cycle (but as a result, bos would not actually be available during the tests... maybe in opam 2.1)

avsm commented 4 years ago

@AltGr is this command in opam-2.0.x or will it be in 2.1? @kit-ty-kate is working on an integration of https://github.com/ocurrent/ocaml-ci to replace the current datakit-ci, and so we could integrate this as a scheduled cron task on the master branch.

github-actions[bot] commented 4 years ago

This issue has been open 90 days with no activity. Consequently, it is being marked with the "stale" label. What this means is that the issue will be automatically closed in 30 days unless more comments are added or the "stale" label is removed. If you come across this issue in the future, you may also find it helpful to visit our forum at https://discuss.ocaml.org where queries related to OCaml package management are very welcome.