Skip to content

Commit 1dc4ecb

Browse files
committed
BUG: Use build instead of pip for builds
pip wheel --config-settings flag is not available in the pip available with Python 3.8, 3.9 on macOS.
1 parent 09292e4 commit 1dc4ecb

File tree

5 files changed

+110
-100
lines changed

5 files changed

+110
-100
lines changed

requirements-dev.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
ninja==1.11.1.1
22
scikit-build-core==0.8.2
3+
build==1.2.1
4+
pyproject-metadata
5+
pathspec

scripts/internal/manylinux-build-wheels.sh

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ for PYBIN in "${PYBINARIES[@]}"; do
7171
PYPROJECT_CONFIGURE="${script_dir}/../pyproject_configure.py"
7272

7373
# Clean up previous invocations
74-
rm -rf ${build_path}
74+
# rm -rf ${build_path}
7575

7676
if [[ ${SINGLE_WHEEL} == 1 ]]; then
7777

@@ -82,23 +82,24 @@ for PYBIN in "${PYBINARIES[@]}"; do
8282
# Configure pyproject.toml
8383
${PYBIN}/python ${PYPROJECT_CONFIGURE} "itk"
8484
# Generate wheel
85-
${PYBIN}/python -m pip \
85+
${PYBIN}/python -m build \
8686
--verbose \
87-
wheel \
88-
--wheel-dir dist \
89-
--no-deps \
90-
--config-settings=cmake.define.ITK_SOURCE_DIR:PATH=${source_path} \
91-
--config-settings=cmake.define.ITK_BINARY_DIR:PATH=${build_path} \
92-
--config-settings=cmake.define.ITKPythonPackage_ITK_BINARY_REUSE:BOOL=OFF \
93-
--config-settings=cmake.define.ITKPythonPackage_WHEEL_NAME:STRING=itk \
94-
--config-settings=cmake.define.CMAKE_CXX_COMPILER_TARGET:STRING=$(uname -m)-linux-gnu \
95-
"--config-settings=cmake.define.CMAKE_CXX_FLAGS:STRING=$compile_flags" \
96-
"--config-settings=cmake.define.CMAKE_C_FLAGS:STRING=$compile_flags" \
97-
"--config-settings=cmake.define.CMAKE_BUILD_TYPE:STRING=${build_type}" \
98-
--config-settings=cmake.define.Python3_EXECUTABLE:FILEPATH=${Python3_EXECUTABLE} \
99-
--config-settings=cmake.define.Python3_INCLUDE_DIR:PATH=${Python3_INCLUDE_DIR} \
100-
--config-settings=cmake.define.Module_ITKTBB:BOOL=ON \
101-
--config-settings=cmake.define.TBB_DIR:PATH=${tbb_dir} \
87+
--wheel \
88+
--outdir dist \
89+
--no-isolation \
90+
--skip-dependency-check \
91+
--config-setting=cmake.define.ITK_SOURCE_DIR:PATH=${source_path} \
92+
--config-setting=cmake.define.ITK_BINARY_DIR:PATH=${build_path} \
93+
--config-setting=cmake.define.ITKPythonPackage_ITK_BINARY_REUSE:BOOL=OFF \
94+
--config-setting=cmake.define.ITKPythonPackage_WHEEL_NAME:STRING=itk \
95+
--config-setting=cmake.define.CMAKE_CXX_COMPILER_TARGET:STRING=$(uname -m)-linux-gnu \
96+
"--config-setting=cmake.define.CMAKE_CXX_FLAGS:STRING=$compile_flags" \
97+
"--config-setting=cmake.define.CMAKE_C_FLAGS:STRING=$compile_flags" \
98+
"--config-setting=cmake.define.CMAKE_BUILD_TYPE:STRING=${build_type}" \
99+
--config-setting=cmake.define.Python3_EXECUTABLE:FILEPATH=${Python3_EXECUTABLE} \
100+
--config-setting=cmake.define.Python3_INCLUDE_DIR:PATH=${Python3_INCLUDE_DIR} \
101+
--config-setting=cmake.define.Module_ITKTBB:BOOL=ON \
102+
--config-setting=cmake.define.TBB_DIR:PATH=${tbb_dir} \
102103
.
103104

