ocurrent / ocaml-ci

A CI for OCaml projects
https://ocaml.ci.dev
111 stars 74 forks source link

ocaml CI fails when a tested package transitively depends on another one. #954

Open panglesd opened 1 month ago

panglesd commented 1 month ago

Context

Suppose you want ocaml-ci to test a repo containing two packages: A and B

Now, suppose that B depends on E, which depends on A.

OCaml-CI will pin "empty" versions of A and B, and then install dependencies of both A and B. This includes C, which will fail as its A dependency is actually empty.

Step(s) to reproduce

It happened in the odoc case. Here is the run:

https://ocaml.ci.dev/github/ocaml/odoc/commit/f759ba1cbc243ec25dfd195b61f0b7479d2043bd/variant/debian-12-5.2_opam-2.1#L31-31

Expected behaviour

The package C should be installable. This means installing it after the true versions of A and B are present.

Remarks

If there is a workaround this, let us know!

punchagan commented 1 month ago

Thanks for the bug report.

So, if I understand correctly, here we have odoc and odoc-driver packages that are being tested, and odoc-driver pin-depends on sherlodoc, which requires odoc. The build fails on ocaml-ci given how we install the dependencies in the Docker image used for testing.

Now, suppose that B depends on E, which depends on A.

I guess you mean B depends on C, not E?

If there is a workaround this, let us know!

I'm not aware of a workaround for this, as of now. But may be someone else more familiar with OCaml CI may be help you with this. I'll ask around!

panglesd commented 1 month ago

If I understand correctly, you understand correctly!

I guess you mean B depends on C, not E?

Yes, sorry for the confusion!