99#
1010# Shared libraries can be included in the wheel by exporting them to DYLD_LIBRARY_PATH before
1111# running this script.
12- #
12+ #
1313# For example,
1414#
1515# export DYLD_LIBRARY_PATH="/path/to/libs"
2626# * PYTHON_VERSIONS
2727# * NINJA_EXECUTABLE
2828# * SCRIPT_DIR
29- # * SKBUILD_DIR
3029# * VENVS=()
3130
3231MACPYTHON_PY_PREFIX=" "
5554
5655VENV=" ${VENVS[0]} "
5756Python3_EXECUTABLE=${VENV} /bin/python3
57+ ${Python3_EXECUTABLE} -m pip install --upgrade pip
5858${Python3_EXECUTABLE} -m pip install --no-cache delocate
5959DELOCATE_LISTDEPS=${VENV} /bin/delocate-listdeps
6060DELOCATE_WHEEL=${VENV} /bin/delocate-wheel
7272 use_tbb=" OFF"
7373fi
7474
75+ export MACOSX_DEPLOYMENT_TARGET=${osx_target}
76+
7577# Build standalone project and populate archive cache
7678tbb_dir=$PWD /oneTBB-prefix/lib/cmake/TBB
7779n_processors=$( sysctl -n hw.ncpu)
@@ -115,7 +117,7 @@ for VENV in "${VENVS[@]}"; do
115117 osx_target=" ${MACOSX_DEPLOYMENT_TARGET} "
116118 fi
117119 source_path=${SCRIPT_DIR} /../ITK-source/ITK
118- SETUP_PY_CONFIGURE =" ${script_dir} /setup_py_configure .py"
120+ PYPROJECT_CONFIGURE =" ${script_dir} /pyproject_configure .py"
119121
120122 # Clean up previous invocations
121123 rm -rf ${build_path}
@@ -126,27 +128,25 @@ for VENV in "${VENVS[@]}"; do
126128 echo " # Build single ITK wheel"
127129 echo " #"
128130
129- # Configure setup.py
130- ${Python3_EXECUTABLE} ${SETUP_PY_CONFIGURE } " itk"
131+ # Configure pyproject.toml
132+ ${Python3_EXECUTABLE} ${PYPROJECT_CONFIGURE } " itk"
131133 # Generate wheel
132- ${Python3_EXECUTABLE} setup.py bdist_wheel --build-type ${build_type} --plat-name ${plat_name} -G Ninja -- \
133- -DCMAKE_MAKE_PROGRAM:FILEPATH= ${NINJA_EXECUTABLE} \
134- -DITK_SOURCE_DIR:PATH= ${source_path} \
135- -DITK_BINARY_DIR:PATH= ${build_path} \
136- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING= ${osx_target} \
137- -DCMAKE_OSX_ARCHITECTURES:STRING =${osx_arch } \
138- -DITK_WRAP_unsigned_short:BOOL=ON \
139- -DITK_WRAP_double:BOOL=ON \
140- -DITK_WRAP_complex_double:BOOL=ON \
141- -DITK_WRAP_IMAGE_DIMS :STRING=" 2;3;4 " \
142- -DPython3_EXECUTABLE :FILEPATH=${Python3_EXECUTABLE} \
143- -DPython3_INCLUDE_DIR :PATH=${Python3_INCLUDE_DIR} \
144- -DModule_ITKTBB :BOOL=${use_tbb} \
145- -DTBB_DIR :PATH=${tbb_dir} \
146- -DITK_WRAP_DOC:BOOL=ON \
134+ ${Python3_EXECUTABLE} -m pip \
135+ --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} \
148+ . \
147149 ${CMAKE_OPTIONS}
148- # Cleanup
149- rm -r ${SKBUILD_DIR}
150150
151151 else
152152
@@ -188,28 +188,26 @@ for VENV in "${VENVS[@]}"; do
188188
189189 wheel_names=$( cat ${SCRIPT_DIR} /WHEEL_NAMES.txt)
190190 for wheel_name in ${wheel_names} ; do
191- # Configure setup.py
192- ${Python3_EXECUTABLE} ${SETUP_PY_CONFIGURE } ${wheel_name}
191+ # Configure pyproject.toml
192+ ${Python3_EXECUTABLE} ${PYPROJECT_CONFIGURE } ${wheel_name}
193193 # Generate wheel
194- ${Python3_EXECUTABLE} setup.py bdist_wheel --build-type ${build_type} --plat-name ${plat_name} -G Ninja -- \
195- -DITK_SOURCE_DIR:PATH= ${source_path} \
196- -DITK_BINARY_DIR:PATH= ${build_path} \
197- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING= ${osx_target} \
198- -DCMAKE_OSX_ARCHITECTURES:STRING= ${osx_arch} \
199- -DITKPythonPackage_USE_TBB:BOOL =${use_tbb } \
200- -DITKPythonPackage_ITK_BINARY_REUSE:BOOL=ON \
201- -DITKPythonPackage_WHEEL_NAME :STRING=${wheel_name } \
202- -DITK_WRAP_unsigned_short:BOOL=ON \
203- -DITK_WRAP_double :BOOL=ON \
204- -DITK_WRAP_complex_double :BOOL=ON \
205- -DITK_WRAP_IMAGE_DIMS :STRING=" 2;3;4 " \
206- -DPython3_EXECUTABLE :FILEPATH=${Python3_EXECUTABLE} \
207- -DPython3_INCLUDE_DIR :PATH=${Python3_INCLUDE_DIR} \
208- -DITK_WRAP_DOC:BOOL=ON \
194+ ${Python3_EXECUTABLE} -m pip \
195+ --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} \
208+ . \
209209 ${CMAKE_OPTIONS} \
210210 || exit 1
211- # Cleanup
212- rm -r ${SKBUILD_DIR}
213211 done
214212
215213 fi
@@ -220,22 +218,19 @@ for VENV in "${VENVS[@]}"; do
220218 find ${build_path} -name ' *.o' -delete
221219done
222220
223- for wheel in dist/* .whl; do
224- echo " Delocating $wheel "
225- ${DELOCATE_LISTDEPS} $wheel # lists library dependencies
226- ${DELOCATE_WHEEL} $wheel # copies library dependencies into wheel
227- done
228-
229- # Install packages and test
230- # numpy wheel not currently available for the M1
231- # https://github.com/numpy/numpy/issues/17807
232221if [[ $( arch) != " arm64" ]]; then
233- for VENV in " ${VENVS[@]} " ; do
234- ${VENV} /bin/pip install numpy
235- ${VENV} /bin/pip install itk --no-cache-dir --no-index -f ${SCRIPT_DIR} /../dist
236- (cd $HOME && ${VENV} /bin/python -c ' import itk;' )
237- (cd $HOME && ${VENV} /bin/python -c ' import itk; image = itk.Image[itk.UC, 2].New()' )
238- (cd $HOME && ${VENV} /bin/python -c ' import itkConfig; itkConfig.LazyLoading = False; import itk;' )
239- (cd $HOME && ${VENV} /bin/python ${SCRIPT_DIR} /../docs/code/test.py )
222+ for wheel in dist/* .whl; do
223+ echo " Delocating $wheel "
224+ ${DELOCATE_LISTDEPS} $wheel # lists library dependencies
225+ ${DELOCATE_WHEEL} $wheel # copies library dependencies into wheel
240226 done
241227fi
228+
229+ for VENV in " ${VENVS[@]} " ; do
230+ ${VENV} /bin/pip install numpy
231+ ${VENV} /bin/pip install itk --no-cache-dir --no-index -f ${SCRIPT_DIR} /../dist
232+ (cd $HOME && ${VENV} /bin/python -c ' import itk;' )
233+ (cd $HOME && ${VENV} /bin/python -c ' import itk; image = itk.Image[itk.UC, 2].New()' )
234+ (cd $HOME && ${VENV} /bin/python -c ' import itkConfig; itkConfig.LazyLoading = False; import itk;' )
235+ (cd $HOME && ${VENV} /bin/python ${SCRIPT_DIR} /../docs/code/test.py )
236+ done
0 commit comments