Skip to content

Commit 6d644a6

Browse files
authored
Support musl Linux for aarch64. (#184)
Also upgrade the science internal Python distribution to PBS CPython 3.14.0. As part of this work, the PBS provider now supports musl Linux on aarch64. The PBS provider also now favors native CPython distributions on Windows aarch64 when available and only falls back to Prism emulation with x86_64 distributions when needed.
1 parent d71adfe commit 6d644a6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+277
-321
lines changed

.github/workflows/ci.yml

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,11 @@ jobs:
4242
image: debian/bookworm
4343
arch: amd64
4444
- os: ubuntu-24.04
45-
name: Linux aarch64
45+
name: Linux aarch64 (musl)
46+
image: alpine
47+
arch: arm64
48+
- os: ubuntu-24.04
49+
name: Linux aarch64 (glibc)
4650
image: debian/bookworm
4751
arch: arm64
4852
- os: ubuntu-24.04
@@ -81,17 +85,15 @@ jobs:
8185
export UV="$(which uv)"
8286
"${UV}" -V
8387
echo UV="${UV}" >> ${GITHUB_ENV}
84-
- name: Setup x86_64 Python for Prism
88+
- name: Checkout Lift
89+
uses: actions/checkout@v4
90+
- name: Ensure aarch64 Python for Windows ARM
8591
if: matrix.os == 'windows-11-arm'
8692
run: |
87-
# N.B.: We use an x86-64 Python for Windows ARM64 because this is what we ship with via
88-
# PBS, and we need to be able to resolve x86-64 compatible requirements (which include
89-
# native deps like psutil) for our shiv.
90-
UV_PYTHON_VERSION=cpython-3.13.7-windows-x86_64-none
93+
# N.B.: uv still defaults to x86_64 / Prism emulation; so we have to force aarch64 here.
94+
UV_PYTHON_VERSION="cpython-$(cat .python-version)-windows-aarch64"
9195
"${UV}" python install ${UV_PYTHON_VERSION}
9296
echo UV_PYTHON="${UV_PYTHON_VERSION}" >> ${GITHUB_ENV}
93-
- name: Checkout Lift
94-
uses: actions/checkout@v4
9597
- name: Restore MyPy Cache
9698
id: restore-mypy-cache
9799
uses: actions/cache/restore@v4

.github/workflows/release.yml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,11 @@ jobs:
5858
name: Linux x86-64 (glibc)
5959
image: debian/bookworm
6060
arch: amd64
61-
- os: ubuntu-24.04
61+
- os: ubuntu-24.04 (musl)
62+
name: Linux aarch64
63+
image: alpine
64+
arch: arm64
65+
- os: ubuntu-24.04 (glibc)
6266
name: Linux aarch64
6367
image: debian/bookworm
6468
arch: arm64
@@ -103,22 +107,20 @@ jobs:
103107
export UV="$(which uv)"
104108
"${UV}" -V
105109
echo UV="${UV}" >> ${GITHUB_ENV}
106-
- name: Setup x86_64 Python for Prism
107-
if: matrix.os == 'windows-11-arm'
108-
run: |
109-
# N.B.: We use an x86-64 Python for Windows ARM64 because this is what we ship with via
110-
# PBS, and we need to be able to resolve x86-64 compatible requirements (which include
111-
# native deps like psutil) for our shiv.
112-
UV_PYTHON_VERSION=cpython-3.13.7-windows-x86_64-none
113-
"${UV}" python install ${UV_PYTHON_VERSION}
114-
echo UV_PYTHON_ARGS="--python ${UV_PYTHON_VERSION}" >> ${GITHUB_ENV}
115110
- name: Installing emulators
116111
if: matrix.image != ''
117112
run: docker run --privileged --rm tonistiigi/binfmt --install all
118113
- name: Checkout lift ${{ needs.determine-tag.outputs.release-tag }}
119114
uses: actions/checkout@v4
120115
with:
121116
ref: ${{ needs.determine-tag.outputs.release-tag }}
117+
- name: Ensure aarch64 Python for Windows ARM
118+
if: matrix.os == 'windows-11-arm'
119+
run: |
120+
# N.B.: uv still defaults to x86_64 / Prism emulation; so we have to force aarch64 here.
121+
UV_PYTHON_VERSION="cpython-$(cat .python-version)-windows-aarch64"
122+
"${UV}" python install ${UV_PYTHON_VERSION}
123+
echo UV_PYTHON="${UV_PYTHON_VERSION}" >> ${GITHUB_ENV}
122124
- name: Package science ${{ needs.determine-tag.outputs.release-tag }} binary
123125
if: matrix.image == ''
124126
run: |

.python-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.13.9
1+
3.14.0

CHANGES.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Release Notes
22

3+
## 0.16.0
4+
5+
This release adds support for musl Linux on aarch64 and upgrades the `science` internal Python
6+
distribution to [PBS][PBS] CPython 3.14.0. As part of this work, the [PBS][PBS] provider now
7+
supports musl Linux on aarch64. The [PBS][PBS] provider also now favors native CPython distributions
8+
on Windows aarch64 when available and only falls back to Prism emulation with x86_64 distributions
9+
when needed.
10+
311
## 0.15.3
412

513
This release fixes handling of the case of a scie with no files. These would build previously, but

docs/_ext/sphinx_science/directives.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# Copyright 2023 Science project contributors.
22
# Licensed under the Apache License, Version 2.0 (see LICENSE).
33

4-
from __future__ import annotations
54

65
import shutil
76
from abc import ABC, abstractmethod

docs/_ext/sphinx_science/providers.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# Copyright 2023 Science project contributors.
22
# Licensed under the Apache License, Version 2.0 (see LICENSE).
33

4-
from __future__ import annotations
54

65
import dataclasses
76
from typing import Iterator

docs/_ext/sphinx_science/toml.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# Copyright 2023 Science project contributors.
22
# Licensed under the Apache License, Version 2.0 (see LICENSE).
33

4-
from __future__ import annotations
54

65
import dataclasses
76
import os

lift.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ description = "Ship your interpreted executables using science."
88
id = "cpython"
99
provider = "PythonBuildStandalone"
1010

11-
release = "20251014"
12-
version = "3.13.9"
11+
release = "20251120"
12+
version = "3.14.0"
1313
flavor = "install_only_stripped"
1414

1515
# By default, science ships as a "thin" scie that fetches CPython 3.13 on first run.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ authors = [
99
]
1010
description = "A high level tool to build scies with."
1111
readme = "README.md"
12-
requires-python = "==3.13.*"
12+
requires-python = "==3.14.*"
1313
license = {file = "LICENSE"}
1414
dynamic = ["version"]
1515
dependencies = [

science/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33

44
from packaging.version import Version
55

6-
__version__ = "0.15.3"
6+
__version__ = "0.16.0"
77

88
VERSION = Version(__version__)

0 commit comments

Comments
 (0)