Skip to content
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

opam admin check #11378

Closed
AltGr opened this issue Feb 8, 2018 · 8 comments
Closed

opam admin check #11378

AltGr opened this issue Feb 8, 2018 · 8 comments

Comments

@AltGr
Copy link
Member

AltGr commented Feb 8, 2018

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 (ocaml/opam#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
Copy link
Member Author

AltGr commented Feb 8, 2018

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
Copy link
Member Author

AltGr commented Feb 8, 2018

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 added a commit to OCamlPro/opam that referenced this issue Feb 8, 2018
@AltGr
Copy link
Member Author

AltGr commented Feb 9, 2018

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

  • Without doc and tests:
    * io-page = 1.0.0 → mirage-types (>= 1.1.0 & < 3.0.0)
    * core_kernel (>= 112.01.00 & < 113.24.00) → pa_test (< 109.45.00 | >= 109.53.00 & < 111.08.00)
    * expect = 0.0.2 → oasis = 0.2.0
    
  • With doc and tests:
    * io-page = 1.0.0 → mirage-types (>= 1.1.0 & < 3.0.0)
    * js_of_ocaml (>= 2.6 & < 3.0) → base64 >= 2.1.2 → bos → logs = 0.4.2
    * logs >= 0.5.0 → js_of_ocaml (>= 2.6 & < 3.0) → base64 >= 2.1.2 → bos
    * js_of_ocaml (>= 2.6 & < 3.0) → base64 >= 2.1.2 → bos → mtime
    * js_of_ocaml (>= 2.6 & < 3.0) → base64 >= 2.1.2 → bos → logs = 0.4.2
    * logs >= 0.5.0 → mtime → js_of_ocaml (>= 2.6 & < 3.0) → base64 >= 2.1.2 → bos
    * mtime → js_of_ocaml (>= 2.6 & < 3.0) → base64 >= 2.1.2 → bos
    * core_kernel (>= 112.01.00 & < 113.24.00) → pa_test (< 109.45.00 | >= 109.53.00 & < 111.08.00)
    * expect = 0.0.2 → oasis = 0.2.0
    * oasis = 0.2.0 → expect >= 0.0.4 → batteries (>= 2.5.0 & < 2.7.0) → qtest < 2.2
    

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)

AltGr added a commit to AltGr/opam-repository that referenced this issue Feb 12, 2018
follow-up from ocaml#11378. If nobody can install them, no point in keeping them in the repo!
AltGr added a commit to AltGr/opam-repository that referenced this issue Feb 13, 2018
follow-up from ocaml#11378. If nobody can install them, no point in keeping them in the repo
@github-actions github-actions bot added the Stale label Apr 21, 2020
@avsm avsm added enhancement and removed Stale labels Apr 21, 2020
@avsm
Copy link
Member

avsm commented Apr 21, 2020

@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
Copy link
Contributor

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.

@github-actions github-actions bot added the Stale label Jul 20, 2020
@avsm avsm removed the Stale label Jul 20, 2020
@github-actions github-actions bot added the Stale label Oct 18, 2020
@ocaml ocaml deleted a comment from github-actions bot Oct 18, 2020
@mseri mseri removed the Stale label Oct 18, 2020
@github-actions github-actions bot added the Stale label Jan 16, 2021
@kit-ty-kate kit-ty-kate reopened this Feb 15, 2021
@kit-ty-kate kit-ty-kate reopened this Mar 17, 2021
@kit-ty-kate kit-ty-kate reopened this Apr 16, 2021
@kit-ty-kate kit-ty-kate removed the Stale label Apr 16, 2021
@ocaml ocaml deleted a comment from github-actions bot Apr 16, 2021
@ocaml ocaml deleted a comment from github-actions bot Apr 16, 2021
@github-actions github-actions bot added the Stale label Jul 15, 2021
@ocaml ocaml deleted a comment from github-actions bot Jul 16, 2021
@mseri mseri removed the Stale label Jul 16, 2021
@mseri mseri added the persist label Jul 28, 2021
@hannesm
Copy link
Member

hannesm commented Jan 6, 2025

I am not entirely sure which action should be taken on this issue, or whether it should be closed.

I agree that the current based opam-repo-ci could do more: an uninstallability check, and also a cycle check.

But I'm not sure whether this should be tracked in the opam-repository as an issue here. Any opinions?

@kit-ty-kate
Copy link
Member

I agree that the current based opam-repo-ci could do more: an uninstallability check, and also a cycle check.

But I'm not sure whether this should be tracked in the opam-repository as an issue here. Any opinions?

i believe those are tracked by ocurrent/opam-repo-ci#118 and ocurrent/opam-repo-ci#69 so it's probably fine to close this ticket

@hannesm
Copy link
Member

hannesm commented Jan 6, 2025

Closing, if there's still something to keep this open please don't hesitate to comment and reopen.

@hannesm hannesm closed this as completed Jan 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants