Skip to content

Conversation

@MugundanMCW
Copy link

@MugundanMCW MugundanMCW commented Dec 15, 2025

Rationale for this change

  • The adoption of Windows on ARM (WoA) devices is steadily increasing, yet many Python wheels are still not available for this platform.
  • GitHub Actions now offers native CI runners for Windows on ARM devices (windows-11-arm), enabling automated builds and testing.
  • Currently, official PyArrow Python wheels are not provided for Windows ARM64, and users and developers face difficulties using the popular PyArrow library natively.
  • This PR introduces support for building PyArrow wheels on Windows ARM64, improving accessibility for developers and end users on this emerging platform.

What changes are included in this PR?

  • The current Windows x64 CI pipeline depends on a Windows Docker container. Windows ARM64 Docker support is still experimental and does not yet support Windows ARM64 containers.
  • To overcome this limitation, this PR uses the native GitHub Windows ARM64 environment instead of relying on Docker containers.
  • The following changes are made to add wheel builder support for PyArrow on Windows ARM64:
    • Added a Windows ARM64 build configuration in task.yml.
    • Added a new GitHub workflow file (github.windows.arm64.yml) for building PyArrow.
    • Added a batch script invoked by the workflow to build both the C++ and Python components of Arrow using the MSVC toolchain.
    • Updated vcpkg.json to exclude the xsimd dependency on Windows ARM64 due to MSVC compatibility issues.

Are these changes tested?

  • Yes, built locally and test its functionality on Native Windows ARM64 device.

Are there any user-facing changes?

  • No

Github Issue: #47195

@github-actions github-actions bot added the awaiting review Awaiting review label Dec 15, 2025
@amoeba amoeba changed the title GH-47196: [CI][Python] Add support for building PyArrow library on Windows ARM64 GH-47195: [Python][CI] Add support for building PyArrow library on Windows ARM64 Dec 15, 2025
@github-actions
Copy link

⚠️ GitHub issue #47195 has been automatically assigned in GitHub to PR creator.

Copy link
Member

@raulcd raulcd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR!

@github-actions github-actions bot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Dec 16, 2025
@github-actions github-actions bot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Dec 16, 2025
@raulcd
Copy link
Member

raulcd commented Dec 16, 2025

@github-actions crossbow submit wheel-windows-*arm64

@github-actions
Copy link

Revision: bc3020d

Submitted crossbow builds: ursacomputing/crossbow @ actions-15d135b85a

Task Status
wheel-windows-cp310-cp310-arm64 GitHub Actions
wheel-windows-cp311-cp311-arm64 GitHub Actions
wheel-windows-cp312-cp312-arm64 GitHub Actions
wheel-windows-cp313-cp313-arm64 GitHub Actions
wheel-windows-cp313-cp313t-arm64 GitHub Actions
wheel-windows-cp314-cp314-arm64 GitHub Actions
wheel-windows-cp314-cp314t-arm64 GitHub Actions

@pitrou
Copy link
Member

pitrou commented Dec 16, 2025

Updated vcpkg.json to exclude the xsimd dependency on Windows ARM64 due to MSVC compatibility issues.

Can you open report the issue on the xsimd issue tracker? Better yet if you can help them fix the issue :)

Added a batch script invoked by the workflow to build both the C++ and Python components of Arrow using the MSVC toolchain.

Is there a reason to use a separate script? It seems quite similar to the one for x86 Windows wheels.

@MugundanMCW
Copy link
Author

MugundanMCW commented Dec 17, 2025

Hi @pitrou

Can you open report the issue on the xsimd issue tracker? Better yet if you can help them fix the issue :)

  • Regarding xsimd, there is already an existing issue in the repository tracking MSVC compatibility, and we are currently working on resolving the compilation errors encountered when building xsimd with MSVC.

Is there a reason to use a separate script? It seems quite similar to the one for x86 Windows wheels.

  • The existing x86 wheel build script contains some x86 specific information that are currently hardcoded. To enable Windows ARM64 support, I have created a separate script with the corresponding ARM64 specific information.
  • Alternatively, these Windows ARM64 compatibility changes can be integrated into the existing script by updating it to detect the target architecture at runtime and define appropriate build configurations. Please let me know If I would have to integrate the ARM64 compatibility changes in the existing script.

@pitrou
Copy link
Member

pitrou commented Dec 17, 2025

Alternatively, these Windows ARM64 compatibility changes can be integrated into the existing script by updating it to detect the target architecture at runtime and define appropriate build configurations. Please let me know If I would have to integrate the ARM64 compatibility changes in the existing script.

Yes, please do so.

@MugundanMCW
Copy link
Author

Hi @pitrou
I have integrated both the ARM64 and x86 wheel build processes into the python_wheel_windows_build batch script. Please let me know if any further changes are needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting change review Awaiting change review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants