Conversation
|
+1 for this (and others) |
AndreFavotto
added a commit
to weiss-controls/weiss
that referenced
this pull request
Sep 7, 2026
Standardize python builds: use uv everywhere instead of pip/micromamba. Build time is now considerably faster for amd64, but slower for aarch64 (no wheels available - need to build from source). This may be fixed once Publish linux-aarch64 wheels on native ARM runners epics-base/p4p#226 (and related PRs) are merged. epicsWS final image is also smaller - no more mamba environment overhead. Updated base dependencies: Remove plotly completely; Update python, pyepics, websockets, fastapi and others to latest-ish (see diff for details).
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.
linux-aarch64 wheels for the EPICS PVA stack
There is no
linux-aarch64wheel on PyPI forepicscorelibs,pvxslibsorp4p, at any interpreter. All three publishmacosx_11_0_universal2,manylinux2014_x86_64/manylinux_2_28_x86_64andwin_amd64only. So on arm64 Linuxpip install p4psource-builds all three and needs a C toolchain on the host. A container image can stage one; a bare-metal install cannot be assumed to have one.Three PRs, one per repo, adding the missing rows:
epicscorelibspvxslibsp4pThey need to merge in that order:
pvxslibsbuilds againstepicscorelibs, andp4pagainst both. Until the one above it has merged and published, each downstream PR's aarch64 jobs are expected to fail — see the note in each.Why now. epics-base/epicscorelibs#21 and epics-base/pvxs#48 proposed this in 2023 using QEMU, and were closed unmerged in favour of waiting for ARM-based hosted runners. Those runners are now generally available and free on public repositories, which removes both objections raised in that discussion: the build is native rather than ~40 minutes emulated, and the unit tests run against a real kernel, so
qemu-usernot translatingIP_MULTICAST_ALL,SO_RXQ_OVFL,IP_MULTICAST_IFandIPV6_MULTICAST_IFis no longer a factor.The change, identical in all three:
runs-on: ${{ matrix.runner || 'ubuntu-latest' }}, following the existing${{ matrix.cy || 'Cython' }}idiom, so the x86_64 and native rows are untouched.manylinux2014_aarch64rows for cp39–cp313 andmanylinux_2_28_aarch64for cp314/cp314t, mirroring the x86_64 set, each withrunner: ubuntu-24.04-arm.ubuntu-24.04-armbuildslinux-aarch64natively. (epics-base/ci-scripts already builds that target, as a cross-compile.)podman5.8.4 is preinstalled onubuntu-24.04-arm, the same version as on the x64 image, so thepodman runstep is unchanged.mdavidsaver/ci-core-dumper@masteris anode24action and GitHub-provided runtimes are arm64-native, so it needs no change.matrix.ml, so nothing collides, andsrc: truestays on the x86_64 cp314 row only.This repo
Last in the chain; needs both epics-base/epicscorelibs#56 and epics-base/pvxs#201 merged and published first. #156 is the user-facing version of the problem this closes out.
Two p4p-specific details in the new rows:
numpypins as their x86_64 counterparts. Each pinned version shipsmanylinux2014_aarch64-compatible wheels at the matching interpreters (1.21.6/cp39, 2.0.1/cp310, 2.2.6/cp311–cp313), so the pins resolve inside the same containers the x86_64 rows use; 2.3.5's aarch64 wheels aremanylinux_2_28, which is fine for the cp314 rows since those already run in themanylinux_2_28container.skip_cothread: true, as the two cp314 rows already do.cothreadpublishes no aarch64 wheel, so installing it for the test step would mean compiling it. It does shipcontext/switch-arm64.c, so enabling it later looks feasible — just not something to prove here.Expect the aarch64 rows to fail until the two upstream PRs publish. Unlike pvxs, the download line here has no
--only-binaryforepicscorelibsorpvxslibs, so rather than failing fast these rows fall back to thepvxslibssdist, whose metadata preparation installsepicscorelibsfrom source — a full EPICS Base compile insidepip download, slow and hard to read if it then fails for an unrelated reason. The last commit adds--only-binary epicscorelibs,pvxslibsto that line, aspython.ymlin pvxs already does forepicscorelibs, so the requirement is explicit and an unmet one fails in seconds. It is separable from the rest of the PR if you would rather not have it.