From 17f041a387835da2274b4b17c3b5db812c811c31 Mon Sep 17 00:00:00 2001 From: clarisma <56932851+clarisma@users.noreply.github.com> Date: Tue, 13 Oct 2026 14:45:27 +0200 Subject: [PATCH 1/5] Use Ninja as build system for Windows --- .github/workflows/build_wheels.yml | 12 +++++++++++- .github/workflows/ci.yml | 24 ++++++++++++++++++++++-- .gitignore | 1 + 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 65622d8..5abe11b 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -27,6 +27,14 @@ jobs: with: python-version: '3.14' + - name: Set up MSVC + if: runner.os == 'Windows' + uses: ilammy/msvc-dev-cmd@v1 + + - name: Install Ninja + if: runner.os == 'Windows' + run: python -m pip install ninja + - name: Install requirements run: python -m pip install cibuildwheel build @@ -47,7 +55,9 @@ jobs: CIBW_BEFORE_BUILD_LINUX: yum install -y expat-devel zlib-devel bzip2-devel lz4-devel CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=11.0 SKBUILD_CMAKE_ARGS=-DWITH_LZ4=OFF CIBW_BEFORE_BUILD_WINDOWS: vcpkg install bzip2 expat zlib lz4 - CIBW_ENVIRONMENT_WINDOWS: 'CMAKE_TOOLCHAIN_FILE="C:/vcpkg/scripts/buildsystems/vcpkg.cmake"' + CIBW_ENVIRONMENT_WINDOWS: >- + CMAKE_TOOLCHAIN_FILE="C:/vcpkg/scripts/buildsystems/vcpkg.cmake" + CMAKE_GENERATOR=Ninja CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: 'pipx run delvewheel repair --add-path ${{ matrix.vcpkg }}/bin/ --add-path ${{ matrix.vcpkg }}/debug/bin -w {dest_dir} {wheel}' - uses: actions/upload-artifact@v7 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2bc63e3..1ff5b33 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -408,10 +408,20 @@ jobs: env: VCPKG_DEFAULT_BINARY_CACHE: C:/vcpkg_binary_cache + CMAKE_GENERATOR: Ninja + CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake steps: - uses: actions/checkout@v7 + - name: Set up MSVC + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: amd64 + + - name: Install Ninja + run: pip install ninja + - uses: actions/cache@v6 with: path: | @@ -423,7 +433,7 @@ jobs: shell: bash - name: Install packages - run: vcpkg install bzip2:x64-windows expat:x64-windows zlib:x64-windows lz4:x86-windows + run: vcpkg install bzip2:x64-windows expat:x64-windows zlib:x64-windows lz4:x64-windows shell: bash - name: Set up Python 3.8 @@ -547,10 +557,20 @@ jobs: env: VCPKG_DEFAULT_BINARY_CACHE: C:/vcpkg_binary_cache + CMAKE_GENERATOR: Ninja + CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake steps: - uses: actions/checkout@v7 + - name: Set up MSVC + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: amd64 + + - name: Install Ninja + run: pip install ninja + - uses: actions/cache@v6 with: path: | @@ -563,7 +583,7 @@ jobs: - name: Install packages run: | - vcpkg install bzip2:x64-windows expat:x64-windows zlib:x64-windows lz4:x86-windows + vcpkg install bzip2:x64-windows expat:x64-windows zlib:x64-windows lz4:x64-windows shell: bash - name: Set up Python 3.13t diff --git a/.gitignore b/.gitignore index 385c1bd..7533e77 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ osmium.egg-info .ycm_extra_conf.py .ipynb_checkpoints docs/data/out +.idea/ From 9e24e1358ed31e3cf58d06578f825537b663da91 Mon Sep 17 00:00:00 2001 From: clarisma <56932851+clarisma@users.noreply.github.com> Date: Tue, 13 Oct 2026 14:50:20 +0200 Subject: [PATCH 2/5] Enable msvc setup for ARM --- .github/workflows/build_wheels.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 5abe11b..c3e5e82 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -30,6 +30,8 @@ jobs: - name: Set up MSVC if: runner.os == 'Windows' uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ runner.arch == 'ARM64' && 'arm64' || 'x64' }} - name: Install Ninja if: runner.os == 'Windows' From b5a06b7d193bef7efcf87c7d9899f10bf34ac815 Mon Sep 17 00:00:00 2001 From: clarisma <56932851+clarisma@users.noreply.github.com> Date: Tue, 13 Oct 2026 15:48:38 +0200 Subject: [PATCH 3/5] Use a fixed build directory --- .github/workflows/build_wheels.yml | 3 ++- .github/workflows/ci.yml | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index c3e5e82..1e948b6 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -41,7 +41,7 @@ jobs: run: python -m pip install cibuildwheel build - name: Get dependencies via sdist - run: python -m build --sdist + run: python -m build --sdist -C build-dir=build/sdist - name: Build wheels run: | @@ -54,6 +54,7 @@ jobs: CIBW_TEST_REQUIRES: pytest pytest-httpserver CIBW_TEST_COMMAND: pytest {project}/test CIBW_BUILD_FRONTEND: build + CIBW_CONFIG_SETTINGS_WINDOWS: "build-dir=build/{wheel_tag}" CIBW_BEFORE_BUILD_LINUX: yum install -y expat-devel zlib-devel bzip2-devel lz4-devel CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=11.0 SKBUILD_CMAKE_ARGS=-DWITH_LZ4=OFF CIBW_BEFORE_BUILD_WINDOWS: vcpkg install bzip2 expat zlib lz4 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1ff5b33..b230281 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -444,7 +444,7 @@ jobs: - name: Build package 3.8 run: | pip install build wheel - python -m build + python -m build -C build-dir="$GITHUB_WORKSPACE/build/{state}-{wheel_tag}" shell: bash env: CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake @@ -457,7 +457,7 @@ jobs: - name: Build package 3.9 run: | pip install build wheel - python -m build + python -m build -C build-dir="$GITHUB_WORKSPACE/build/{state}-{wheel_tag}" shell: bash env: CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake @@ -470,7 +470,7 @@ jobs: - name: Build package 3.10 run: | pip install build wheel - python -m build + python -m build -C build-dir="$GITHUB_WORKSPACE/build/{state}-{wheel_tag}" shell: bash env: CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake @@ -483,7 +483,7 @@ jobs: - name: Build package 3.11 run: | pip install build wheel - python -m build + python -m build -C build-dir="$GITHUB_WORKSPACE/build/{state}-{wheel_tag}" shell: bash env: CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake @@ -496,7 +496,7 @@ jobs: - name: Build package 3.12 run: | pip install build wheel - python -m build + python -m build -C build-dir="$GITHUB_WORKSPACE/build/{state}-{wheel_tag}" shell: bash env: CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake @@ -509,7 +509,7 @@ jobs: - name: Build package 3.13 run: | pip install build wheel - python -m build + python -m build -C build-dir="$GITHUB_WORKSPACE/build/{state}-{wheel_tag}" shell: bash env: CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake @@ -522,7 +522,7 @@ jobs: - name: Build package 3.14 run: | pip install build wheel - python -m build + python -m build -C build-dir="$GITHUB_WORKSPACE/build/{state}-{wheel_tag}" shell: bash env: CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake @@ -536,7 +536,7 @@ jobs: - name: Build package 3.15 run: | pip install build wheel - python -m build + python -m build -C build-dir="$GITHUB_WORKSPACE/build/{state}-{wheel_tag}" shell: bash env: CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake @@ -594,7 +594,7 @@ jobs: - name: Build package 3.13t run: | pip install build wheel - python -m build + python -m build -C build-dir="$GITHUB_WORKSPACE/build/{state}-{wheel_tag}" shell: bash env: CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake @@ -608,7 +608,7 @@ jobs: - name: Build package 3.14t run: | pip install build wheel - python -m build + python -m build -C build-dir="$GITHUB_WORKSPACE/build/{state}-{wheel_tag}" shell: bash env: CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake From 097bb0803252b08a5b59f7b6caa987f86bf88e10 Mon Sep 17 00:00:00 2001 From: clarisma <56932851+clarisma@users.noreply.github.com> Date: Tue, 13 Oct 2026 16:14:34 +0200 Subject: [PATCH 4/5] Fix test setup for free-threaded Shapely 2.2 --- .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 b230281..75a93a4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -717,7 +717,7 @@ jobs: shell: bash env: PYVER: ${{ matrix.python-version }} - if: matrix.python-version != '3.14t' + if: matrix.python-version != '3.13t' - name: Install osmium (without shapely) run: | @@ -729,7 +729,7 @@ jobs: shell: bash env: PYVER: ${{ matrix.python-version }} - if: matrix.python-version == '3.14t' + if: matrix.python-version == '3.13t' - name: Run tests run: | From 5b2a75d70073cf51688be25d363d5d5b2c04fc35 Mon Sep 17 00:00:00 2001 From: clarisma <56932851+clarisma@users.noreply.github.com> Date: Tue, 13 Oct 2026 18:15:10 +0200 Subject: [PATCH 5/5] Let scikit-build configure Ninja --- .github/workflows/build_wheels.yml | 10 ---------- .github/workflows/ci.yml | 6 ------ .gitignore | 1 - pyproject.toml | 2 ++ 4 files changed, 2 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 1e948b6..2f9ccc0 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -27,16 +27,6 @@ jobs: with: python-version: '3.14' - - name: Set up MSVC - if: runner.os == 'Windows' - uses: ilammy/msvc-dev-cmd@v1 - with: - arch: ${{ runner.arch == 'ARM64' && 'arm64' || 'x64' }} - - - name: Install Ninja - if: runner.os == 'Windows' - run: python -m pip install ninja - - name: Install requirements run: python -m pip install cibuildwheel build diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 75a93a4..ebc313a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -419,9 +419,6 @@ jobs: with: arch: amd64 - - name: Install Ninja - run: pip install ninja - - uses: actions/cache@v6 with: path: | @@ -568,9 +565,6 @@ jobs: with: arch: amd64 - - name: Install Ninja - run: pip install ninja - - uses: actions/cache@v6 with: path: | diff --git a/.gitignore b/.gitignore index 7533e77..385c1bd 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,3 @@ osmium.egg-info .ycm_extra_conf.py .ipynb_checkpoints docs/data/out -.idea/ diff --git a/pyproject.toml b/pyproject.toml index 1b9b48e..23aacda 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -69,6 +69,8 @@ pyosmium-up-to-date = "osmium.tools.pyosmium_up_to_date:main" [tool.scikit-build] minimum-version = "build-system.requires" cmake.version = ">=3.15" +ninja.version = ">=1.11" +ninja.make-fallback = false [tool.scikit-build.sdist] cmake = true