ocurrent / ocaml-ci

A CI for OCaml projects

Home Page:https://ocaml.ci.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Runners for s390, arm32, x86_32, ppc64 are missing!?

hannesm opened this issue · comments

Hello,

first of all thanks for your work and OCaml-CI service. Back some days ago (Sep 13th 2022), at the latest mirage-crypto release (https://github.com/mirage/mirage-crypto/runs/8338362322), OCaml-CI had various non-amd64 runners.

Now, a fresh OCaml-CI run only lists amd64 and arm64 runners. Is that intentional? It would be great to get the other architectures back (esp. s390 due to endianness, and some 32 bit platform for testing 32bit support).

Thanks a lot,

Hannes

It's not a final answer, but those architectures appear to be unavailable for OCaml 5.0, and so are being eliminated - e.g. https://ci.ocamllabs.io/github/mirage/mirage-crypto/commit/b9414b37752c325295445f1aca0571cf5916cd22/variant/(analysis)#L59-59

The underlying issue is the dependency on num, which doesn't support bytecode-only architectures without a new release.

It's in the same ball-park as issues like #381. We could have a slightly more principled rule, rather than a special case: the package is supposed to install in OCaml 5 (ocaml-ci is of course opinionated about supporting the latest version of OCaml) but the upper-bound could be relaxed when it's the dependencies which are causing the problem. In other words, instead of testing packages on the latest version of OCaml (by architecture) we instead test by the latest version of OCaml supported by their dependencies.

Thanks for your quick reply. I'll wait for a release of num that supports OCaml 5.

And thanks for pointing into the log, I would have never figured that out by myself (I can't find any reason for "eliminated all possibilities", and from the huge list of which packages to install I wouldn't have figured out that num is the one not bytecode-only compatible).

I'd appreciate any work towards "instead of testing packages on the latest version of OCaml (by architecture) we instead test by the latest version of OCaml supported by their dependencies". I'll leave this issue open to serve as a reminder for this -- but feel free to close it if you already put such a feature on your roadmap / in a different issue / decide that it's out of scope for ocaml-ci.

As discussed with @dra27 and @benmandrew there are two issues here that need a solution:

  1. Building on both OCaml 5 and 4.14, since there is a large change between the two versions it might make sense to test for a longer period of time on both. This could be extended to test both 5.1 and 4.14 when the next 5.X version is released.
  2. An improved solver query to make sure we find a solution on all the architectures that are supposed to be supported by the package. If num should build on ppc64 we want to find a solution on that architecture for the most recent version of the compiler supported on that architecture.

For your purposes @hannesm the solution for 2 seems more pressing because you've lost coverage on an architecture that should be tested.

The solution chosen was to attempt to build all architectures on both OCaml 5 and 4.14. This fixes problem 1, but also fixes problem 2 as all architectures work on 4.14. The runners are now visible on mirage-crypto.