From bf1a7e4ac950b284d7cba77013ea229ead920916 Mon Sep 17 00:00:00 2001 From: Avasam Date: Wed, 22 Oct 2025 22:11:51 -0400 Subject: [PATCH] Shorten ` --config-setting=--build-option` commands --- .github/workflows/main.yml | 4 ++-- build_env.md | 9 ++++----- make_all.bat | 10 +++++----- setup.py | 4 ++-- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a3a4a9ab9b..f1e3838e71 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -115,10 +115,10 @@ jobs: run: pip install --upgrade build - name: Obtain ARM64 library files - run: python .github\workflows\download-arm64-libs.py .\arm64libs + run: python .github\workflows\download-arm64-libs.py ./arm64libs - name: Build wheels - run: python -m build --wheel --config-setting=--build-option=build_ext --config-setting=--build-option=-L.\arm64libs --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=build --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=bdist_wheel --config-setting=--build-option=--plat-name=win-arm64 + run: python -m build --wheel --config-setting=--build-option="build_ext -L./arm64libs --plat-name=win-arm64 build --plat-name=win-arm64 bdist_wheel --plat-name=win-arm64" - uses: actions/upload-artifact@v4 with: diff --git a/build_env.md b/build_env.md index 8000f04d9e..742d972b39 100644 --- a/build_env.md +++ b/build_env.md @@ -137,12 +137,12 @@ configuration, please [open an issue](https://github.com/mhammond/pywin32/issues - Follow the `For Visual Studio XXXX` instructions above and pick the optional ARM64 build tools - Download prebuilt Python ARM64 binaries to a temporary location on your machine. You will need this location in a later step. + - This script downloads a Python ARM64 build [from NuGet](https://www.nuget.org/packages/pythonarm64/#versions-tab) that matches the version you used to run it. ```shell - python .github\workflows\download-arm64-libraries.py "" + python .github\workflows\download-arm64-libs.py ./arm64libs ``` - - This script downloads a Python ARM64 build [from NuGet](https://www.nuget.org/packages/pythonarm64/#versions-tab) that matches the version you used to run it. - Setup the cross-compilation environment: ```shell @@ -156,13 +156,12 @@ configuration, please [open an issue](https://github.com/mhammond/pywin32/issues ``` - Build the extensions, passing the directory from earlier. You may optionally add the `bdist_wheel` command to generate a wheel. + - If you are not using an initialized build environment, you will need to specify the `build_ext`, `build` and `bdist_wheel` commands and pass `--plat-name win-arm64` to *each* of them separately. Otherwise you may get a mixed platform build and/or linker errors. ```shell - python -m build --wheel --config-setting=--build-option=build_ext --config-setting=--build-option=-L.\arm64libs --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=bdist_wheel --config-setting=--build-option=--plat-name=win-arm64 + python -m build --wheel --config-setting=--build-option="build_ext -L./arm64libs --plat-name=win-arm64 bdist_wheel --plat-name=win-arm64" ``` - - If you are not using an initialized build environment, you will need to specify the `build_ext`, `build` and `bdist_wheel` commands and pass `--plat-name win-arm64` to *each* of them separately. Otherwise you may get a mixed platform build and/or linker errors. - - Copy the built wheel to the target machine and install directly: ```shell diff --git a/make_all.bat b/make_all.bat index 7c35ab225a..316ae6dfb4 100644 --- a/make_all.bat +++ b/make_all.bat @@ -29,11 +29,11 @@ py -3.14-32 -m build --wheel py -3.14 -m build --wheel rem Check /build_env.md#build-environment to make sure you have all the required ARM64 components installed -py -3.10 -m build --wheel --config-setting=--build-option=build_ext --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=build --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=bdist_wheel --config-setting=--build-option=--plat-name=win-arm64 -py -3.11 -m build --wheel --config-setting=--build-option=build_ext --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=build --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=bdist_wheel --config-setting=--build-option=--plat-name=win-arm64 -py -3.12 -m build --wheel --config-setting=--build-option=build_ext --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=build --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=bdist_wheel --config-setting=--build-option=--plat-name=win-arm64 -py -3.13 -m build --wheel --config-setting=--build-option=build_ext --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=build --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=bdist_wheel --config-setting=--build-option=--plat-name=win-arm64 -py -3.14 -m build --wheel --config-setting=--build-option=build_ext --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=build --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=bdist_wheel --config-setting=--build-option=--plat-name=win-arm64 +py -3.10 -m build --wheel --config-setting=--build-option="build_ext --plat-name=win-arm64 build --plat-name=win-arm64 bdist_wheel --plat-name=win-arm64" +py -3.11 -m build --wheel --config-setting=--build-option="build_ext --plat-name=win-arm64 build --plat-name=win-arm64 bdist_wheel --plat-name=win-arm64" +py -3.12 -m build --wheel --config-setting=--build-option="build_ext --plat-name=win-arm64 build --plat-name=win-arm64 bdist_wheel --plat-name=win-arm64" +py -3.13 -m build --wheel --config-setting=--build-option="build_ext --plat-name=win-arm64 build --plat-name=win-arm64 bdist_wheel --plat-name=win-arm64" +py -3.14 -m build --wheel --config-setting=--build-option="build_ext --plat-name=win-arm64 build --plat-name=win-arm64 bdist_wheel --plat-name=win-arm64" @goto xit :couldnt_rm diff --git a/setup.py b/setup.py index a45dbc7e56..803fcf7f2e 100644 --- a/setup.py +++ b/setup.py @@ -13,10 +13,10 @@ For a debug (_d) version, you need a local debug build of Python, but must use the release version executable for the build. eg: - pip install . -v --config-setting=--build-option=build --config-setting=--build-option=--debug + pip install . -v --config-setting=--build-option="build --debug" Cross-compilation from x86 to ARM is well supported (assuming installed vs tools etc) - eg: - python -m build --wheel --config-setting=--build-option=build_ext --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=build --config-setting=--build-option=--plat-name=win-arm64 --config-setting=--build-option=bdist_wheel --config-setting=--build-option=--plat-name=win-arm64 + python -m build --wheel --config-setting=--build-option="build_ext --plat-name=win-arm64 build --plat-name=win-arm64 bdist_wheel --plat-name=win-arm64" Some modules require special SDKs or toolkits to build (eg, mapi/exchange), which often aren't available in CI. The build process treats them as optional -