Install the General registry unpacked, so Julia 1.7 can read it - #78
Merged
Conversation
`test_julia_versions.jl:Julia 1.7 platform` fails on the rc and beta legs on Linux and macOS, and passes there on 1.12 and on Windows. The cause is not our code: Julia 1.7's bundled 7z cannot decompress zstd — 7z only learned that in v17.6 — and it shares this depot with the Julia that drives the run. From 1.13 on, Pkg asks the package server for a zstd compressed registry. It already skips zstd for registries on Windows for exactly this reason, quoting the same 7z version in `Pkg/src/PlatformEngines.jl`, but that carve-out keys off the platform rather than off what else lives in the depot. So on Linux and macOS a `General.tar.zst` lands in the shared depot, and every 1.7 test process then dies on `julia-1.7.3/libexec/7z x ~/.julia/registries/General.tar.zst -so`. An unpacked registry is a plain folder that every version reads, and it survives later `Pkg.Registry.update()`s. The job prep script already installs the Julia versions this suite runs against, so it is also the place to leave the registry in a shape all of them can read. Verified locally: converting a packed depot leaves Pkg reporting an unpacked registry, and Julia 1.7 resolves and installs a package against it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Converting the registry that `julia-buildpkg` installed is not enough on its own: on the first run of this the 1.7 leg still died on a `General.tar.zst`, which means something later in the job put a packed registry back — the run itself, or a test process resolving an environment against the shared depot. Export `JULIA_PKG_UNPACK_REGISTRY` into `GITHUB_ENV` as well, so every later step in the job installs and refreshes the registry unpacked rather than only the copy this script converted. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Unpacking on Windows made things worse rather than better: Pkg's
replace-on-write dance there leaves `$XXXX.pid.deleted` entries in `registries`,
and the concurrent test processes trip over them with
IOError: stat("...\.julia\registries\$M3WH.pid.deleted"): permission denied
21 test items failed on the `windows-latest, rc~x64` leg because of it, on a leg
that was green before.
Windows never had the problem being fixed: Pkg already refuses zstd for
registries there, for the same 7z reason. Restrict the whole thing to the
platforms where a `General.tar.zst` can actually appear.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Restricting the conversion to Linux and macOS was not enough to make the Windows legs green again, because the damage is cached: `julia-actions/cache` saves the depot, so the unpacked registry an earlier run of this script created comes back on every later Windows run. Pkg then replaces it on the next registry operation, and its replace-on-write leaves `$XXXX.pid.deleted` entries that the concurrent test processes trip over with `stat: permission denied` — 17 items failed that way on `windows-latest, rc~x64` even with the conversion switched off. Put a packed registry back on Windows and sweep up the leftovers, so one run repairs the cached depot instead of every run rediscovering it. Co-Authored-By: Claude Opus 5 <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.
test_julia_versions.jl:Julia 1.7 platformfails on the rc and beta legs on Linux and macOS, while passing on 1.12 everywhere and on Windows for every channel. Only 1.7 is affected — 1.0, 1.3 and 1.6 do not use tarball registries, and 1.8 and up bundle a 7z that reads zstd.The cause is not our code. Julia 1.7's bundled 7z cannot decompress zstd (7z only learned that in v17.6), and it shares the depot with the Julia driving the run. From 1.13 on, Pkg asks the package server for a zstd compressed registry — except on Windows, where it skips zstd for exactly this reason and quotes the same 7z version in
Pkg/src/PlatformEngines.jl. That carve-out keys off the platform rather than off what else lives in the depot, so on Linux and macOS aGeneral.tar.zstlands in the shared depot and every 1.7 test process dies on:An unpacked registry is a plain folder every version reads, and it stays unpacked across later
Pkg.Registry.update()s. The job prep script already installs the Julia versions this suite runs against, so it is also the right place to leave the registry in a shape all of them can read.Verified locally: converting a packed depot leaves Pkg reporting
unpacked registry, and Julia 1.7 then resolves and installs a package against it. The rc legs on this PR are the real check.Found while auditing the stack for Julia 1.13 readiness.
🤖 Generated with Claude Code