Closed Nagico2 closed 3 months ago
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).
View this failed invocation of the CLA check for more information.
For the most up to date status, view the checks section at the bottom of the pull request.
Why to modify
Recently, I attempted to install sentencepiece using pip on Windows on ARM, but due to
python/setup.py
not taking into accountarm64
in the judgment of Windows arch, cmake mistakenly built the lib for theAMD64
architecture.https://github.com/google/sentencepiece/blob/2de10cb30e982b980125d4713236dd2b29cc5f0c/python/setup.py#L125-L137
What has been modified
1. For building from source or pip install from source
I added a judgment for
arm64
throughplatform.machine()
, without modifying the judgment statements for x86 and x64, to ensure that it does not have any side effects on the original architecture building.At the same time, I have added a section in the Python build documentation that explains how to build from source code on Windows for the convenience of Windows users.
2. For building wheels for win-arm64 automatically
I've also modified the
.github/workflows/wheel.yml
to build wheels for win-arm64 automatically. But there's a bug in cibuildwheel. https://github.com/pypa/cibuildwheel/issues/1942#issue-2421737266Simply put, for the win arm64 arch in cibuildwheel,
platform.machine()
will retrieveAMD64
instead ofARM64
. This will cause issues with the judgment of arch insetup.py
, resulting in selecting the wrong lib path during build. So I add a special check for win-arm under ciwheelbuild using envPYTHON_ARCH
.Here's the Github Actions building results on my own repo. https://github.com/Nagico2/sentencepiece/actions/runs/10105917616
The outcomes
Now windows on arm users can build and install python wrapper from source. And after the modification of
python/setup.py
have been published to PyPI, windows on arm users can usepip install sentencepiece
to build and install.After the wheels for win-arm published to PyPI, indows on arm users can use
pip install sentencepiece
to install the pre-built wheels.Others
I've also tried to add win-arm build in
cmake.yml
. But there's another bug in setup-python (https://github.com/actions/setup-python/issues/915). So I haven't made any modifications to this yet.Modifying the build code may lead to serious consequences, please conduct comprehensive and full testing.
Thank you all for building the Windows on ARM ecosystem. :)