diff --git a/builder/build-wheels.sh b/builder/build-wheels.sh index 585ab56..60a8bfc 100755 --- a/builder/build-wheels.sh +++ b/builder/build-wheels.sh @@ -13,6 +13,9 @@ yum install -y cmake3 gsl-devel zlib-devel fftw3-devel libffi-devel hdf5 hdf5-de ln -fs /usr/bin/cmake3 /usr/bin/cmake +test -d /io/wheelhouse || mkdir /io/wheelhouse +test -d /io/wheelhouse/fix || mkdir /io/wheelhouse/fix + ALL_PYTHON="cp37-cp37m cp38-cp38 cp39-cp39 cp310-cp310" # Compile wheels @@ -25,8 +28,8 @@ for pkg in $ALL_PYTHON; do done # Bundle external shared libraries into the wheels -for whl in wheelhouse/cosmotool*.whl; do - auditwheel repair "$whl" --plat $PLAT -w /io/wheelhouse/ +for whl in /io/wheelhouse/cosmotool*.whl; do + auditwheel repair "$whl" --plat $PLAT -w /io/wheelhouse/fix done # Install packages and test diff --git a/external/external_build.cmake b/external/external_build.cmake index 990cdca..cfcbdc4 100644 --- a/external/external_build.cmake +++ b/external/external_build.cmake @@ -5,11 +5,11 @@ OPTION(ENABLE_OPENMP "Set to Yes if Healpix and/or you need openMP" OFF) SET(FFTW_URL "http://www.fftw.org/fftw-3.3.3.tar.gz" CACHE STRING "URL to download FFTW from") SET(EIGEN_URL "https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.bz2" CACHE STRING "URL to download Eigen from") SET(GENGETOPT_URL "ftp://ftp.gnu.org/gnu/gengetopt/gengetopt-2.22.5.tar.gz" CACHE STRING "URL to download gengetopt from") -SET(HDF5_URL "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.18/src/hdf5-1.8.18.tar.bz2" CACHE STRING "URL to download HDF5 from") -SET(NETCDF_URL "ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.5.0.tar.gz" CACHE STRING "URL to download NetCDF from") -SET(NETCDFCXX_URL "https://github.com/Unidata/netcdf-cxx4/archive/v4.3.0.tar.gz" CACHE STRING "URL to download NetCDF-C++ from") -SET(BOOST_URL "https://boostorg.jfrog.io/artifactory/main/release/1.74.0/source/boost_1_74_0.tar.bz2" CACHE STRING "URL to download Boost from") -SET(GSL_URL "ftp://ftp.gnu.org/gnu/gsl/gsl-1.15.tar.gz" CACHE STRING "URL to download GSL from ") +SET(HDF5_URL "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.2/src/hdf5-1.12.2.tar.gz" CACHE STRING "URL to download HDF5 from") +SET(NETCDF_URL "https://downloads.unidata.ucar.edu/netcdf-c/4.9.2/netcdf-c-4.9.2.tar.gz" CACHE STRING "URL to download NetCDF from") +SET(NETCDFCXX_URL "https://github.com/Unidata/netcdf-cxx4/archive/v4.3.1.tar.gz" CACHE STRING "URL to download NetCDF-C++ from") +SET(BOOST_URL "https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.tar.gz" CACHE STRING "URL to download Boost from") +SET(GSL_URL "https://ftpmirror.gnu.org/gsl/gsl-2.7.tar.gz" CACHE STRING "URL to download GSL from ") mark_as_advanced(FFTW_URL EIGEN_URL HDF5_URL NETCDF_URL BOOST_URL GSL_URL) SET(all_deps) @@ -90,7 +90,7 @@ if (INTERNAL_HDF5) ExternalProject_Add(hdf5 PREFIX ${BUILD_PREFIX}/hdf5-prefix URL ${HDF5_URL} - URL_HASH MD5=29117bf488887f89888f9304c8ebea0b + URL_HASH MD5=30172c75e436d7f2180e274071a4ca97 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXT_INSTALL} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} @@ -99,6 +99,7 @@ if (INTERNAL_HDF5) -DHDF5_BUILD_TOOLS=ON -DHDF5_BUILD_HL_LIB=ON -DBUILD_SHARED_LIBS=OFF + -DHDF5_ENABLE_Z_LIB_SUPPORT=ON ) SET(cosmotool_DEPS ${cosmotool_DEPS} hdf5) SET(hdf5_built hdf5) @@ -106,11 +107,11 @@ if (INTERNAL_HDF5) SET(HDF5_ROOTDIR ${HDF5_BIN_DIR}) SET(CONFIGURE_LDFLAGS "${CONFIGURE_LDFLAGS} -L${HDF5_BIN_DIR}/lib") SET(CONFIGURE_LIBS "${CONFIGURE_LIBS} -ldl") - set(HDF5_C_STATIC_LIBRARY ${HDF5_BIN_DIR}/lib/libhdf5-static.a) - set(HDF5_HL_STATIC_LIBRARY ${HDF5_BIN_DIR}/lib/libhdf5_hl-static.a) - set(HDF5_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5-static.a CACHE STRING "HDF5 lib" FORCE) - set(HDF5_HL_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5_hl-static.a CACHE STRING "HDF5 HL lib" FORCE) - set(HDF5_CXX_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5_cpp-static.a CACHE STRING "HDF5 C++ lib" FORCE) + set(HDF5_C_STATIC_LIBRARY ${HDF5_BIN_DIR}/lib/libhdf5.a) + set(HDF5_HL_STATIC_LIBRARY ${HDF5_BIN_DIR}/lib/libhdf5_hl.a) + set(HDF5_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5.a CACHE STRING "HDF5 lib" FORCE) + set(HDF5_HL_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5_hl.a CACHE STRING "HDF5 HL lib" FORCE) + set(HDF5_CXX_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5_cpp.a CACHE STRING "HDF5 C++ lib" FORCE) SET(HDF5_INCLUDE_DIRS ${HDF5_BIN_DIR}/include CACHE STRING "HDF5 include path" FORCE) mark_as_advanced(HDF5_LIBRARIES HDF5_CXX_LIBRARIES HDF5_INCLUDE_DIRS) @@ -168,7 +169,7 @@ if (INTERNAL_NETCDF) SET(NETCDF_CONFIG_COMMAND ${NETCDF_SOURCE_DIR}/configure --prefix=${NETCDF_BIN_DIR} --libdir=${NETCDF_BIN_DIR}/lib --enable-netcdf-4 --with-pic --disable-shared --disable-dap - --disable-cdmremote --disable-rpc --enable-cxx-4 + --disable-byterange --disable-cdmremote --disable-rpc --enable-cxx-4 --disable-examples ${EXTRA_NC_FLAGS} CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER}) list(INSERT CMAKE_PREFIX_PATH 0 ${EXT_INSTALL}) @@ -186,6 +187,7 @@ if (INTERNAL_NETCDF) -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DENABLE_NETCDF4=ON + -DENABLE_BYTERANGE=FALSE -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DENABLE_DAP=OFF -DCMAKE_INSTALL_PREFIX=${NETCDF_BIN_DIR} @@ -242,7 +244,7 @@ if (INTERNAL_BOOST) ExternalProject_Add(boost URL ${BOOST_URL} PREFIX ${BUILD_PREFIX}/boost-prefix - URL_HASH MD5=da07ca30dd1c0d1fdedbd487efee01bd + URL_HASH MD5=f7050f554a65f6a42ece221eaeec1660 CONFIGURE_COMMAND ${BOOST_SOURCE_DIR}/bootstrap.sh --prefix=${CMAKE_BINARY_DIR}/ext_build/boost BUILD_IN_SOURCE 1 diff --git a/setup.py b/setup.py index f9b7042..857eab4 100644 --- a/setup.py +++ b/setup.py @@ -76,9 +76,9 @@ class InstallCMakeLibs(install_lib): # # your files are moved to the appropriate location when the installation # # is run # -# libs = [os.path.join(bin_dir, _lib) for _lib in -# os.listdir(bin_dir) if -# os.path.isfile(os.path.join(bin_dir, _lib)) and +# libs = [os.path.join(bin_dir, _lib) for _lib in +# os.listdir(bin_dir) if +# os.path.isfile(os.path.join(bin_dir, _lib)) and # os.path.splitext(_lib)[1] in [".dll", ".so"] # and not (_lib.startswith("python") or _lib.startswith(PACKAGE_NAME))] # @@ -87,16 +87,16 @@ class InstallCMakeLibs(install_lib): # shutil.move(lib, os.path.join(self.build_dir, # os.path.basename(lib))) # -# # Mark the libs for installation, adding them to -# # distribution.data_files seems to ensure that setuptools' record +# # Mark the libs for installation, adding them to +# # distribution.data_files seems to ensure that setuptools' record # # writer appends them to installed-files.txt in the package's egg-info # # -# # Also tried adding the libraries to the distribution.libraries list, -# # but that never seemed to add them to the installed-files.txt in the -# # egg-info, and the online recommendation seems to be adding libraries -# # into eager_resources in the call to setup(), which I think puts them -# # in data_files anyways. -# # +# # Also tried adding the libraries to the distribution.libraries list, +# # but that never seemed to add them to the installed-files.txt in the +# # egg-info, and the online recommendation seems to be adding libraries +# # into eager_resources in the call to setup(), which I think puts them +# # in data_files anyways. +# # # # What is the best way? # # # These are the additional installation files that should be @@ -104,7 +104,7 @@ class InstallCMakeLibs(install_lib): # # step; depending on the files that are generated from your cmake # # build chain, you may need to modify the below code # -# self.distribution.data_files = [os.path.join(self.install_dir, +# self.distribution.data_files = [os.path.join(self.install_dir, # os.path.basename(lib)) # for lib in libs] # print(self.distribution.data_files) @@ -213,7 +213,7 @@ class BuildCMakeExt(build_ext): if _pyd_top[0].startswith(PACKAGE_NAME): if os.path.splitext(_pyd)[1] in [".pyd", ".so"] or _pyd_top[-1] == 'config.py': pyd_path.append((_pyd_top,_pyd)) - + for top,p in pyd_path: _,n = os.path.split(p) @@ -229,7 +229,7 @@ class BuildCMakeExt(build_ext): CosmoTool_extension = CMakeExtension(name="cosmotool") setup(name='cosmotool', - version='1.3.2', + version='1.3.3', packages=["cosmotool"], package_dir={'cosmotool': 'python/cosmotool'}, install_requires=['numpy','cffi','numexpr','pyfftw','h5py'],