104105
else
@@ -145,19 +146,20 @@ for PYBIN in "${PYBINARIES[@]}"; do
145146
# Configure pyproject.toml
146147
${PYBIN}/python ${PYPROJECT_CONFIGURE} ${wheel_name}
147148
# Generate wheel
148-
${PYBIN}/python -m pip \
149+
${PYBIN}/python -m build \
149150
--verbose \
150-
wheel \
151-
--wheel-dir dist \
152-
--no-deps \
153-
--config-settings=cmake.define.ITK_SOURCE_DIR:PATH=${source_path} \
154-
--config-settings=cmake.define.ITK_BINARY_DIR:PATH=${build_path} \
155-
--config-settings=cmake.define.ITKPythonPackage_ITK_BINARY_REUSE:BOOL=ON \
156-
--config-settings=cmake.define.ITKPythonPackage_WHEEL_NAME:STRING=${wheel_name} \
157-
--config-settings=cmake.define.Python3_EXECUTABLE:FILEPATH=${Python3_EXECUTABLE} \
158-
--config-settings=cmake.define.Python3_INCLUDE_DIR:PATH=${Python3_INCLUDE_DIR} \
159-
--config-settings=cmake.define.CMAKE_CXX_FLAGS:STRING="${compile_flags}" \
160-
--config-settings=cmake.define.CMAKE_C_FLAGS:STRING="${compile_flags}" \
151+
--wheel \
152+
--outdir dist \
153+
--no-isolation \
154+
--skip-dependency-check \
155+
--config-setting=cmake.define.ITK_SOURCE_DIR:PATH=${source_path} \
156+
--config-setting=cmake.define.ITK_BINARY_DIR:PATH=${build_path} \
157+
--config-setting=cmake.define.ITKPythonPackage_ITK_BINARY_REUSE:BOOL=ON \
158+
--config-setting=cmake.define.ITKPythonPackage_WHEEL_NAME:STRING=${wheel_name} \
159+
--config-setting=cmake.define.Python3_EXECUTABLE:FILEPATH=${Python3_EXECUTABLE} \
160+
--config-setting=cmake.define.Python3_INCLUDE_DIR:PATH=${Python3_INCLUDE_DIR} \
161+
--config-setting=cmake.define.CMAKE_CXX_FLAGS:STRING="${compile_flags}" \
162+
--config-setting=cmake.define.CMAKE_C_FLAGS:STRING="${compile_flags}" \
161163
. \
162164
|| exit 1
163165
done

scripts/macpython-build-wheels.sh

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -131,20 +131,21 @@ for VENV in "${VENVS[@]}"; do
131131
# Configure pyproject.toml
132132
${Python3_EXECUTABLE} ${PYPROJECT_CONFIGURE} "itk"
133133
# Generate wheel
134-
${Python3_EXECUTABLE} -m pip \
134+
${Python3_EXECUTABLE} -m build \
135135
--verbose \
136-
wheel \
137-
--wheel-dir dist \
138-
--no-deps \
139-
--config-settings=cmake.define.CMAKE_MAKE_PROGRAM:FILEPATH=${NINJA_EXECUTABLE} \
140-
--config-settings=cmake.define.ITK_SOURCE_DIR:PATH=${source_path} \
141-
--config-settings=cmake.define.ITK_BINARY_DIR:PATH=${build_path} \
142-
--config-settings=cmake.define.CMAKE_OSX_DEPLOYMENT_TARGET:STRING=${osx_target} \
143-
--config-settings=cmake.define.CMAKE_OSX_ARCHITECTURES:STRING=${osx_arch} \
144-
--config-settings=cmake.define.Python3_EXECUTABLE:FILEPATH=${Python3_EXECUTABLE} \
145-
--config-settings=cmake.define.Python3_INCLUDE_DIR:PATH=${Python3_INCLUDE_DIR} \
146-
--config-settings=cmake.define.Module_ITKTBB:BOOL=${use_tbb} \
147-
--config-settings=cmake.define.TBB_DIR:PATH=${tbb_dir} \
136+
--wheel \
137+
--outdir dist \
138+
--no-isolation \
139+
--skip-dependency-check \
140+
--config-setting=cmake.define.CMAKE_MAKE_PROGRAM:FILEPATH=${NINJA_EXECUTABLE} \
141+
--config-setting=cmake.define.ITK_SOURCE_DIR:PATH=${source_path} \
142+
--config-setting=cmake.define.ITK_BINARY_DIR:PATH=${build_path} \
143+
--config-setting=cmake.define.CMAKE_OSX_DEPLOYMENT_TARGET:STRING=${osx_target} \
144+
--config-setting=cmake.define.CMAKE_OSX_ARCHITECTURES:STRING=${osx_arch} \
145+
--config-setting=cmake.define.Python3_EXECUTABLE:FILEPATH=${Python3_EXECUTABLE} \
146+
--config-setting=cmake.define.Python3_INCLUDE_DIR:PATH=${Python3_INCLUDE_DIR} \
147+
--config-setting=cmake.define.Module_ITKTBB:BOOL=${use_tbb} \
148+
--config-setting=cmake.define.TBB_DIR:PATH=${tbb_dir} \
148149
. \
149150
${CMAKE_OPTIONS}
150151

