Skip to content

Bound dune < 3.24 on extra-dev packages still using the coq extension - #3802

Merged
JasonGross merged 1 commit into
rocq-prover:masterfrom
JasonGross:dune-324-bounds
Jul 31, 2026
Merged

Bound dune < 3.24 on extra-dev packages still using the coq extension#3802
JasonGross merged 1 commit into
rocq-prover:masterfrom
JasonGross:dune-324-bounds

Conversation

@JasonGross

Copy link
Copy Markdown
Member

dune 3.24 deleted the coq extension, so any project whose dune-project
still contains (using coq X.Y) now fails at dune subst:

Error: Extension coq was deleted in the 3.24 version of the dune language
Hint: ... Use (using rocq <version>) instead.

This is independent of the project's own (lang dune ...) version — I checked
both (lang dune 3.8) and (lang dune 3.13) and they fail alike. dune 3.24.0
and 3.24.1 are in opam-repository, so the solver picks one and the build dies
before anything is compiled.

This is the archive's established remedy, applied where it was missed.
core-dev already carries a < "3.24" bound on 39 recipes; these 38 extra-dev
recipes did not have it.

How the list was built. For every extra-dev/core-dev recipe with both a
dune dependency and a url, I fetched the upstream dune-project at the ref
the url names and checked whether it still uses (using coq ...). 538 opam
files scanned, 173 had a dune dep + url, 40 came back broken. Two of those 40
(rocq-elpi.dev, rocq-micromega-plugin.dev) are already fixed in #3789, so 38
are here. Recipes whose upstream has migrated to (using rocq ...) are
deliberately untouched.

Verification. opam lint --warn=-21 passes on all 38 under the opam 2.1.2
that .gitlab-ci.yml pins. The only complaint anywhere is a pre-existing
synopsis warning 47 on coq-quickchick.dev, which this PR does not touch and
which is a warning, not an error. The fix itself was proven rather than inferred
from the error text: dune subst on coq-elpi master succeeds with dune 3.23.1
and fails with 3.24, and in #3789 the same one-line bound turned
opam-build:4.14.2 and opam-build:5.3.0 from red to green.

What this does not fix. The bound only ensures these packages get a dune that
can still read their dune-project. Several of them may still fail to build
against Rocq dev for source-level reasons, which CI here will now surface for the
first time (before this change they could not get far enough to try). The
durable fix in each case is upstream migrating to (using rocq ...); this bound
is what keeps the archive working until then.

🤖 Generated with Claude Code

https://claude.ai/code/session_01L9BGQT7XUuubV6C619DW4b

dune 3.24 deleted the `coq` extension:

  Error: Extension coq was deleted in the 3.24 version of the dune language
  Hint: ... Use (using rocq <version>) instead.

Any project whose dune-project still contains `(using coq X.Y)` now fails
even at `dune subst`, regardless of its own `(lang dune ...)` version --
verified with both `(lang dune 3.8)` and `(lang dune 3.13)`.  Since
dune 3.24.0/3.24.1 are in opam-repository, the solver picks them and the
build dies before anything is compiled.

core-dev already carries this exact bound on 39 recipes; these 38
extra-dev recipes were missed.  Each was checked by fetching its
upstream dune-project at the ref its `url` names and confirming that it
still uses `(using coq ...)`; packages whose upstream has migrated to
`(using rocq ...)` are deliberately untouched.

`opam lint --warn=-21` passes on all 38 under the opam 2.1.2 that
.gitlab-ci.yml pins (the only pre-existing complaint is a synopsis
warning 47 on coq-quickchick.dev, unchanged by this commit and not an
error).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L9BGQT7XUuubV6C619DW4b
@JasonGross
JasonGross merged commit 8d0101f into rocq-prover:master Jul 31, 2026
2 of 6 checks passed
@JasonGross
JasonGross deleted the dune-324-bounds branch July 31, 2026 19:11
JasonGross added a commit that referenced this pull request Jul 31, 2026
)

Follow-up to #3802, which bounded 38 extra-dev recipes but not these two.

dune 3.24 deleted the `coq` extension:

  File "dune-project", line 2, characters 0-15:
  2 | (using coq 0.8)
  Error: Extension coq was deleted in the 3.24 version of the dune language
  Hint: The Coq Build Language has been replaced by the Rocq Build Language.
  Use (using rocq <version>) instead.

Both upstreams still ship it at the ref their `url` names:
LPCIC/coq-elpi master is `(lang dune 3.13)` + `(using coq 0.8)`, and
rocq-community/micromega-plugin master is `(lang dune 3.8)` + `(using coq 0.8)`.
The extension is rejected regardless of the project's own `(lang dune ...)`
version, so the build dies at `dune subst` before anything is compiled.

Because both are common dependencies, this is currently failing CI on unrelated
pull requests: #3693 (coq-wasm.dev) and #3790 (coq-mathcomp-dioid.dev) both die
with `The compilation of rocq-elpi.dev failed at "dune subst"`.

`opam lint` passes on both files under the opam 2.1.2 that .gitlab-ci.yml pins.


Claude-Session: https://claude.ai/code/session_01L9BGQT7XUuubV6C619DW4b

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant