Skip to content

Commit e742dc2

Browse files
committed
fix: build from sources when forcing build from source
1 parent bf388ce commit e742dc2

File tree

3 files changed

+44
-6
lines changed

3 files changed

+44
-6
lines changed

.github/workflows/build.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,11 @@ jobs:
128128
name: cibw-sdist
129129
path: sdist
130130

131+
- name: Ensure Ninja not present on the system
132+
run: if which ninja; then false; fi
133+
131134
- name: Install SDist
132-
run: pip install $(ls sdist/*.tar.gz)[test] -Ccmake.define.BUILD_CMAKE_FROM_SOURCE=OFF
135+
run: pip install --no-binary=ninja $(ls sdist/*.tar.gz)[test] -Ccmake.define.BUILD_CMAKE_FROM_SOURCE=OFF
133136

134137
- name: Test installed SDist
135138
run: pip check && pytest ./tests

_build_backend/backend.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from __future__ import annotations
2+
3+
import os
4+
5+
from scikit_build_core import build as _orig
6+
7+
if hasattr(_orig, "prepare_metadata_for_build_editable"):
8+
prepare_metadata_for_build_editable = _orig.prepare_metadata_for_build_editable
9+
if hasattr(_orig, "prepare_metadata_for_build_wheel"):
10+
prepare_metadata_for_build_wheel = _orig.prepare_metadata_for_build_wheel
11+
build_editable = _orig.build_editable
12+
build_wheel = _orig.build_wheel
13+
build_sdist = _orig.build_sdist
14+
get_requires_for_build_editable = _orig.get_requires_for_build_editable
15+
get_requires_for_build_sdist = _orig.get_requires_for_build_sdist
16+
17+
def get_requires_for_build_wheel(config_settings=None):
18+
packages_orig = _orig.get_requires_for_build_wheel(config_settings)
19+
if os.environ.get("NINJA_PYTHON_DIST_ALLOW_NINJA_DEP", "0") != "0":
20+
return packages_orig
21+
packages = []
22+
for package in packages_orig:
23+
package_name = package.lower().split(">")[0].strip()
24+
if package_name == "ninja":
25+
# never request ninja from the ninja build
26+
continue
27+
packages.append(package)
28+
return packages

pyproject.toml

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
[build-system]
2-
requires = ["scikit-build-core"]
3-
build-backend = "scikit_build_core.build"
2+
requires = ["scikit-build-core>=0.10"]
3+
build-backend = "backend"
4+
backend-path = ["_build_backend"]
45

56
[project]
67
name = "ninja"
@@ -50,7 +51,8 @@ Homepage = "http://ninja-build.org/"
5051
"Source Code" = "https://github.com/scikit-build/ninja-python-distributions"
5152

5253
[tool.scikit-build]
53-
minimum-version = "0.9"
54+
minimum-version = "build-system.requires"
55+
ninja.make-fallback = true
5456
build-dir = "build/{wheel_tag}"
5557
wheel.py-api = "py3"
5658
wheel.expand-macos-universal-tags = true
@@ -88,6 +90,7 @@ build-verbosity = 1
8890
test-extras = "test"
8991
test-command = "pytest {project}/tests"
9092
test-skip = ["*-win_arm64", "*-macosx_universal2:arm64"]
93+
environment = { NINJA_PYTHON_DIST_ALLOW_NINJA_DEP = "1" }
9194
environment-pass = ["SETUPTOOLS_SCM_PRETEND_VERSION"]
9295
musllinux-x86_64-image = "musllinux_1_1"
9396
musllinux-i686-image = "musllinux_1_1"
@@ -96,20 +99,24 @@ musllinux-ppc64le-image = "musllinux_1_1"
9699
musllinux-s390x-image = "musllinux_1_1"
97100
musllinux-armv7l-image = "musllinux_1_2"
98101

99-
[tool.cibuildwheel.macos.environment]
100-
MACOSX_DEPLOYMENT_TARGET = "10.9"
102+
[[tool.cibuildwheel.overrides]]
103+
select = "*-macos*"
104+
inherit.environment = "append"
105+
environment = { MACOSX_DEPLOYMENT_TARGET = "10.9" }
101106

102107
[[tool.cibuildwheel.overrides]]
103108
select = "*-manylinux_{x86_64,i686}"
104109
manylinux-x86_64-image = "manylinux2010"
105110
manylinux-i686-image = "manylinux2010"
106111
build-frontend = "pip"
112+
inherit.environment = "append"
107113
environment = { LDFLAGS = "-static-libstdc++" }
108114
inherit.test-command = "prepend"
109115
test-command = "pip check"
110116

111117
[[tool.cibuildwheel.overrides]]
112118
select = "*-musllinux_*"
119+
inherit.environment = "append"
113120
environment = { LDFLAGS = "-static-libstdc++ -static-libgcc" }
114121

115122
[[tool.cibuildwheel.overrides]]

0 commit comments

Comments
 (0)