@@ -191,20 +192,21 @@ for VENV in "${VENVS[@]}"; do
191192
# Configure pyproject.toml
192193
${Python3_EXECUTABLE} ${PYPROJECT_CONFIGURE} ${wheel_name}
193194
# Generate wheel
194-
${Python3_EXECUTABLE} -m pip \
195+
${Python3_EXECUTABLE} -m build \
195196
--verbose \
196-
wheel \
197-
--wheel-dir dist \
198-
--no-deps \
199-
--config-settings=cmake.define.ITK_SOURCE_DIR:PATH=${source_path} \
200-
--config-settings=cmake.define.ITK_BINARY_DIR:PATH=${build_path} \
201-
--config-settings=cmake.define.CMAKE_OSX_DEPLOYMENT_TARGET:STRING=${osx_target} \
202-
--config-settings=cmake.define.CMAKE_OSX_ARCHITECTURES:STRING=${osx_arch} \
203-
--config-settings=cmake.define.ITKPythonPackage_USE_TBB:BOOL=${use_tbb} \
204-
--config-settings=cmake.define.ITKPythonPackage_ITK_BINARY_REUSE:BOOL=ON \
205-
--config-settings=cmake.define.ITKPythonPackage_WHEEL_NAME:STRING=${wheel_name} \
206-
--config-settings=cmake.define.Python3_EXECUTABLE:FILEPATH=${Python3_EXECUTABLE} \
207-
--config-settings=cmake.define.Python3_INCLUDE_DIR:PATH=${Python3_INCLUDE_DIR} \
197+
--wheel \
198+
--outdir dist \
199+
--no-isolation \
200+
--skip-dependency-check \
201+
--config-setting=cmake.define.ITK_SOURCE_DIR:PATH=${source_path} \
202+
--config-setting=cmake.define.ITK_BINARY_DIR:PATH=${build_path} \
203+
--config-setting=cmake.define.CMAKE_OSX_DEPLOYMENT_TARGET:STRING=${osx_target} \
204+
--config-setting=cmake.define.CMAKE_OSX_ARCHITECTURES:STRING=${osx_arch} \
205+
--config-setting=cmake.define.ITKPythonPackage_USE_TBB:BOOL=${use_tbb} \
206+
--config-setting=cmake.define.ITKPythonPackage_ITK_BINARY_REUSE:BOOL=ON \
207+
--config-setting=cmake.define.ITKPythonPackage_WHEEL_NAME:STRING=${wheel_name} \
208+
--config-setting=cmake.define.Python3_EXECUTABLE:FILEPATH=${Python3_EXECUTABLE} \
209+
--config-setting=cmake.define.Python3_INCLUDE_DIR:PATH=${Python3_INCLUDE_DIR} \
208210
. \
209211
${CMAKE_OPTIONS} \
210212
|| exit 1

