coq-community / docker-coq

Docker images of the Coq proof assistant (see also: https://github.com/coq-community/docker-coq-action) [maintainers=@erikmd,@himito]

Home Page:https://hub.docker.com/r/coqorg/coq/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

docker pull coqorg/coq:dev fails

mattam82 opened this issue · comments

Currently, I don't know why: coqorg/coq:dev-ocaml-4.07-flambda also fails, but one can get coqorg/coq:dev-ocaml-4.12-flambda

The error is:

Error response from daemon: manifest for coqorg/coq:dev not found: manifest unknown: manifest unknown

AFAIK this has been happening for a while. The workaround is to use the flmabda version as you said.

Well, Coq master doesn't compile anymore with OCaml 4.07 since it now requires OCaml >= 4.09. The dev images needs to be updated.

Hi @mattam82 @Alizter @Zimmi48 @proux01 @palmskog @gares (sorry if I forget usernames)

Indeed, thanks for opening this issue.

To give more feedback: up to now, all docker-coq tags not specifying an ocaml version, like coqorg/coq:8.15 or coqorg/coq:dev:

were bundling two different ocaml switches (typically 4.05.0 and 4.07.1+flambda) by default.

(This was the choice made very earlier, when we devised of the architecture of docker-coq images with @ejgallego and @Zimmi48, but it appeared later on that indeed, it is much simpler and efficient to have 2 different images and pull 1 of them, rather than pulling a bigger image and doing opam switch STH inside. But this choice had been kept partially, for compatibility.)

With the recent end-of-support by coq master for both 4.05.0 and 4.07.1, keeping coqorg/coq:dev available did not make sense anymore w.r.t. the continuous deployment.

So I removed them, in favor of e.g.:

which are still continuously updated at each PR merged in master.

But definitely, the plan is to make such a "short tag" (also known as "default docker-coq tag") available anew for coqorg/coq:dev, with a single switch, for an appropriate ocaml version (the ocaml version chosen in Coq platform for instance), and likewise (for uniformity) for all docker-coq tags.

This requires a non trivial refactoring of images.yml specs and Dockerfile (and it needs to be propagated to mathcomp images and proofgeneral images), which explains why, by lack of time, I wasn't able to do this right away when coq's ocaml-4.07 end-of-support patch was merged.

Anyway, I implemented a large part of it today, and I hope to have all this going live for Monday 🤞, then ideally adding some automation ✨ (to e.g. receive an automatic notification when a new ocaml version is released, impacting docker-coq w.r.t. its ocaml-version policy that had been documented in the wiki).

I'll post anew in this issue when there's some news ^^

The PR that solves this is now merged, and the corresponding pipeline is on-going:

https://gitlab.com/coq-community/docker-coq/-/pipelines/562743090 (parent pipeline)
https://gitlab.com/coq-community/docker-coq/-/pipelines/562745107 (generated child pipeline)

Once it is completed (in ~30'), docker pull coqorg/coq:dev should be OK anew (with 4.13.1+flambda).

Will check mathcomp images afterwards.

Done, and FYI here is the contents of coqorg/coq:dev and coqorg/coq:latest now:

docker run --pull always -it --rm coqorg/coq:dev opam list
dev: Pulling from coqorg/coq
Digest: sha256:ea081a18b9ce454c89b02131b714b8b8b7393404c11abe0bf9f9a49b421a56cf
Status: Image is up to date for coqorg/coq:dev
# Packages matching: installed
# Name               # Installed    # Synopsis
base-bigarray        base
base-threads         base
base-unix            base
conf-findutils       1              Virtual package relying on findutils
conf-gmp             4              Virtual package relying on a GMP lib system installation
coq                  dev            pinned to version dev at git+https://github.com/coq/coq#b7258c31fe740df94f8546f5c7865e55c1be2456
coq-bignums          dev            Bignums, the Coq library of arbitrary large numbers
dune                 3.2.0          pinned to version 3.2.0
num                  1.4            pinned to version 1.4
ocaml                4.13.1         The OCaml compiler (virtual package)
ocaml-config         2              OCaml Switch Configuration
ocaml-option-flambda 1              Set OCaml to be compiled with flambda activated
ocaml-variants       4.13.1+options Official release of OCaml 4.13.1
ocamlfind            1.9.1          pinned to version 1.9.1
opam-depext          1.2.1-1        Install OS distribution packages
zarith               1.12           pinned to version 1.12
docker run --pull always -it --rm coqorg/coq:latest opam list
latest: Pulling from coqorg/coq
Digest: sha256:ea32accfcc73a0a1658adeab33d9a25b6a98df89e6079ade110b411bd43aefe1
Status: Image is up to date for coqorg/coq:latest
# Packages matching: installed
# Name                   # Installed    # Synopsis
base                     v0.14.0        Full standard library replacement 
base-bigarray            base
base-threads             base
base-unix                base
biniou                   1.2.1          Binary data format designed for sp
cmdliner                 1.0.4          Declarative definition of command 
conf-findutils           1              Virtual package relying on finduti
conf-gmp                 4              Virtual package relying on a GMP l
coq                      8.15.2         pinned to version 8.15.2
coq-bignums              8.15.0         Bignums, the Coq library of arbitr
coq-serapi               8.15.0+0.15.0  Serialization library and protocol
cppo                     1.6.9          Code preprocessor like cpp for OCa
csexp                    1.5.1          Parsing and printing of S-expressi
dune                     3.2.0          pinned to version 3.2.0
dune-configurator        3.2.0          Helper library for gathering syste
easy-format              1.3.2          High-level and functional interfac
num                      1.4            pinned to version 1.4
ocaml                    4.07.1         The OCaml compiler (virtual packag
ocaml-compiler-libs      v0.12.4        OCaml compiler libraries repackage
ocaml-config             1              OCaml Switch Configuration
ocaml-secondary-compiler 4.08.1-1       OCaml 4.08.1 Secondary Switch Comp
ocaml-variants           4.07.1+flambda Official release 4.07.1, with flam
ocamlfind                1.9.1          pinned to version 1.9.1
ocamlfind-secondary      1.9.1          Adds support for ocaml-secondary-c
opam-depext              1.2.1-1        Install OS distribution packages
parsexp                  v0.14.2        S-expression parsing library
ppx_derivers             1.2.1          Shared [@@deriving] plugin registr
ppx_deriving             5.2.1          Type-driven code generation for OC
ppx_deriving_yojson      3.6.1          JSON codec generator for OCaml
ppx_import               1.9.1          A syntax extension for importing d
ppx_sexp_conv            v0.14.3        [@@deriving] plugin to generate S-
ppxlib                   0.25.0         Standard library for ppx rewriters
result                   1.5            Compatibility Result module
sexplib                  v0.14.0        Library for serializing OCaml valu
sexplib0                 v0.14.0        Library containing the definition 
stdlib-shims             0.3.0          Backport some of the new stdlib fe
yojson                   1.7.0          Yojson is an optimized parsing and
zarith                   1.12           pinned to version 1.12

FTR, these two images (like all other ones) are mono-switch. As a result, they are around 30% smaller:

docker-coq image compressed size / Docker Hub total size (§)
coqorg/coq:8.15.1 (dual switch) 1.39 GB 4.5 GB
coqorg/coq:8.15.2 (4.07.1+flambda) 979 MB 3.17 GB

(§) the total size (indicated by $ docker images) is the cumulative space taken up by the image and all its parent images, once they are pulled by a docker client, but it should be noted that pulling two similar images that share common layers will involve deduplication.

FWIW:

docker-coq image compressed size / Docker Hub total size
coqorg/coq:dev (4.13.1+flambda) 1.13 GB 2.88 GB

For the list of all available images, see https://hub.docker.com/r/coqorg/coq#supported-tags as usual.

And just FYI, I've just updated the Docker-Coq wiki accordingly:

https://github.com/coq-community/docker-coq/wiki#ocaml-versions-policy