docs CI: re-clone OrdinaryDiffEq fresh in env setup (fix master Documentation build)#870
Merged
ChrisRackauckas merged 2 commits intoJun 16, 2026
Conversation
…heckout)
The master Documentation build failed at "Set up environment" with
`empty intersection between OrdinaryDiffEq@6.111.0 and project compatibility 7`.
`Pkg.develop("OrdinaryDiffEq")` reuses an existing `~/.julia/dev/OrdinaryDiffEq`
rather than re-cloning, and the self-hosted runner had a stale 6.111.0 checkout
left by an earlier run, which conflicts with the docs `OrdinaryDiffEq = "7"` compat.
OrdinaryDiffEq master is 7.0.0, so a fresh clone resolves it.
Remove any stale dev checkout before `Pkg.develop` so master is always cloned fresh,
making the build robust to leftover runner state.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The full Documentation build (now that env-setup is fixed) failed on two things: 1. `:example_block` — the AlgebraicMultigrid preconditioner blocks in advanced_ode_example.md crash with `ArgumentError: invalid argument SciML#4 to LAPACK call` (gesdd!). The runner resolves AlgebraicMultigrid v1.x, whose default `Pinv` coarse solver forms a dense pseudo-inverse via SVD that fails on the non-SPD `W = I - γJ`. Use a direct sparse-LU coarse solver instead (`coarse_solver = AlgebraicMultigrid.LinearSolveWrapper(LS.UMFPACKFactorization())`), which exists in both AMG 1.x and 2.x and avoids the SVD path entirely. 2. `:linkcheck` — add two URLs to `linkcheck_ignore`: - github.com/SciML/LinearSolve.jl (linkcheck got HTTP 429 / rate-limited) - mathworks.com/.../nonnegative-ode-solution.html (HTTP 403 / bot-blocked, like the other mathworks links already ignored). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This was referenced Jun 16, 2026
ChrisRackauckas
added a commit
that referenced
this pull request
Jun 16, 2026
…fix) (#872) * docs: build against released (registry) OrdinaryDiffEq/StochasticDiffEq Drop the `Pkg.develop` of OrdinaryDiffEq and StochasticDiffEq in the docs build (and the env-setup re-clone dance), resolving them — and all the solver subpackages — from the registry at their released versions instead of master. Why: - StochasticDiffEq is a subpackage of the OrdinaryDiffEq.jl monorepo as of v7 (registry `repo = OrdinaryDiffEq.jl`, `subdir = lib/StochasticDiffEq`), so `Pkg.develop("StochasticDiffEq")` re-cloned the same monorepo and the stale leftover checkout of the old `SciML/StochasticDiffEq.jl` repo (6.100.0) broke resolution against the docs `[compat] = "7"`: ERROR: empty intersection between StochasticDiffEq@6.100.0 and compat 7 - `Pkg.develop`ing the monorepo master also risks version skew: the dev'd master meta-package's subpackage [compat] must be satisfiable by the *registered* subpackages (sources don't propagate to the docs project), which breaks whenever master races ahead of the registry. - The released packages already ship their `docs/` (OrdinaryDiffEq 7.0.0's tarball includes `docs/` with pages.jl + src + common_*_steps.jl), so the API docs can be copied from the installed stable packages with no dev checkout. Net effect: the stable docs reflect released versions, the stale-checkout failure mode and the monorepo skew are both gone, and env-setup is just instantiate. (StochasticDiffEq's registered tarball does not yet ship `docs/` — its docs/ needs to be migrated into lib/StochasticDiffEq in the monorepo; until then the "StochasticDiffEq.jl API" section stays dropped, as added in #869.) Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs: source EnsembleProblem from SciMLBase in the low_dep example Building against the stable release (previous commit) surfaced that OrdinaryDiffEq 7.0.0 does not re-export `EnsembleProblem` (master does), so the low-dependency example's `ODE.EnsembleProblem` was an `UndefVarError`. Source it from SciMLBase, which defines it — consistent with this page's own point that "you will always need SciMLBase.jl, since it defines all of the fundamental types." This is the only docs `@example` affected: across all of docs/src the only OrdinaryDiffEq-exported-on-master-but-not-7.0.0 symbol used via the alias is `EnsembleProblem`, here. Verified locally on the released stack (OrdinaryDiffEq 7.0.0 + OrdinaryDiffEqLowOrderRK + DiffEqCallbacks + SciMLBase): the example's ensemble solve runs successfully. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The master Documentation build (from #869) failed at Set up environment:
Pkg.develop("OrdinaryDiffEq")reuses an existing~/.julia/dev/OrdinaryDiffEqinstead of re-cloning. The self-hosted runner had a stale 6.111.0 checkout from an earlier run, which conflicts with the docsOrdinaryDiffEq = "7"compat. OrdinaryDiffEq master is7.0.0, so a fresh clone resolves cleanly — and PR #869's run (different runner) passed env-setup for exactly that reason.This removes any stale dev checkout before
Pkg.develop, so master is always cloned fresh and the build is robust to leftover runner state (applied in bothDocumentation.ymlenv-setup, which runs beforemake.jl'susing).Opened non-draft so the Documentation workflow runs (it's skipped on drafts via the
!github.event.pull_request.draftgate).Note
Heads-up for @ChrisRackauckas: if the build now gets past env-setup but the AlgebraicMultigrid preconditioner blocks fail, that's the runner's registry being stale (AMG v2.0.0, registered 2026-06-12, needs a current registry to resolve; otherwise AMG v1.x's Pinv coarse solver crashes on the non-SPD
W). I could not verify that locally — this machine's General registry is a staleChrisRackauckas-Claude/Generalfork (missing e.g.PureKLU).🤖 Generated with Claude Code