2121import os
2222import sys
2323import platform
24+ import shutil
2425import subprocess
2526import re
2627from datetime import datetime , timezone
@@ -35,11 +36,9 @@ def __init__(self, name, sourcedir=''):
3536
3637class CMakeBuild (build_ext ):
3738 def run (self ):
38- try :
39- subprocess .check_output (['cmake' , '--version' ])
40- except OSError :
39+ if shutil .which ('cmake' ) is None :
4140 raise RuntimeError (
42- "CMake >= 3.12 must be installed to build the following extensions: " +
41+ "CMake >= 3.16 must be installed to build the following extensions: " +
4342 ", " .join (e .name for e in self .extensions ))
4443
4544 for ext in self .extensions :
@@ -89,6 +88,10 @@ def build_extension(self, ext):
8988ds_version = re .sub ('@DT@' , dt .strftime ('%Y%m%d' ), ds_version )
9089ds_version = re .sub ('@HHMM@' , 'dev' + dt .strftime ('%H%M' ), ds_version )
9190
91+ setup_requires = []
92+ if shutil .which ('cmake' ) is None :
93+ setup_requires += ['cmake >= 3.16' ]
94+
9295setup (
9396 name = 'datasketches' ,
9497 version = ds_version ,
@@ -104,6 +107,7 @@ def build_extension(self, ext):
104107 # may need to add all source paths for sdist packages w/o MANIFEST.in
105108 ext_modules = [CMakeExtension ('datasketches' ,'.' )],
106109 cmdclass = {'build_ext' : CMakeBuild },
110+ setup_requires = setup_requires ,
107111 install_requires = ['numpy' ],
108112 zip_safe = False
109113)
0 commit comments