Skip to content

Refresh nested manifests before benchmark builds - #1618

Draft
ChrisRackauckas-Claude wants to merge 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:agent/refresh-nested-manifest-before-build
Draft

Refresh nested manifests before benchmark builds#1618
ChrisRackauckas-Claude wants to merge 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:agent/refresh-nested-manifest-before-build

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Ignore this PR until it has been reviewed by @ChrisRackauckas.

Depends on #1612 for the Julia 1.10-compatible Testing manifest.

Summary

  • Resolve a nested benchmark manifest before instantiation when the running Julia minor is the same as or newer than the manifest's Julia minor.
  • Preserve manifests produced by a newer Julia when running on an older Julia, whose resolver may not know the newer stdlibs.
  • Add a regression test using a stale minimal manifest.

Root cause

Julia 1.12 no longer bundles MbedTLS_jll, while the checked-in Julia 1.11 Testing manifest records it as a stdlib without a source tree. Pkg.instantiate() therefore leaves no package path for the subsequent Pkg.build() call.

A full bisect found cc4abfcee7f55d5be8be72060f382c1de5d1742f as the first bad commit because it introduced and activated the nested Testing environment. Resolving the manifest on same-or-newer Julia versions converts historical stdlibs such as MbedTLS_jll to normal registered packages before building.

Verification

  • Julia 1.12: full Pkg.test() passes on this branch, including ExplicitImports, the stale-manifest regression, and the real woven benchmark test.
  • Julia 1.10: full Pkg.test() passes when stacked on Regenerate Testing manifest with Julia 1.10 #1612.
  • Runic 1.7.0: full-repository check passes.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Investigation scratchpad

Task prompt: independently reproduce the clean-master Julia 1.12 Pkg.test() failure, bisect it, fix the underlying nested-environment behavior without skipping tests, and verify the actual test locally.

  • Clean base: 0498ef2519fdc2f60a1a2d78502f971bdf0b3448.
  • Independent reproducer: Julia 1.12 with an isolated depot, activating benchmarks/Testing and running Pkg.instantiate(); Pkg.build().
  • Reproduction result: exit 1, Failed to find path for package MbedTLS_jll.
  • Bisect range: clean master bad, cc4abfce^ good; automated predicate ran the public Pkg.instantiate(); Pkg.build() path and classified only the exact MbedTLS_jll path error as bad.
  • Bisect result: first bad cc4abfcee7f55d5be8be72060f382c1de5d1742f (Move test.jmd into its own project folder). That commit introduced the nested environment and made the test activate its manifest.
  • First repair probe: resolving before instantiation on Julia 1.12 added a source tree for the historical MbedTLS_jll stdlib and allowed Pkg.build() to complete.
  • Compatibility iteration: unconditional resolution is invalid when an older Julia reads a newer manifest; Julia 1.10 cannot resolve the manifest's Julia 1.11 StyledStrings stdlib pin. The implementation therefore resolves only on the same or a newer Julia minor.
  • Added regression: a temporary project with a deliberately stale manifest must be resolved and instantiated by weave_file.
  • Julia 1.12 full test result: Explicit Imports 2/2, stale-manifest regression 2/2, real weave_file 1/1; Pkg.test() passed.
  • Julia 1.10 validation stacked on Regenerate Testing manifest with Julia 1.10 #1612: Explicit Imports 2/2, stale-manifest regression 2/2, real weave_file 1/1; Pkg.test() passed.
  • Formatting: Runic 1.7.0 full-repository check passed.

No tests were skipped, disabled, loosened, or silenced.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

CI note: the immediate Spell Check failure is the two pre-existing SerPSO findings on clean master. It is unrelated to this two-file diff and is fixed separately by #1614.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Post-timer CI review:

No branch-local CI failure was found, so no additional change was pushed.

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.

2 participants