From 94485913952e5503ac072929e854b830334a8efb Mon Sep 17 00:00:00 2001 From: Brad Barnett <127794626+bdbarnett@users.noreply.github.com> Date: Thu, 15 Oct 2026 13:57:58 -0500 Subject: [PATCH 1/3] Build wheels for CPython 3.15 and 3.15t on Linux and Windows Android and Pyodide stay at cp313/cp314. --- README.md | 2 +- docs/publishing.md | 4 ++-- pyproject.toml | 8 +++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 639cd93..5fb9bfc 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ import lvgl as lv ## Install -Prebuilt wheels are published as **`pydevices-lvgl`** on [TestPyPI](https://test.pypi.org/project/pydevices-lvgl/) (import as `lvgl`). CI builds a separate wheel for each CPython minor (3.11–3.14) on Linux x86_64 and Windows x64, **Android** wheels for **3.13–3.14** (`android_21_arm64_v8a`, `android_21_x86_64` per [PEP 738](https://peps.python.org/pep-0738/); cibuildwheel has no `armeabi_v7a` yet), plus a **Pyodide** `pyemscripten_2026_0_wasm32` wheel (`cp314`) — pip/micropip select the tag that matches your interpreter. +Prebuilt wheels are published as **`pydevices-lvgl`** on [TestPyPI](https://test.pypi.org/project/pydevices-lvgl/) (import as `lvgl`). CI builds a separate wheel for each CPython minor (3.11–3.15, plus the free-threaded 3.15t) on Linux x86_64 and Windows x64, **Android** wheels for **3.13–3.14** (`android_21_arm64_v8a`, `android_21_x86_64` per [PEP 738](https://peps.python.org/pep-0738/); cibuildwheel has no `armeabi_v7a` yet), plus a **Pyodide** `pyemscripten_2026_0_wasm32` wheel (`cp314`) — pip/micropip select the tag that matches your interpreter. **Android (python-for-android / PyDevices):** install the matching wheel from TestPyPI when building an APK, or let the `pydeviceslvgl` p4a recipe fetch it (see [android-template](https://github.com/PyDevices/android-template)): diff --git a/docs/publishing.md b/docs/publishing.md index 5691dbb..6de41fe 100644 --- a/docs/publishing.md +++ b/docs/publishing.md @@ -79,8 +79,8 @@ dispatches `mode=release` when its `publish` input is deliberately enabled. The published-release workflow uses the PyDevices reusable native/WASM package builder. The repository's `pyproject.toml` keeps the platform policy: -- CPython 3.11–3.14 Linux x86_64 manylinux wheels. -- CPython 3.11–3.14 Windows AMD64 wheels. +- CPython 3.11–3.15 and free-threaded 3.15t Linux x86_64 manylinux wheels. +- CPython 3.11–3.15 and free-threaded 3.15t Windows AMD64 wheels. - CPython 3.13–3.14 Android arm64-v8a and x86_64 wheels. - Pyodide/WebAssembly wheels supplied by the reusable release workflow. diff --git a/pyproject.toml b/pyproject.toml index 18d4a21..4167160 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,11 +17,13 @@ version = {file = "VERSION"} packages = [] py-modules = ["fs_driver"] -# Wheel CI: one wheel per CPython minor (cp311…cp314) × Linux + Windows + Android — see README. +# Wheel CI: one wheel per CPython minor (cp311…cp315, plus free-threaded cp315t) × Linux + Windows, +# and cp313–cp314 for Android and Pyodide — see README. # Local reproduction: docs/publishing.md § "Local wheel builds (cibuildwheel)" (Linux needs Docker). [tool.cibuildwheel] -build = "cp311-* cp312-* cp313-* cp314-*" -skip = "*musllinux* *-macosx_* *-win32" +build = "cp311-* cp312-* cp313-* cp314-* cp315-* cp315t-*" +# 3.15 and 3.15t on Linux and Windows only, for now. +skip = "*musllinux* *-macosx_* *-win32 cp315*-android_* cp315*-pyodide_*" test-command = "python -c \"import lvgl as lv; lv.init(); lv.deinit()\"" # cp314: import test passes then segfaults on interpreter shutdown after lv.deinit() test-skip = "cp314-*" From 2856327fe4e284d9739c5739f94cf4157272ec91 Mon Sep 17 00:00:00 2001 From: Brad Barnett <127794626+bdbarnett@users.noreply.github.com> Date: Thu, 15 Oct 2026 13:59:29 -0500 Subject: [PATCH 2/3] Temporary: build and test the 3.15 Linux wheels on this PR --- .github/workflows/py315-check.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/workflows/py315-check.yml diff --git a/.github/workflows/py315-check.yml b/.github/workflows/py315-check.yml new file mode 100644 index 0000000..8a9bab3 --- /dev/null +++ b/.github/workflows/py315-check.yml @@ -0,0 +1,15 @@ +# Temporary: builds and tests the cp315 and cp315t wheels on Linux for this PR. +# Removed before merge. +name: py315 wheel check +on: pull_request +jobs: + linux: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + submodules: recursive + - uses: pypa/cibuildwheel@v4.2.1 + env: + CIBW_BUILD: "cp315-manylinux_x86_64 cp315t-manylinux_x86_64" + CIBW_TEST_SKIP: "" From 3645c7ce0f14c57240327935a61ddead93fb22f0 Mon Sep 17 00:00:00 2001 From: Brad Barnett <127794626+bdbarnett@users.noreply.github.com> Date: Thu, 15 Oct 2026 14:04:10 -0500 Subject: [PATCH 3/3] Remove the temporary 3.15 wheel check --- .github/workflows/py315-check.yml | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 .github/workflows/py315-check.yml diff --git a/.github/workflows/py315-check.yml b/.github/workflows/py315-check.yml deleted file mode 100644 index 8a9bab3..0000000 --- a/.github/workflows/py315-check.yml +++ /dev/null @@ -1,15 +0,0 @@ -# Temporary: builds and tests the cp315 and cp315t wheels on Linux for this PR. -# Removed before merge. -name: py315 wheel check -on: pull_request -jobs: - linux: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v7 - with: - submodules: recursive - - uses: pypa/cibuildwheel@v4.2.1 - env: - CIBW_BUILD: "cp315-manylinux_x86_64 cp315t-manylinux_x86_64" - CIBW_TEST_SKIP: ""