From c8761a6c198a79452f6f8bee7cf11ffdbf875c34 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Tue, 14 Oct 2025 23:15:55 -0700 Subject: [PATCH 01/12] add arm64 builds & tests, run workflow --- .github/workflows/ci.yml | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e2bc13d..a7cedb9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,6 +9,7 @@ on: branches: - develop - main + - win-arm64 tags: - "*" @@ -69,6 +70,8 @@ jobs: python-version: "3.10" - os: "windows-latest" python-version: "3.10" + - os: "windows-11-arm" + python-version: "3.11" steps: - uses: actions/checkout@v4 with: @@ -155,14 +158,14 @@ jobs: PYTHON_ZLIB_NG_LINK_DYNAMIC: True deploy: - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') + # if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') runs-on: ${{ matrix.os }} needs: - lint - package-checks - - test-static - - test-dynamic - - test-arch + # - test-static + # - test-dynamic + # - test-arch strategy: matrix: os: @@ -170,6 +173,7 @@ jobs: - macos-13 - macos-latest - windows-latest + - windows-11-arm cibw_archs_linux: ["x86_64"] build_sdist: [true] include: @@ -235,17 +239,17 @@ jobs: with: name: "dist-${{ runner.os }}-${{ runner.arch }}-${{ matrix.cibw_archs_linux }}" path: "dist/" - - name: Publish package to TestPyPI - # pypa/gh-action-pypi-publish@master does not work on OSX - # Alpha, Beta and dev releases contain a - in the tag. - if: contains(github.ref, '-') && startsWith(github.ref, 'refs/tags') - run: twine upload --skip-existing -r testpypi dist/* - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }} - - name: Publish package to PyPI - if: "!contains(github.ref, '-') && startsWith(github.ref, 'refs/tags')" - run: twine upload --skip-existing dist/* - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} + # - name: Publish package to TestPyPI + # # pypa/gh-action-pypi-publish@master does not work on OSX + # # Alpha, Beta and dev releases contain a - in the tag. + # if: contains(github.ref, '-') && startsWith(github.ref, 'refs/tags') + # run: twine upload --skip-existing -r testpypi dist/* + # env: + # TWINE_USERNAME: __token__ + # TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }} + # - name: Publish package to PyPI + # if: "!contains(github.ref, '-') && startsWith(github.ref, 'refs/tags')" + # run: twine upload --skip-existing dist/* + # env: + # TWINE_USERNAME: __token__ + # TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} From 88aebe84a47e7a1667e8a3cb68018bcd779f0315 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Tue, 14 Oct 2025 23:31:55 -0700 Subject: [PATCH 02/12] skip cp39 and cp310 on arm64 windows --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7cedb9..694edce 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -203,7 +203,7 @@ jobs: run: cibuildwheel --output-dir dist env: # Skip 32 bit, macosx_arm64 causes issues on cpython 3.9 - CIBW_SKIP: "*-win32 *-manylinux_i686 cp38-macosx_arm64" + CIBW_SKIP: "*-win32 *-manylinux_i686 cp38-macosx_arm64 cp39-win_arm64 cp310-win_arm64" CIBW_ARCHS_LINUX: ${{ matrix.cibw_archs_linux }} CIBW_TEST_REQUIRES: "pytest" # Simple tests that requires the project to be build correctly From c3802be0fcec4e23c2f1c81ebce1a5186a63c2aa Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Tue, 14 Oct 2025 23:47:04 -0700 Subject: [PATCH 03/12] add v5 python-setup for arm64 windows Updated Python setup action for Windows ARM architecture. --- .github/workflows/ci.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 694edce..b4b73a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -184,7 +184,11 @@ jobs: with: submodules: recursive fetch-depth: 0 # Fetch everything to get accurately versioned tag. - - uses: actions/setup-python@v2 # Some issues where caused by higher versions. + - if: ${{ matix.os == 'windows-11-arm' }} + uses: actions/setup-python@v5 + name: Install Python + - if: ${{ matix.os != 'windows-11-arm' }} + uses: actions/setup-python@v2 # Some issues where caused by higher versions. name: Install Python - name: Install cibuildwheel twine build run: python -m pip install cibuildwheel twine build From d39e4f349e197924ba664d20c0359af32b5eebbf Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Tue, 14 Oct 2025 23:50:53 -0700 Subject: [PATCH 04/12] fix typo --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b4b73a9..58b3c99 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -184,10 +184,10 @@ jobs: with: submodules: recursive fetch-depth: 0 # Fetch everything to get accurately versioned tag. - - if: ${{ matix.os == 'windows-11-arm' }} + - if: ${{ matrix.os == 'windows-11-arm' }} uses: actions/setup-python@v5 name: Install Python - - if: ${{ matix.os != 'windows-11-arm' }} + - if: ${{ matrix.os != 'windows-11-arm' }} uses: actions/setup-python@v2 # Some issues where caused by higher versions. name: Install Python - name: Install cibuildwheel twine build From cd24ab974f55fa269268e061bb51e8be1184e5a0 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Wed, 15 Oct 2025 00:35:52 -0700 Subject: [PATCH 05/12] print env variables for windows to debug --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 58b3c99..9fc99ee 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -221,6 +221,7 @@ jobs: {project}/tests/test_gzip_ng.py # Windows does not have the test module in the included python. # Run compatibility tests instead. + CIBW_BEFORE_BUILD_WINDOWS: "gci env:* | sort-object name" CIBW_TEST_COMMAND_WINDOWS: >- pytest {project}/tests/test_compat.py {project}/tests/test_gzip_ng.py From 26e9dd138e83002ad0834ecb492187160efa3faf Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 16 Oct 2025 11:38:41 -0700 Subject: [PATCH 06/12] fix pwsh command before build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9fc99ee..649afc0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -221,7 +221,7 @@ jobs: {project}/tests/test_gzip_ng.py # Windows does not have the test module in the included python. # Run compatibility tests instead. - CIBW_BEFORE_BUILD_WINDOWS: "gci env:* | sort-object name" + CIBW_BEFORE_BUILD_WINDOWS: "Get-ChildItem env:* | sort-object name" CIBW_TEST_COMMAND_WINDOWS: >- pytest {project}/tests/test_compat.py {project}/tests/test_gzip_ng.py From 835d481c5b6bf730773275cf695e131c4dd8c7d0 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 16 Oct 2025 11:47:51 -0700 Subject: [PATCH 07/12] run SET --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 649afc0..994ff54 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -221,7 +221,7 @@ jobs: {project}/tests/test_gzip_ng.py # Windows does not have the test module in the included python. # Run compatibility tests instead. - CIBW_BEFORE_BUILD_WINDOWS: "Get-ChildItem env:* | sort-object name" + CIBW_BEFORE_BUILD_WINDOWS: "SET" CIBW_TEST_COMMAND_WINDOWS: >- pytest {project}/tests/test_compat.py {project}/tests/test_gzip_ng.py From 109ee306061c3ad148661ac847c3e9a9b70a02c6 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Sun, 26 Oct 2025 18:58:49 -0700 Subject: [PATCH 08/12] Specify architecture for MSVC developer prompt --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 994ff54..25f924a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -198,6 +198,8 @@ jobs: - name: Set MSVC developer prompt uses: ilammy/msvc-dev-cmd@v1 if: runner.os == 'Windows' + with: + arch: ${{ matrix.os == 'windows-11-arm' && 'arm64' || 'x64' }} - name: Set up QEMU if: ${{runner.os == 'Linux' && matrix.cibw_archs_linux == 'aarch64'}} uses: docker/setup-qemu-action@v3 From dcc9061c563c2b8a509d57a64e85aa1d93a0e999 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Sun, 26 Oct 2025 21:38:44 -0700 Subject: [PATCH 09/12] add arch option to msvc action --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 25f924a..96910f6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -86,6 +86,8 @@ jobs: - name: Set MSVC developer prompt uses: ilammy/msvc-dev-cmd@v1 if: runner.os == 'Windows' + with: + arch: ${{ matrix.os == 'windows-11-arm' && 'arm64' || 'x64' }} - name: Install build dependencies (MacOS) run: brew install make if: runner.os == 'macOS' From 314a8e328e7480e3e59e15fcfdc0e4261c0c3c50 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Sun, 26 Oct 2025 22:50:08 -0700 Subject: [PATCH 10/12] remove SET --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 96910f6..132fbd2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -225,7 +225,6 @@ jobs: {project}/tests/test_gzip_ng.py # Windows does not have the test module in the included python. # Run compatibility tests instead. - CIBW_BEFORE_BUILD_WINDOWS: "SET" CIBW_TEST_COMMAND_WINDOWS: >- pytest {project}/tests/test_compat.py {project}/tests/test_gzip_ng.py From 4c51a77d04678f35e2a87e0f6ef161e06d141a91 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Sun, 26 Oct 2025 23:21:00 -0700 Subject: [PATCH 11/12] uncomment skipped sections, remove fork branch trigger --- .github/workflows/ci.yml | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 132fbd2..e1ce7ff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,6 @@ on: branches: - develop - main - - win-arm64 tags: - "*" @@ -160,14 +159,14 @@ jobs: PYTHON_ZLIB_NG_LINK_DYNAMIC: True deploy: - # if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') runs-on: ${{ matrix.os }} needs: - lint - package-checks - # - test-static - # - test-dynamic - # - test-arch + - test-static + - test-dynamic + - test-arch strategy: matrix: os: @@ -247,17 +246,17 @@ jobs: with: name: "dist-${{ runner.os }}-${{ runner.arch }}-${{ matrix.cibw_archs_linux }}" path: "dist/" - # - name: Publish package to TestPyPI - # # pypa/gh-action-pypi-publish@master does not work on OSX - # # Alpha, Beta and dev releases contain a - in the tag. - # if: contains(github.ref, '-') && startsWith(github.ref, 'refs/tags') - # run: twine upload --skip-existing -r testpypi dist/* - # env: - # TWINE_USERNAME: __token__ - # TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }} - # - name: Publish package to PyPI - # if: "!contains(github.ref, '-') && startsWith(github.ref, 'refs/tags')" - # run: twine upload --skip-existing dist/* - # env: - # TWINE_USERNAME: __token__ - # TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} + - name: Publish package to TestPyPI + # pypa/gh-action-pypi-publish@master does not work on OSX + # Alpha, Beta and dev releases contain a - in the tag. + if: contains(github.ref, '-') && startsWith(github.ref, 'refs/tags') + run: twine upload --skip-existing -r testpypi dist/* + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }} + - name: Publish package to PyPI + if: "!contains(github.ref, '-') && startsWith(github.ref, 'refs/tags')" + run: twine upload --skip-existing dist/* + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} From 5a5ae344793511d78d879c178d2127b321bb615e Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Sun, 26 Oct 2025 23:32:54 -0700 Subject: [PATCH 12/12] update CHANGELOG.rst Added version 1.0.1-dev section with a note about Windows arm64 wheel support. --- CHANGELOG.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index c067325..6357ca6 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -7,6 +7,10 @@ Changelog .. This document is user facing. Please word the changes in such a way .. that users understand how the changes affect the new version. +version 1.0.1-dev +----------------- ++ Wheels are now built for Windows arm64 architectures. + version 1.0.0 ----------------- The library has been running without issues as a dependency in quite a few