scripts/windows_build_module_wheels.py

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -77,25 +77,26 @@ def build_wheels(py_envs=DEFAULT_PY_ENVS, cleanup=True, cmake_options=[]):
7777
# Generate wheel
7878
check_call([
7979
python_executable,
80-
"-m", "pip",
80+
"-m", "build",
8181
"--verbose",
82-
"wheel",
83-
"--wheel-dir", "dist",
84-
"--no-deps",
85-
"--config-settings=wheel.py-api=%s" % wheel_py_api,
86-
"--config-settings=cmake.define.SKBUILD:BOOL=ON",
87-
"--config-settings=cmake.define.PY_SITE_PACKAGES_PATH:PATH=.",
88-
"--config-settings=cmake.define.ITK_DIR:PATH=%s" % itk_build_path,
89-
"--config-settings=cmake.define.WRAP_ITK_INSTALL_COMPONENT_IDENTIFIER:STRING=PythonWheel",
90-
"--config-settings=cmake.define.SWIG_EXECUTABLE:FILEPATH=%s/Wrapping/Generators/SwigInterface/swig/bin/swig.exe" % itk_build_path,
91-
"--config-settings=cmake.define.BUILD_TESTING:BOOL=OFF",
92-
"--config-settings=cmake.define.CMAKE_INSTALL_LIBDIR:STRING=lib",
93-
"--config-settings=cmake.define.Python3_EXECUTABLE:FILEPATH=%s" % python_executable,
94-
"--config-settings=cmake.define.Python3_INCLUDE_DIR:PATH=%s" % python_include_dir,
95-
"--config-settings=cmake.define.Python3_INCLUDE_DIRS:PATH=%s" % python_include_dir,
96-
"--config-settings=cmake.define.Python3_LIBRARY:FILEPATH=%s" % python_library,
97-
"--config-settings=cmake.define.Python3_SABI_LIBRARY:FILEPATH=%s" % python_library,
98-
] + [o.replace('-D', '--config-settings=cmake.define.') for o in cmake_options] + ['.',])
82+
"--wheel",
83+
"--outdir", "dist",
84+
"--no-isolation",
85+
"--skip-dependency-check",
86+
"--config-setting=wheel.py-api=%s" % wheel_py_api,
87+
"--config-setting=cmake.define.SKBUILD:BOOL=ON",
88+
"--config-setting=cmake.define.PY_SITE_PACKAGES_PATH:PATH=.",
89+
"--config-setting=cmake.define.ITK_DIR:PATH=%s" % itk_build_path,
90+
"--config-setting=cmake.define.WRAP_ITK_INSTALL_COMPONENT_IDENTIFIER:STRING=PythonWheel",
91+
"--config-setting=cmake.define.SWIG_EXECUTABLE:FILEPATH=%s/Wrapping/Generators/SwigInterface/swig/bin/swig.exe" % itk_build_path,
92+
"--config-setting=cmake.define.BUILD_TESTING:BOOL=OFF",
93+
"--config-setting=cmake.define.CMAKE_INSTALL_LIBDIR:STRING=lib",
94+
"--config-setting=cmake.define.Python3_EXECUTABLE:FILEPATH=%s" % python_executable,
95+
"--config-setting=cmake.define.Python3_INCLUDE_DIR:PATH=%s" % python_include_dir,
96+
"--config-setting=cmake.define.Python3_INCLUDE_DIRS:PATH=%s" % python_include_dir,
97+
"--config-setting=cmake.define.Python3_LIBRARY:FILEPATH=%s" % python_library,
98+
"--config-setting=cmake.define.Python3_SABI_LIBRARY:FILEPATH=%s" % python_library,
99+
] + [o.replace('-D', '--config-setting=cmake.define.') for o in cmake_options] + ['.',])
99100
else:
100101
# scikit-build classic
101102
build_type = "Release"

