Hi! The CI of Mtac2 is failing to compile coq.dev from opam. It seems the problem is in the configuration, although I can't see what's wrong. Was there any relevant change lately? Thanks.
do you not run opam update?
:face_palm: sorry for missing that line. I don't understand though, shouldn't it be in the opam description file that it requires 1.10?
I mean, why is opam installing the 1.9?
update fetches an up to date package list (upgrades installs the last known version).
since it's a batch run from a clean machine, that shouldn't be the issue
Hum, I see a docker image. Was it generated recently? because it seems to contain the opam root.
May I ask why you are using a basic OCaml image instead of Docker-Coq?
The coq docker imagine is usually out of date by a day or so and we only allow PRs to be merged that pass CI. This poses a problem for overlays that should to be merged quickly after the corresponding Coq PR is merged. To work around this we rebuild Coq/master for every CI run.
And for that it seemed unnecessary to use the Coq docker image but I guess now we see that the image could still be useful even if we rebuild Coq.
IIUC "opam install -y coq.dev" is installing the wrong zarith and then failing
So that seems a bug in the package as Beta was suggesting.
OTOH, https://travis-ci.org/github/Mtac2/Mtac2/builds/729658147#L441 does not include an opam update, and that seems a bug in the CI script.
if the base image it out of date enough, and coq.dev
upgraded dependencies, then the CI would fail due to the missing opam update
.
separately, Opam does not actually guarantee that it’ll pick the latest applicable zarith
, IME.
I’ve seen opam install coq-stdpp
both upgrade num
and downgrade num
.
so either opam
uses some SAT solver without scoring solutions, or the scoring is buggy.
sent PR for the bug @Beta Ziliani found (untested): https://github.com/coq/opam-coq-archive/pull/1429
I just edited the file from a browser
but why would one need to opam update recently added repositories?
Not the ones you just added, but the main one.
Dunno, but doesn't zarith come from the basic opam repo?
If the opam update is done by the image, and the image is updated by somebody else, that could be fine.
Looking at the log, the point is in particular to run "opam update default"
But if the base image is updated often enough, omitting that might only break in rare cases.
Janno said:
The coq docker imagine is usually out of date by a day or so and we only allow PRs to be merged that pass CI. This poses a problem for overlays that should to be merged quickly after the corresponding Coq PR is merged. To work around this we rebuild Coq/master for every CI run.
Have you considered using a Nix based CI then? Thanks to Cachix, you can still get a pre-built Coq that is as fresh as can be. This is supported by our Travis template here: https://github.com/coq-community/templates
In fact, that wouldn't work for your use case because the OCaml version it uses is too recent for UniCoq + Mtac2 :frown:
@Théo Zimmermann do you have a pointer for the problems about ocaml + unicoq/mtac2 ? (I want to understand if the same can/could apply to Elpi)
@Enrico Tassi that's the doubly linking bug due to the way coq_makefile links , there are a couple of issues in the bug tracker
Regarding docker, it would not be too hard to push a docker image with coq master for each commit, as done with cachix, just needs someone to do it [maybe the most challenging bit is GC of images]
After re-compiling Coq I see that I can't compile Unicoq because of a Dynlink error, is this the problem @Théo Zimmermann ?
I think I found the relevant issue, maybe it's better to discuss the dynlink problem there.
@Théo Zimmermann the wiki says Nix uses OCaml 4.06.1, is that stale?
Oh yes, that's stale sorry about that. The real value is here: https://github.com/coq/coq/blob/master/default.nix#L25
So 4.09.
Beta Ziliani said:
After re-compiling Coq I see that I can't compile Unicoq because of a Dynlink error, is this the problem Théo Zimmermann ?
Yes, that's the issue.
Emilio Jesús Gallego Arias said:
Regarding docker, it would not be too hard to push a docker image with coq master for each commit, as done with cachix, just needs someone to do it [maybe the most challenging bit is GC of images]
Well in fact, we could certainly auto-trigger a build on https://gitlab.com/coq-community/docker-coq every time master
is updated (this was not done initially because the build used to be on Docker Hub). There is no garbage collection issue because this is always overriding the same tag on Docker Hub (tag dev, see https://hub.docker.com/r/coqorg/coq/tags). cc @Erik Martin-Dorel (seems something worth doing)
Since it is coqbot triggering pipelines on our GitLab and it also has access to the coq-community organization, this should work.
OK, I don't understand almost any of all the layers that are in place here, so I'm just stabbing in the air. I'm using now a docker image with OCaml 4.09, and after opam update system
it seems to not have zarith 1.10. Any clues? (log here )
(while at it I also don't understand why locally I do have that version of zarith, with the same version of OCaml, and why I can compile Coq with the former version of zarith)
your docker image uses a static local repo for the default repo, so update does nothing
what does configure say for you locally?
and what coq commit?
hehe configure fails :)
ok, that solves the later half. about the former half, I accept suggestions for docker images
just remove the default repo and use the online one instead
Or just use the base image of Docker-Coq: https://hub.docker.com/r/coqorg/base#supported-tags
The zarith version is the right one.
I'm taking Théo's advice now, although there is no "base" image, but "bare" and it's too bare, so I'm using "latest". Seems to be working.
"base" is the name of the image itself, I was not talking about the tag.
Thanks guys. Now we are facing a different issue now (bors being dead).
Last updated: Sep 09 2024 at 04:02 UTC