ci: install python3-dev so PyCall can find libpython#64
Draft
ChrisRackauckas-Claude wants to merge 2 commits into
Draft
ci: install python3-dev so PyCall can find libpython#64ChrisRackauckas-Claude wants to merge 2 commits into
ChrisRackauckas-Claude wants to merge 2 commits into
Conversation
The grouped-tests.yml migration dropped the previous CI's `PYTHON: ''` build env, so PyCall now builds against the runner's system python3 instead of its bundled Conda python. On the Ubuntu Noble runners the system python3 (3.12) has no libpython shared object on disk unless a dev package pulls it in, so the buildpkg step fails with "Couldn't find libpython" and every Core/QA job errors before tests run. Add python3-dev to apt-packages: it transitively installs the libpython that PyCall's build dlopens, alongside the existing python3-scipy. Verified locally: with PYTHON=python3, PyCall builds against system python3 and the QA group (Aqua + JET) passes 12/12. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Verify the scoped GitHub-hosted runner routing (SciML/.github #97) now sends this repo's apt-packages/container legs to ubuntu-24.04. 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.
Status: diagnosis update —
python3-devis correct but does NOT make CI greenInvestigation (see ChrisRackauckas/InternalJunk#52 for full evidence) shows the real blocker is the runner fleet, not
python3-dev.Real root cause
The centralized
grouped-tests.yml@v1/downgrade.yml@v1provision the Python stack viaapt-packages, which the reusable workflow installs withsudo apt-get update && sudo apt-get install. Theubuntu-latestlabel is answered by BOTH:...-cxnps-runner-*runners (have passwordless sudo) andarctic1-*— apt works here, anddemeter4-*runners — no passwordless sudo, so the apt step dies with:So whether a leg passes is a non-deterministic dice-roll on runner assignment. On this PR head, all 3 failing legs (Downgrade Core, QA julia 1, QA lts) landed on
demeter4-12/demeter4-24and died atsudo apt-get; the passing Core legs landed onarctic1-6/ acxnpsephemeral runner. Master073f2cdis red for the same reason.The
container:alternative is also broken on the persistent runners: those runner users have no Docker socket access (permission denied ... unix:///var/run/docker.sock). FEniCS.jl (which usescontainer:) is red on every recent run for exactly this reason.The pre-migration CI sidestepped all of this with
PYTHON: ''on buildpkg → PyCall built against Conda.jl's Python →pyimport_condaprovisioned scipy in userspace via Conda (no sudo, no docker). The@v1reusable workflows expose no env / build-env /PYTHONhook, so that userspace route is not expressible by a caller. (And on Julia 1.10 the Conda route additionally hits a libstdc++CXXABI_1.3.15clash with current conda-forge scipy.)What this PR does
Keeps the legitimate
python3-devaddition (it fixes the "Couldn't find libpython" build error on the legs that can run apt, and is a no-op where already present). It does not, on its own, make CI deterministically green — that requires a fleet/centralized-workflow fix (see below). Not faking a pass.Correct fix (out of this repo's config-only scope)
Either/both, tracked in InternalJunk#52:
demeter*/arctic*runners passwordless sudo OR Docker-socket access.tests.yml/downgrade.yml(e.g. setPYTHON: ''on buildpkg, optionally prepend the conda libstdcxx for Julia ≤1.10) so Python-stack packages can use the sudo/docker-free userspace-Conda provisioning the pre-migration CI relied on.Local verification (this machine)
PYTHON=''+ Conda route:using SciPyDiffEq(full__init__/pyimport_condacodepath) succeeds on Julia 1.12, sudo-free/docker-free. On Julia 1.10 it fails with conda-forge scipy 1.17 needingCXXABI_1.3.15(Julia 1.10's bundled libstdc++ tops out at 1.3.14);LD_PRELOADof the conda env's libstdcxx fixes it, but there's no workflow hook to set it.scipy.integratecleanly on Julia 1.10 (no CXXABI issue); verified end-to-end (using SciPyDiffEq+ buildpkg) insideubuntu:24.04andcimg/base:currentcontainers. Its only failure mode issudoon demeter.Please ignore until reviewed by @ChrisRackauckas.
🤖 Generated with Claude Code