scripts/windows_build_wheels.py

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -129,20 +129,21 @@ def build_wheel(python_version, build_type="Release", single_wheel=False,
129129
# Generate wheel
130130
check_call([
131131
python_executable,
132-
"-m", "pip",
132+
"-m", "build",
133133
"--verbose",
134-
"wheel",
135-
"--wheel-dir", "dist",
136-
"--no-deps",
137-
"--config-settings=cmake.build-type=%s" % build_type,
138-
"--config-settings=cmake.define.ITK_SOURCE_DIR:PATH=%s" % source_path,
139-
"--config-settings=cmake.define.ITK_BINARY_DIR:PATH=%s" % build_path,
140-
"--config-settings=cmake.define.Python3_EXECUTABLE:FILEPATH=%s" % python_executable,
141-
"--config-settings=cmake.define.Python3_INCLUDE_DIR:PATH=%s" % python_include_dir,
142-
"--config-settings=cmake.define.Python3_INCLUDE_DIRS:PATH=%s" % python_include_dir,
143-
"--config-settings=cmake.define.Python3_LIBRARY:FILEPATH=%s" % python_library,
144-
"--config-settings=cmake.define.DOXYGEN_EXECUTABLE:FILEPATH=C:/P/doxygen/doxygen.exe",
145-
] + [o.replace('-D', '--config-settings=cmake.define.') for o in cmake_options] + ['.',])
134+
"--wheel",
135+
"--outdir", "dist",
136+
"--no-isolation",
137+
"--skip-dependency-check",
138+
"--config-setting=cmake.build-type=%s" % build_type,
139+
"--config-setting=cmake.define.ITK_SOURCE_DIR:PATH=%s" % source_path,
140+
"--config-setting=cmake.define.ITK_BINARY_DIR:PATH=%s" % build_path,
141+
"--config-setting=cmake.define.Python3_EXECUTABLE:FILEPATH=%s" % python_executable,
142+
"--config-setting=cmake.define.Python3_INCLUDE_DIR:PATH=%s" % python_include_dir,
143+
"--config-setting=cmake.define.Python3_INCLUDE_DIRS:PATH=%s" % python_include_dir,
144+
"--config-setting=cmake.define.Python3_LIBRARY:FILEPATH=%s" % python_library,
145+
"--config-setting=cmake.define.DOXYGEN_EXECUTABLE:FILEPATH=C:/P/doxygen/doxygen.exe",
146+
] + [o.replace('-D', '--config-setting=cmake.define.') for o in cmake_options] + ['.',])
146147

147148
else:
148149

@@ -169,21 +170,22 @@ def build_wheel(python_version, build_type="Release", single_wheel=False,
169170
# Generate wheel
170171
check_call([
171172
python_executable,
172-
"-m", "pip",
173+
"-m", "build",
173174
"--verbose",
174-
"wheel",
175-
"--wheel-dir", "dist",
176-
"--no-deps",
177-
"--config-settings=cmake.build-type=%s" % build_type,
178-
"--config-settings=cmake.define.ITK_SOURCE_DIR:PATH=%s" % source_path,
179-
"--config-settings=cmake.define.ITK_BINARY_DIR:PATH=%s" % build_path,
180-
"--config-settings=cmake.define.ITKPythonPackage_ITK_BINARY_REUSE:BOOL=ON",
181-
"--config-settings=cmake.define.ITKPythonPackage_WHEEL_NAME:STRING=%s" % wheel_name,
182-
"--config-settings=cmake.define.Python3_EXECUTABLE:FILEPATH=%s" % python_executable,
183-
"--config-settings=cmake.define.Python3_INCLUDE_DIR:PATH=%s" % python_include_dir,
184-
"--config-settings=cmake.define.Python3_INCLUDE_DIRS:PATH=%s" % python_include_dir,
185-
"--config-settings=cmake.define.Python3_LIBRARY:FILEPATH=%s" % python_library
186-
] + [o.replace('-D', '--config-settings=cmake.define.') for o in cmake_options] + ['.',])
175+
"--wheel",
176+
"--outdir", "dist",
177+
"--no-isolation",
178+
"--skip-dependency-check",
179+
"--config-setting=cmake.build-type=%s" % build_type,
180+
"--config-setting=cmake.define.ITK_SOURCE_DIR:PATH=%s" % source_path,
181+
"--config-setting=cmake.define.ITK_BINARY_DIR:PATH=%s" % build_path,
182+
"--config-setting=cmake.define.ITKPythonPackage_ITK_BINARY_REUSE:BOOL=ON",
183+
"--config-setting=cmake.define.ITKPythonPackage_WHEEL_NAME:STRING=%s" % wheel_name,
184+
"--config-setting=cmake.define.Python3_EXECUTABLE:FILEPATH=%s" % python_executable,
185+
"--config-setting=cmake.define.Python3_INCLUDE_DIR:PATH=%s" % python_include_dir,
186+
"--config-setting=cmake.define.Python3_INCLUDE_DIRS:PATH=%s" % python_include_dir,
187+
"--config-setting=cmake.define.Python3_LIBRARY:FILEPATH=%s" % python_library
188+
] + [o.replace('-D', '--config-setting=cmake.define.') for o in cmake_options] + ['.',])
187189

188190
# Remove unnecessary files for building against ITK
189191
if cleanup:

0 commit comments

Comments
 (0)