From c563b7c423892117320d399a9e4f7ee523e98cd7 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Fri, 12 Sep 2025 10:40:34 +0100 Subject: [PATCH 1/6] CI: Attempt Win-arm Add windows-arm64 builds Skip tests as pandas not available --- .github/workflows/build-wheels.yml | 6 +++--- statsmodels | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 341aef3..cc0f827 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -19,7 +19,7 @@ jobs: fail-fast: false matrix: python: [cp310, cp311, cp312, cp313] - os: [ubuntu-latest, windows-latest, macos-13, macos-latest] + os: [ubuntu-latest, windows-latest, macos-13, macos-latest, windows-11-arm] python_impl: [Python] include: - python: cp312 @@ -31,11 +31,11 @@ jobs: CIBW_ARCHS_LINUX: "x86_64 aarch64" # No support for pypy, musl, Win32 for 3.10+ # Skip musl for 3.8 and 3.9 since no upstream wheels - CIBW_SKIP: "pp* *-win32 cp38-musllinux* cp39-musllinux* *musllinux_aarch64*" + CIBW_SKIP: "pp* *-win32 *musllinux_aarch64* *cp310-win_arm64*" CIBW_TEST_REQUIRES: pytest pytest-xdist CIBW_TEST_COMMAND: python -c "import statsmodels; statsmodels.test(['--skip-examples','--skip-slow','-n','2'], exit=True)" # Avoid testing on emulated architectures and Pyodide - CIBW_TEST_SKIP: "*-*linux_{aarch64,ppc64le,s390x} *pyodide*" + CIBW_TEST_SKIP: "*-*linux_{aarch64,ppc64le,s390x} *pyodide* *win_arm64*" CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'auditwheel repair --strip -w {dest_dir} {wheel}' CIBW_BUILD_VERBOSITY: 1 MULTIBUILD_WHEELS_STAGING_ACCESS: ${{ secrets.MULTIBUILD_WHEELS_STAGING_ACCESS }} diff --git a/statsmodels b/statsmodels index 3095a65..cee5801 160000 --- a/statsmodels +++ b/statsmodels @@ -1 +1 @@ -Subproject commit 3095a6559b549b0da88aebe3bfef05c6b5403ebe +Subproject commit cee5801ce86bb69256ad26227f6234c1d749a2ca From 2c9ccabb8bcff22591a0e3b9c3ca153dbaf4f0e7 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Fri, 12 Sep 2025 12:53:05 +0100 Subject: [PATCH 2/6] CI: Add LLVM action for win-arm64 --- .github/windows_arm64_steps/action.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/windows_arm64_steps/action.yml diff --git a/.github/windows_arm64_steps/action.yml b/.github/windows_arm64_steps/action.yml new file mode 100644 index 0000000..37b8ebf --- /dev/null +++ b/.github/windows_arm64_steps/action.yml @@ -0,0 +1,21 @@ +name: Build Dependencies(Win-ARM64) +description: "Setup LLVM for Win-ARM64 builds" + +runs: + using: "composite" + steps: + - name: Install LLVM with checksum verification + shell: pwsh + run: | + Invoke-WebRequest https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.6/LLVM-20.1.6-woa64.exe -UseBasicParsing -OutFile LLVM-woa64.exe + $expectedHash = "92f69a1134e32e54b07d51c6e24d9594852f6476f32c3d70471ae00fffc2d462" + $fileHash = (Get-FileHash -Path "LLVM-woa64.exe" -Algorithm SHA256).Hash + if ($fileHash -ne $expectedHash) { + Write-Error "Checksum verification failed. The downloaded file may be corrupted or tampered with." + exit 1 + } + Start-Process -FilePath ".\LLVM-woa64.exe" -ArgumentList "/S" -Wait + echo "C:\Program Files\LLVM\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "CC=clang-cl" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "CXX=clang-cl" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "FC=flang-new" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append From b9aa4ad8ff5271afe11bd0ad38ac688aa06962d8 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Fri, 12 Sep 2025 12:54:36 +0100 Subject: [PATCH 3/6] CI: Add step to setup clang-cl --- .github/workflows/build-wheels.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index cc0f827..f062923 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -56,6 +56,10 @@ jobs: with: platforms: all + - name: Setup LLVM for Windows ARM64 + if: ${{ matrix.buildplat[1] == 'win_arm64' }} + uses: ./.github/windows_arm64_steps + - name: Build wheels (Default) uses: pypa/cibuildwheel@v3.1 if: (matrix.python_impl != 'Pyodide') && (matrix.os != 'macos-13') From 042fa1d2fa8610b5ee70f9247a7d9c0f98227602 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Fri, 12 Sep 2025 13:10:04 +0100 Subject: [PATCH 4/6] CI: Change check for windows-11-arm --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index f062923..7b3aa3d 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -57,7 +57,7 @@ jobs: platforms: all - name: Setup LLVM for Windows ARM64 - if: ${{ matrix.buildplat[1] == 'win_arm64' }} + if: ${{ matrix.os == 'windows-11-arm' }} uses: ./.github/windows_arm64_steps - name: Build wheels (Default) From 5a7b4af896df944779f49b728178e96e06889eef Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Fri, 12 Sep 2025 13:11:40 +0100 Subject: [PATCH 5/6] CI: Skip cp310 on win-arm64 --- .github/workflows/build-wheels.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 7b3aa3d..5129d1d 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -25,13 +25,16 @@ jobs: - python: cp312 os: ubuntu-latest python_impl: Pyodide + exclude: + - os: windows-11-arm + python: cp310 env: BUILD_COMMIT: "main" # or a specific version, e.g., v0.13.1 CIBW_BUILD: ${{ matrix.python }}-* CIBW_ARCHS_LINUX: "x86_64 aarch64" # No support for pypy, musl, Win32 for 3.10+ # Skip musl for 3.8 and 3.9 since no upstream wheels - CIBW_SKIP: "pp* *-win32 *musllinux_aarch64* *cp310-win_arm64*" + CIBW_SKIP: "pp* *-win32 *musllinux_aarch64*" CIBW_TEST_REQUIRES: pytest pytest-xdist CIBW_TEST_COMMAND: python -c "import statsmodels; statsmodels.test(['--skip-examples','--skip-slow','-n','2'], exit=True)" # Avoid testing on emulated architectures and Pyodide From 38e8b1e686707f6fd45b3cd46bd844a6a25c8dd9 Mon Sep 17 00:00:00 2001 From: Kevin Sheppard Date: Sat, 13 Sep 2025 15:12:50 +0100 Subject: [PATCH 6/6] CI: Remove LLVM for now --- .github/workflows/build-wheels.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 5129d1d..4526707 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -59,10 +59,6 @@ jobs: with: platforms: all - - name: Setup LLVM for Windows ARM64 - if: ${{ matrix.os == 'windows-11-arm' }} - uses: ./.github/windows_arm64_steps - - name: Build wheels (Default) uses: pypa/cibuildwheel@v3.1 if: (matrix.python_impl != 'Pyodide') && (matrix.os != 'macos-13')