tests.yml: develop in-repo [sources] for monorepo ROOT (project: '.') on the LTS#101
Draft
ChrisRackauckas-Claude wants to merge 1 commit into
Draft
Conversation
… on the LTS
The 'Develop in-repo [sources] path deps' step (and its helper checkout) was
gated with `project != '@.' && project != '.'`, so it ran for lib/* sublibraries
but NOT for a monorepo ROOT project passed as `project: '.'` (what
grouped-tests.yml uses). On Julia < 1.11 the [sources] table is not auto-resolved,
so a root project whose [deps] are pinned to in-repo siblings via [sources]
(e.g. OptimalUncertaintyQuantification's root deps on CanonicalMoments /
DiscreteMeasures / OUQBase under lib/*) fails `julia-buildpkg` on the LTS with:
ERROR: expected package `CanonicalMoments [58d2c334]` to be registered
which red-flagged `tests / Core (julia lts)` and `tests / QA (julia lts)`.
Relax both gates to only exempt the default-environment sentinel '@.' (an
ordinary single package, which by definition has no in-repo [sources]); '.' now
develops its in-repo [sources] siblings just like a lib/* sublibrary.
develop_sources already handles the root correctly: collect_source_paths exempts
the root project from the test-only-sources filter, so the root's own runtime
[sources] are developed, and it is a no-op when '.' declares no [sources] (and on
Julia >= 1.11 entirely).
Verified locally on Julia 1.10.11 against SciML/OptimalUncertaintyQuantification.jl:
`develop_sources(".")` + `Pkg.instantiate()` on the repo root resolves and
precompiles the full stack (ModelingToolkit / Optimization / OUQBase / the three
lib/* sources) cleanly; the bare `Pkg.instantiate()` reproduces the
"expected package ... to be registered" failure.
Co-Authored-By: Chris Rackauckas <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.
Problem
tests.yml's "Develop in-repo [sources] path deps" step (and the helper checkout before it) is gated with:So it runs for
lib/*sublibraries (project: lib/<name>) but is skipped for a monorepo ROOT project passed asproject: '.'— which is exactly whatgrouped-tests.ymlpasses for monorepo roots.On Julia < 1.11 the
[sources]table is not auto-resolved during build/test. A root project whose[deps]are pinned to in-repo siblings via[sources]therefore can't be built on the LTS. Concretely, onSciML/OptimalUncertaintyQuantification.jl(root[deps]= CanonicalMoments / DiscreteMeasures / OUQBase, each{ path = "lib/<name>" }in root[sources]),julia-buildpkgonjulia ltsfails before any test runs:red-flagging
tests / Core (julia lts)andtests / QA (julia lts).Fix
Relax both gates to only exempt the default-environment sentinel
'@.'(an ordinary single package, which by definition has no in-repo[sources]).'.'now develops its in-repo[sources]siblings just like alib/*sublibrary.develop_sourcesalready handles the root correctly:collect_source_pathsexempts the root project from the test-only-sources filter, so the root's own runtime[sources]are developed;'.'declares no[sources], and on Julia >= 1.11 entirely.No behavior change for
@.callers (still skipped) orlib/*callers (still develop).Local verification (Julia 1.10.11, against OptimalUncertaintyQuantification.jl)
Pkg.instantiate()on the repo root reproducesexpected package CanonicalMoments ... to be registered.develop_sources(".")+Pkg.instantiate()resolves and precompiles the full stack (ModelingToolkit / Optimization / OUQBase + the threelib/*sources) cleanly —INSTANTIATE OK.Rollout
After merge, re-tag
v1to the new master so@v1callers (incl. OptimalUncertaintyQuantification.jl) pick up the fix.Out of scope (separate root cause)
The
Downgrade/Downgrade Sublibrariesreds on the same monorepo are ajulia-actions/julia-downgrade-compatbug (itscreate_merged_projectleaves path-[sources]deps in the merged base[deps], so the resolver hitsunknown package UUID), not a SciML/.github issue — reported separately.Please ignore until reviewed by @ChrisRackauckas.