From 6137191b8ec10211b65b71178cdc937bf92b4b0a Mon Sep 17 00:00:00 2001 From: Nicholas Sharp Date: Sat, 3 Jan 2026 01:03:49 -0800 Subject: [PATCH 1/9] update cibuildwheel [ci build] --- .github/workflows/test_build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_build.yml b/.github/workflows/test_build.yml index 00c6c36..7acd179 100644 --- a/.github/workflows/test_build.yml +++ b/.github/workflows/test_build.yml @@ -22,7 +22,7 @@ jobs: fail-fast: false matrix: # macos-13 is an intel runner, macos-14+ is apple silicon - os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-13, macos-latest] + os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-15-intel, macos-latest] name: Build wheels ${{ matrix.os }} runs-on: ${{ matrix.os }} @@ -40,7 +40,7 @@ jobs: python -m build --sdist - name: Run cibuildwheel - uses: pypa/cibuildwheel@v2.23.2 + uses: pypa/cibuildwheel@v3.3.0 with: config-file: ".github/workflows/cibuildwheel_config.toml" From 0df97722584180a87b5954edbd71f26b097ebfa2 Mon Sep 17 00:00:00 2001 From: Nicholas Sharp Date: Sat, 3 Jan 2026 01:13:24 -0800 Subject: [PATCH 2/9] update python [ci build] --- .github/workflows/test_build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/test_build.yml b/.github/workflows/test_build.yml index 7acd179..3b2e003 100644 --- a/.github/workflows/test_build.yml +++ b/.github/workflows/test_build.yml @@ -32,6 +32,10 @@ jobs: with: submodules: 'recursive' + - uses: actions/setup-python@v6 + with: + python-version: '3.12' + - name: Package source distribution # make sure this only happens on one of the runners, not repeated on all if: matrix.os == 'ubuntu-latest' From 33cd06f6561c01c0d4d55876f9fca3428e62f0e2 Mon Sep 17 00:00:00 2001 From: Nicholas Sharp Date: Sat, 3 Jan 2026 01:18:38 -0800 Subject: [PATCH 3/9] update version [ci build] --- .github/workflows/cibuildwheel_config.toml | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cibuildwheel_config.toml b/.github/workflows/cibuildwheel_config.toml index 78d5ab3..9050693 100644 --- a/.github/workflows/cibuildwheel_config.toml +++ b/.github/workflows/cibuildwheel_config.toml @@ -1,5 +1,5 @@ [tool.cibuildwheel] -skip = "cp36-*" # scikit-build-core requires >=3.7 +# skip = "cp36-*,cp37" # scikit-build-core requires >=3.7 build-verbosity = 3 [tool.cibuildwheel.linux] diff --git a/pyproject.toml b/pyproject.toml index f2dffdc..f687cc7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ classifiers = [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", ] -requires-python = ">=3.7" +requires-python = ">=3.9" dependencies = [ "numpy", From b8e22a3284e7fac89528edbe2a0e110022a536ae Mon Sep 17 00:00:00 2001 From: Nicholas Sharp Date: Sat, 3 Jan 2026 01:37:35 -0800 Subject: [PATCH 4/9] add macos environment [ci build] --- .github/workflows/cibuildwheel_config.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/cibuildwheel_config.toml b/.github/workflows/cibuildwheel_config.toml index 9050693..66adf7d 100644 --- a/.github/workflows/cibuildwheel_config.toml +++ b/.github/workflows/cibuildwheel_config.toml @@ -15,6 +15,10 @@ repair-wheel-command = "auditwheel repair --exclude libEGL.so.1 -w {dest_dir} {w [tool.cibuildwheel.environment.linux] CMAKE_ARGS = "DPOLYSCOPE_BACKEND_OPENGL3_EGL=ON" +# Nanobind requires C++17, which means we must target macOS 10.13 (partial support) or 10.14 (full support) +[tool.cibuildwheel.environment.macos.environment] +MACOSX_DEPLOYMENT_TARGET = "10.13" + # musllinux builds on an Alpinx Linux image, need different package names [[tool.cibuildwheel.overrides]] select = "*-musllinux*" From 3a791c3310023faf72dde7e66470ee7696ced84d Mon Sep 17 00:00:00 2001 From: Nicholas Sharp Date: Sat, 3 Jan 2026 01:52:40 -0800 Subject: [PATCH 5/9] move version to pyproject [ci build] --- .github/workflows/cibuildwheel_config.toml | 6 ++---- pyproject.toml | 6 +++++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/cibuildwheel_config.toml b/.github/workflows/cibuildwheel_config.toml index 66adf7d..5b52178 100644 --- a/.github/workflows/cibuildwheel_config.toml +++ b/.github/workflows/cibuildwheel_config.toml @@ -15,11 +15,9 @@ repair-wheel-command = "auditwheel repair --exclude libEGL.so.1 -w {dest_dir} {w [tool.cibuildwheel.environment.linux] CMAKE_ARGS = "DPOLYSCOPE_BACKEND_OPENGL3_EGL=ON" -# Nanobind requires C++17, which means we must target macOS 10.13 (partial support) or 10.14 (full support) -[tool.cibuildwheel.environment.macos.environment] -MACOSX_DEPLOYMENT_TARGET = "10.13" # musllinux builds on an Alpinx Linux image, need different package names [[tool.cibuildwheel.overrides]] select = "*-musllinux*" -before-all = "apk add libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev freeglut-dev mesa-dev mesa-gl mesa-egl" \ No newline at end of file +before-all = "apk add libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev freeglut-dev mesa-dev mesa-gl mesa-egl" + diff --git a/pyproject.toml b/pyproject.toml index f687cc7..02ab280 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,4 +33,8 @@ build-backend = "scikit_build_core.build" [tool.scikit-build] build.verbose = true -logging.level = "INFO" \ No newline at end of file +logging.level = "INFO" + +# Nanobind requires C++17, which means we must target macOS 10.13 (partial support) or 10.14 (full support) +# https://cibuildwheel.pypa.io/en/stable/cpp_standards/#macos-and-deployment-target-versions +cmake.args = ["-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13"] \ No newline at end of file From 747e611a4fe7d3e201b55cc9780403ed55614d38 Mon Sep 17 00:00:00 2001 From: Nicholas Sharp Date: Sat, 3 Jan 2026 01:58:39 -0800 Subject: [PATCH 6/9] version targets two ways [ci_build] --- .github/workflows/cibuildwheel_config.toml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cibuildwheel_config.toml b/.github/workflows/cibuildwheel_config.toml index 5b52178..e94018a 100644 --- a/.github/workflows/cibuildwheel_config.toml +++ b/.github/workflows/cibuildwheel_config.toml @@ -15,9 +15,11 @@ repair-wheel-command = "auditwheel repair --exclude libEGL.so.1 -w {dest_dir} {w [tool.cibuildwheel.environment.linux] CMAKE_ARGS = "DPOLYSCOPE_BACKEND_OPENGL3_EGL=ON" +# This matches the value in pyproject.toml +[tool.cibuildwheel.environment.macos.environment] +MACOSX_DEPLOYMENT_TARGET = "10.13" # musllinux builds on an Alpinx Linux image, need different package names [[tool.cibuildwheel.overrides]] select = "*-musllinux*" -before-all = "apk add libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev freeglut-dev mesa-dev mesa-gl mesa-egl" - +before-all = "apk add libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev freeglut-dev mesa-dev mesa-gl mesa-egl" \ No newline at end of file From 12e04e46431e46861d5e8462086f0f45339fd977 Mon Sep 17 00:00:00 2001 From: Nicholas Sharp Date: Sat, 3 Jan 2026 02:09:12 -0800 Subject: [PATCH 7/9] try again to get deploy right [ci_build] --- .github/workflows/cibuildwheel_config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cibuildwheel_config.toml b/.github/workflows/cibuildwheel_config.toml index e94018a..3fed21f 100644 --- a/.github/workflows/cibuildwheel_config.toml +++ b/.github/workflows/cibuildwheel_config.toml @@ -16,7 +16,7 @@ repair-wheel-command = "auditwheel repair --exclude libEGL.so.1 -w {dest_dir} {w CMAKE_ARGS = "DPOLYSCOPE_BACKEND_OPENGL3_EGL=ON" # This matches the value in pyproject.toml -[tool.cibuildwheel.environment.macos.environment] +[tool.cibuildwheel.macos.environment] MACOSX_DEPLOYMENT_TARGET = "10.13" # musllinux builds on an Alpinx Linux image, need different package names From ad1144a0a33ca63db523d98b11b23e43d66adb3c Mon Sep 17 00:00:00 2001 From: Nicholas Sharp Date: Sat, 3 Jan 2026 12:43:26 -0800 Subject: [PATCH 8/9] cleanup, mirror updates to publish script --- .github/workflows/cibuildwheel_config.toml | 6 +++++- .github/workflows/publish.yml | 6 +++++- .github/workflows/test_build.yml | 1 - pyproject.toml | 6 ++++-- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.github/workflows/cibuildwheel_config.toml b/.github/workflows/cibuildwheel_config.toml index 3fed21f..538eff6 100644 --- a/.github/workflows/cibuildwheel_config.toml +++ b/.github/workflows/cibuildwheel_config.toml @@ -15,7 +15,11 @@ repair-wheel-command = "auditwheel repair --exclude libEGL.so.1 -w {dest_dir} {w [tool.cibuildwheel.environment.linux] CMAKE_ARGS = "DPOLYSCOPE_BACKEND_OPENGL3_EGL=ON" -# This matches the value in pyproject.toml +# Required by nanobind for C++17. Technically it should be 10.14 +# for full support, but this seems to work and gets us somewhat older +# compatibility. +# There is a matching setting in pyproject.toml +# https://cibuildwheel.pypa.io/en/stable/cpp_standards/#macos-and-deployment-target-versions [tool.cibuildwheel.macos.environment] MACOSX_DEPLOYMENT_TARGET = "10.13" diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a2779a2..21221a7 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -26,6 +26,10 @@ jobs: - uses: actions/checkout@v4 with: submodules: 'recursive' + + - uses: actions/setup-python@v6 + with: + python-version: '3.12' - name: Package source distribution # make sure this only happens on one of the runners, not repeated on all @@ -35,7 +39,7 @@ jobs: python -m build --sdist - name: Run cibuildwheel - uses: pypa/cibuildwheel@v2.23.2 + uses: pypa/cibuildwheel@v3.3.0 with: config-file: ".github/workflows/cibuildwheel_config.toml" diff --git a/.github/workflows/test_build.yml b/.github/workflows/test_build.yml index 3b2e003..cb00a24 100644 --- a/.github/workflows/test_build.yml +++ b/.github/workflows/test_build.yml @@ -1,4 +1,3 @@ - name: Test Build # NOTE: build logic is duplicated here and in publish.yml diff --git a/pyproject.toml b/pyproject.toml index 02ab280..39550ee 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,6 +35,8 @@ build-backend = "scikit_build_core.build" build.verbose = true logging.level = "INFO" -# Nanobind requires C++17, which means we must target macOS 10.13 (partial support) or 10.14 (full support) -# https://cibuildwheel.pypa.io/en/stable/cpp_standards/#macos-and-deployment-target-versions +# Required by nanobind for C++17. Technically it should be 10.14 +# for full support, but this seems to work and gets us somewhat older +# compatibility. +# There is a matching setting in cibuildwheel_config.toml cmake.args = ["-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13"] \ No newline at end of file From 982bac40a8e8e0779259b7598556949e754daae2 Mon Sep 17 00:00:00 2001 From: Nicholas Sharp Date: Sat, 3 Jan 2026 12:49:34 -0800 Subject: [PATCH 9/9] remove stale comment --- .github/workflows/cibuildwheel_config.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/cibuildwheel_config.toml b/.github/workflows/cibuildwheel_config.toml index 538eff6..b4924cf 100644 --- a/.github/workflows/cibuildwheel_config.toml +++ b/.github/workflows/cibuildwheel_config.toml @@ -1,5 +1,4 @@ [tool.cibuildwheel] -# skip = "cp36-*,cp37" # scikit-build-core requires >=3.7 build-verbosity = 3 [tool.cibuildwheel.linux]