Dear everyone,
in the opam-repository (GitHub - ocaml/opam-repository: Main public package repository for opam, the source package manager of OCaml. // https://opam.ocaml.org) we’ve over the years discussed and settled to an archiving policy - a mechanism to move package versions that are not required anymore to another place (the GitHub - ocaml/opam-repository-archive: Archived packages from the ocaml/opam repository) so that clients, automated tools, etc. have less work to do. The announcement is over on the Caml discource in case you’re interested. (Please note that other approaches, such as using a database inside opam etc. could as well be done, but requires more work (on opam) and releases thereof. The archiving process works nicely with all released opam versions - and thus does not require clients to update.)
Last Friday (June 20th) we went ahead and archived >5000 package versions (see Opam repository archival, phase 3 - Ecosystem - OCaml for the announcement and full list).
It turned out that some rocq projects and automated CI systems rely on old versions of some packages, and were non-functional thereafter. We’re very sorry about that, and want to avoid such breakage in the future while retaining the possibility to archive packages that are otherwise no longer needed.
We have since then re-added both dune in version 3.17.2 (recover dune 3.17.2 for the rocq-community base images by hannesm · Pull Request #28068 · ocaml/opam-repository · GitHub) and several versions of elpi (revive older elpi packages used by coq-elpi by hannesm · Pull Request #28076 · ocaml/opam-repository · GitHub),
If you encounter an issue, an example message is:
[ERROR] Package conflict!
* Missing dependency:
- local-package-foo → local-package-bar → dune = 3.17.2 → dune.3.17.2: no longer available
There are three ways to move forward:
- tell us about your dependencies (open an issue to the opam-repository, please include the package and version, together with a hyperlink where it is used);
- use in your setup the opam-repository-archive as another repository:
opam repository add archive https://github.com/ocaml/opam-repository-archive
- use in your setup the opam-repository before the archiving took place:
opam repo set-url default git+https://github.com/ocaml/opam-repository.git#2025-06-before-archiving-phase3
Since we would like to periodically run the archiving process, we’d really appreciate if you could report the package versions that you rely on, so we can tag them with x-maintained: true
and a comment where it is used.
For what it matters, in terms of numbers: we started 2025 with 33033 opam files in the repository, we’re now down to 17681 opam packages. Some non-scientific benchmark show that the solver time (running opam sw create 5.2.1 --dry-run
) reduced from ~10 seconds to ~3.5 seconds. Thus we consider this a great success, but obviously we would like to avoid any breakage on your side.
Ongoing discussion is happening at the moment at Please keep around old versions of dune · Issue #28065 · ocaml/opam-repository · GitHub - please jump in if you’ve ideas/feedback.
Thanks for reading, have a lovely day.