diff --git a/external/external_build.cmake b/external/external_build.cmake index fa2442b..c28c6db 100644 --- a/external/external_build.cmake +++ b/external/external_build.cmake @@ -5,13 +5,9 @@ OPTION(ENABLE_OPENMP "Set to Yes if Healpix and/or you need openMP" OFF) IF(ENABLE_OPENMP) IF (NOT OPENMP_FOUND) - MESSAGE(ERROR "No known compiler option for enabling OpenMP") + MESSAGE(FATAL_ERROR "No known compiler option for enabling OpenMP") ENDIF(NOT OPENMP_FOUND) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKED_FLAGS} ${OpenMP_C_FLAGS}") - ENDIF(ENABLE_OPENMP) SET(BUILD_PREFIX ${CMAKE_BINARY_DIR}/ep_build) @@ -91,7 +87,11 @@ if (INTERNAL_HDF5) ExternalProject_Add(hdf5 PREFIX ${BUILD_PREFIX}/hdf5-prefix URL ${HDF5_URL} - CONFIGURE_COMMAND ${HDF5_SOURCE_DIR}/configure --disable-shared --enable-cxx --with-pic --prefix=${HDF5_BIN_DIR} CPPFLAGS=${CONFIGURE_CPP_FLAGS} CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} + CONFIGURE_COMMAND ${HDF5_SOURCE_DIR}/configure + --disable-shared --enable-cxx --with-pic + --prefix=${HDF5_BIN_DIR} --libdir=${HDF5_BIN_DIR}/lib + CPPFLAGS=${CONFIGURE_CPP_FLAGS} CC=${CMAKE_C_COMPILER} + CXX=${CMAKE_CXX_COMPILER} BUILD_IN_SOURCE 1 INSTALL_COMMAND make install ) @@ -129,7 +129,12 @@ if (INTERNAL_NETCDF) DEPENDS ${hdf5_built} PREFIX ${BUILD_PREFIX}/netcdf-prefix URL ${NETCDF_URL} - CONFIGURE_COMMAND ${NETCDF_SOURCE_DIR}/configure --prefix=${NETCDF_BIN_DIR} --enable-netcdf-4 --with-pic --disable-shared --disable-dap --disable-cdmremote --disable-rpc --disable-examples ${EXTRA_NC_FLAGS} CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} + CONFIGURE_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 + --disable-examples ${EXTRA_NC_FLAGS} CC=${CMAKE_C_COMPILER} + CXX=${CMAKE_CXX_COMPILER} BUILD_IN_SOURCE 1 INSTALL_COMMAND make install ) @@ -146,7 +151,8 @@ ELSE(INTERNAL_NETCDF) find_library(NETCDFCPP_LIBRARY netcdf_c++) find_path(NETCDF_INCLUDE_PATH NAMES netcdf.h) find_path(NETCDFCPP_INCLUDE_PATH NAMES netcdf) - SET(CONFIGURE_CPP_FLAGS ${CONFIGURE_CPP_FLAGS} -I${NETCDF_INCLUDE_PATH} -I${NETCDFCPP_INCLUDE_PATH}) + SET(CONFIGURE_CPP_FLAGS ${CONFIGURE_CPP_FLAGS} + -I${NETCDF_INCLUDE_PATH} -I${NETCDFCPP_INCLUDE_PATH}) endif (INTERNAL_NETCDF) ################## @@ -158,7 +164,8 @@ if (INTERNAL_BOOST) ExternalProject_Add(boost URL ${BOOST_URL} PREFIX ${BUILD_PREFIX}/boost-prefix - CONFIGURE_COMMAND ${BOOST_SOURCE_DIR}/bootstrap.sh --prefix=${CMAKE_BINARY_DIR}/ext_build/boost + CONFIGURE_COMMAND + ${BOOST_SOURCE_DIR}/bootstrap.sh --prefix=${CMAKE_BINARY_DIR}/ext_build/boost BUILD_IN_SOURCE 1 BUILD_COMMAND ${BOOST_SOURCE_DIR}/b2 --with-exception --with-python INSTALL_COMMAND echo "No install" @@ -176,7 +183,10 @@ IF(INTERNAL_GSL) ExternalProject_Add(gsl URL ${GSL_URL} PREFIX ${BUILD_PREFIX}/gsl-prefix - CONFIGURE_COMMAND ${GSL_SOURCE_DIR}/configure --prefix=${CMAKE_BINARY_DIR}/ext_build/gsl --disable-shared CPPFLAGS=${CONFIGURE_CPP_FLAGS} CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} + CONFIGURE_COMMAND ${GSL_SOURCE_DIR}/configure + --prefix=${CMAKE_BINARY_DIR}/ext_build/gsl --disable-shared + --with-pic --libdir=${CMAKE_BINARY_DIR}/ext_build/gsl/lib + CPPFLAGS=${CONFIGURE_CPP_FLAGS} CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} BUILD_IN_SOURCE 1 BUILD_COMMAND make INSTALL_COMMAND make install @@ -224,7 +234,7 @@ ExternalProject_Add(cfitsio PREFIX ${BUILD_PREFIX}/cfitsio-prefix CONFIGURE_COMMAND ${CMAKE_SOURCE_DIR}/external/cfitsio/configure - --prefix=${CMAKE_BINARY_DIR}/ext_build/cfitsio + --prefix=${CMAKE_BINARY_DIR}/ext_build/cfitsio --libdir=${CMAKE_BINARY_DIR}/ext_build/cfitsio/lib CPPFLAGS=${CONFIGURE_CPP_FLAGS} CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} @@ -233,6 +243,7 @@ ExternalProject_Add(cfitsio INSTALL_COMMAND make install ) SET(CFITSIO_LIBRARY ${CMAKE_BINARY_DIR}/ext_build/cfitsio/lib/libcfitsio.a) +SET(CFITSIO_INCLUDE_PATH ${CMAKE_BINARY_DIR}/ext_build/cfitsio/include) ################# # Build Healpix diff --git a/external/external_python_build.cmake b/external/external_python_build.cmake index b516577..d934e17 100644 --- a/external/external_python_build.cmake +++ b/external/external_python_build.cmake @@ -2,29 +2,58 @@ INCLUDE(FindPythonInterp) SET(INTERNAL_NETCDF4_PYTHON ON) SET(INTERNAL_CYTHON ON) - +SET(INTERNAL_HEALPY ON) +SET(INTERNAL_ARGPARSE ON) IF(INTERNAL_CYTHON) SET(CYTHON_URL "http://cython.org/release/Cython-0.17.1.tar.gz" CACHE STRING "URL to download Cython from") + mark_as_advanced(CYTHON_URL) ENDIF(INTERNAL_CYTHON) IF(INTERNAL_NETCDF4_PYTHON) SET(NETCDF4_PYTHON_URL "http://netcdf4-python.googlecode.com/files/netCDF4-1.0.1.tar.gz" CACHE STRING "URL to download NetCDF4-python from") + mark_as_advanced(NETCDF4_PYTHON_URL) ENDIF(INTERNAL_NETCDF4_PYTHON) +IF (INTERNAL_HEALPY) + SET(HEALPY_URL "http://github.com/healpy/healpy/archive/1.4.1.tar.gz" CACHE STRING "URL to download Healpy from") + mark_as_advanced(HEALPY_URL) +ENDIF(INTERNAL_HEALPY) +IF(INTERNAL_ARGPARSE) + SET(SETUPTOOLS_URL "http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz" CACHE STRING "URL to download setuptools from") + SET(ARGPARSE_URL "http://argparse.googlecode.com/files/argparse-1.2.1.tar.gz" CACHE STRING "URL to download argparse from") + mark_as_advanced(ARGPARSE_URL SETUPTOOLS_URL) +ENDIF(INTERNAL_ARGPARSE) + +execute_process( + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/external/detect_site.py ${CMAKE_BINARY_DIR}/ext_build/python + RESULT_VARIABLE RET_VALUE + OUTPUT_VARIABLE PYTHON_LOCAL_SITE_PACKAGE +) +IF(RET_VALUE) + MESSAGE(FATAL_ERROR "Could not detect the location of site-package in the build directory") +ENDIF(RET_VALUE) + +STRING(REGEX REPLACE "(\r?\n)+$" "" PYTHON_LOCAL_SITE_PACKAGE "${PYTHON_LOCAL_SITE_PACKAGE}") +MESSAGE(STATUS "Python is installing its packages in ${PYTHON_LOCAL_SITE_PACKAGE}") IF(INTERNAL_CYTHON) + SET(BUILD_ENVIRONMENT + ${CMAKE_COMMAND} + "-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}" + "-DPYTHON_LOCAL_SITE_PACKAGE=${PYTHON_LOCAL_SITE_PACKAGE}" + "-DTARGET_PATH=${CMAKE_BINARY_DIR}/ext_build/python" "-P") ExternalProject_Add(cython DEPENDS ${PREV_PYTHON_BUILD} URL ${CYTHON_URL} PREFIX ${BUILD_PREFIX}/cython-prefix CONFIGURE_COMMAND echo "No configure" BUILD_IN_SOURCE 1 - BUILD_COMMAND ${PYTHON_EXECUTABLE} setup.py build - INSTALL_COMMAND ${PYTHON_EXECUTABLE} setup.py install --prefix=${CMAKE_BINARY_DIR}/ext_build/python + BUILD_COMMAND ${BUILD_ENVIRONMENT} ${CMAKE_SOURCE_DIR}/external/python_build.cmake + INSTALL_COMMAND ${BUILD_ENVIRONMENT} ${CMAKE_SOURCE_DIR}/external/python_install.cmake ) SET(PREV_PYTHON_BUILD ${PREV_PYTHON_BUILD} cython) ENDIF(INTERNAL_CYTHON) @@ -40,10 +69,11 @@ IF(INTERNAL_NETCDF4_PYTHON) "-DHDF5_DIR=${HDF5_BIN_DIR}" "-DNETCDF4_DIR=${NETCDF_BIN_DIR}" "-DPYTHON_LDFLAGS:STRING=${PYTHON_LDFLAGS}" + "-DPYTHON_LOCAL_SITE_PACKAGE=${PYTHON_LOCAL_SITE_PACKAGE}" "-DTARGET_PATH=${CMAKE_BINARY_DIR}/ext_build/python" "-P") ExternalProject_Add(netcdf4-python - DEPENDS ${PREV_PYTHON_BUILD} + DEPENDS ${PREV_PYTHON_BUILD} netcdf URL ${NETCDF4_PYTHON_URL} PREFIX ${BUILD_PREFIX}/netcdf4-python-prefix CONFIGURE_COMMAND echo "No configure" @@ -51,16 +81,56 @@ IF(INTERNAL_NETCDF4_PYTHON) BUILD_COMMAND ${BUILD_ENVIRONMENT} ${CMAKE_SOURCE_DIR}/external/python_build.cmake INSTALL_COMMAND ${BUILD_ENVIRONMENT} ${CMAKE_SOURCE_DIR}/external/python_install.cmake ) + SET(PREV_PYTHON_BUILD ${PREV_PYTHON_BUILD} netcdf4-python) ENDIF(INTERNAL_NETCDF4_PYTHON) +IF(INTERNAL_HEALPY) + SET(BUILD_ENVIRONMENT + ${CMAKE_COMMAND} + "-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}" + "-DPYTHON_CPPFLAGS:STRING=${PYTHON_CPPFLAGS}" + "-DCFITSIO_EXT_LIB=${CFITSIO_LIBRARY}" + "-DCFITSIO_EXT_INC=${CFITSIO_INCLUDE_PATH}" + "-DNETCDF4_DIR=${NETCDF_BIN_DIR}" + "-DPYTHON_LDFLAGS:STRING=${PYTHON_LDFLAGS}" + "-DPYTHON_LOCAL_SITE_PACKAGE=${PYTHON_LOCAL_SITE_PACKAGE}" + "-DTARGET_PATH=${CMAKE_BINARY_DIR}/ext_build/python" "-P") -execute_process( - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/external/detect_site.py ${CMAKE_BINARY_DIR}/ext_build/python - RESULT_VARIABLE RET_VALUE - OUTPUT_VARIABLE PYTHON_LOCAL_SITE_PACKAGE -) -IF(RET_VALUE) - MESSAGE(FATAL_ERROR "Could not detect the location of site-package in the build directory") -ENDIF(RET_VALUE) + ExternalProject_Add(healpy + DEPENDS ${PREV_PYTHON_BUILD} + URL ${HEALPY_URL} + PREFIX ${BUILD_PREFIX}/healpy-prefix + CONFIGURE_COMMAND echo "No configure" + BUILD_IN_SOURCE 1 + BUILD_COMMAND ${BUILD_ENVIRONMENT} ${CMAKE_SOURCE_DIR}/external/python_build.cmake + INSTALL_COMMAND ${BUILD_ENVIRONMENT} ${CMAKE_SOURCE_DIR}/external/python_install.cmake + ) +ENDIF(INTERNAL_HEALPY) -MESSAGE(STATUS "Python is installing its packages in ${PYTHON_LOCAL_SITE_PACKAGE}") +IF(INTERNAL_ARGPARSE) + SET(BUILD_ENVIRONMENT + ${CMAKE_COMMAND} + "-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}" + "-DPYTHON_LOCAL_SITE_PACKAGE=${PYTHON_LOCAL_SITE_PACKAGE}" + "-DTARGET_PATH=${CMAKE_BINARY_DIR}/ext_build/python" "-P") + + ExternalProject_Add(setuptools + URL ${SETUPTOOLS_URL} + PREFIX ${BUILD_PREFIX}/setuptools-prefix + CONFIGURE_COMMAND echo "No configure" + BUILD_IN_SOURCE 1 + BUILD_COMMAND ${BUILD_ENVIRONMENT} ${CMAKE_SOURCE_DIR}/external/python_build.cmake + INSTALL_COMMAND ${BUILD_ENVIRONMENT} ${CMAKE_SOURCE_DIR}/external/python_install.cmake + ) + + ExternalProject_Add(argparse + DEPENDS setuptools + URL ${ARGPARSE_URL} + PREFIX ${BUILD_PREFIX}/argparse-prefix + CONFIGURE_COMMAND echo "No configure" + BUILD_IN_SOURCE 1 + BUILD_COMMAND ${BUILD_ENVIRONMENT} ${CMAKE_SOURCE_DIR}/external/python_build.cmake + INSTALL_COMMAND ${BUILD_ENVIRONMENT} ${CMAKE_SOURCE_DIR}/external/python_install.cmake + ) + SET(AUXILIARY_PYTHON_DEPEND ${AUXILIARY_PYTHON_DEPEND} argparse) +ENDIF(INTERNAL_ARGPARSE) diff --git a/external/python_build.cmake b/external/python_build.cmake index da9b70f..ca9970e 100644 --- a/external/python_build.cmake +++ b/external/python_build.cmake @@ -2,9 +2,15 @@ SET(ENV{HDF5_DIR} ${HDF5_DIR}) SET(ENV{NETCDF4_DIR} ${NETCDF4_DIR}) SET(ENV{CPPFLAGS} ${PYTHON_CPPFLAGS}) SET(ENV{LDFLAGS} ${PYTHON_LDFLAGS}) -SET(ENV{PYTHONPATH} ${TARGET_PATH}/lib/python2.7/site-packages:$ENV{PYTHONPATH}) +SET(ENV{VOID_GSL} ${VOID_GSL}) +SET(ENV{PYTHONPATH} ${PYTHON_LOCAL_SITE_PACKAGE}:$ENV{PYTHONPATH}) +SET(ENV{CFITSIO_EXT_INC} ${CFITSIO_EXT_INC}) +SET(ENV{CFITSIO_EXT_LIB} ${CFITSIO_EXT_LIB}) + +SET(PYTHON_BUILD_COMMAND ${PYTHON_EXECUTABLE} setup.py build) +MESSAGE(STATUS "Running ${PYTHON_BUILD_COMMAND}") execute_process( - COMMAND ${PYTHON_EXECUTABLE} setup.py build + COMMAND ${PYTHON_BUILD_COMMAND} RESULT_VARIABLE RET_VALUE ) diff --git a/external/python_install.cmake b/external/python_install.cmake index 4799a98..e33e377 100644 --- a/external/python_install.cmake +++ b/external/python_install.cmake @@ -2,8 +2,16 @@ SET(ENV{HDF5_DIR} ${HDF5_DIR}) SET(ENV{NETCDF4_DIR} ${NETCDF4_DIR}) SET(ENV{CPPFLAGS} ${PYTHON_CPPFLAGS}) SET(ENV{LDFLAGS} ${PYTHON_LDFLAGS}) +SET(ENV{VOID_GSL} ${VOID_GSL}) +SET(ENV{CFITSIO_EXT_INC} ${CFITSIO_EXT_INC}) +SET(ENV{CFITSIO_EXT_LIB} ${CFITSIO_EXT_LIB}) +SET(ENV{PYTHONPATH} ${PYTHON_LOCAL_SITE_PACKAGE}:$ENV{PYTHONPATH}) + +SET(PYTHON_INSTALL_COMMAND ${PYTHON_EXECUTABLE} setup.py install --prefix=${TARGET_PATH} --install-lib=${PYTHON_LOCAL_SITE_PACKAGE}) + +message(STATUS "Running ${PYTHON_INSTALL_COMMAND}") execute_process( - COMMAND ${PYTHON_EXECUTABLE} setup.py install --prefix=${TARGET_PATH} + COMMAND ${PYTHON_INSTALL_COMMAND} RESULT_VARIABLE RET_VALUE ) diff --git a/pipeline/prepareCatalogs.py b/pipeline/prepareCatalogs.py index af9d997..bbddc2d 100755 --- a/pipeline/prepareCatalogs.py +++ b/pipeline/prepareCatalogs.py @@ -228,7 +228,7 @@ if not os.access(scriptDir, os.F_OK): os.mkdir(scriptDir) # first the directly downsampled runs # Note: ss0.002 ~ SDSS DR7 dim2 # ss0.0004 ~ SDSS DR9 mid -baseResolution = numPart/lbox/lbox/lbox # particles/Mpc^3 +baseResolution = float(numPart)/lbox/lbox/lbox # particles/Mpc^3 for thisSubSample in subSamples: keepFraction = float(thisSubSample) / baseResolution diff --git a/pipeline/prepareGadgetCatalog.py b/pipeline/prepareGadgetCatalog.py index f0548fa..e3e1ffa 100755 --- a/pipeline/prepareGadgetCatalog.py +++ b/pipeline/prepareGadgetCatalog.py @@ -219,7 +219,7 @@ if not os.access(scriptDir, os.F_OK): os.mkdir(scriptDir) # first the directly downsampled runs # Note: ss0.002 ~ SDSS DR7 dim2 # ss0.0004 ~ SDSS DR9 mid -baseResolution = numPart/lbox/lbox/lbox # particles/Mpc^3 +baseResolution = float(numPart)/lbox/lbox/lbox # particles/Mpc^3 for thisSubSample in subSamples: keepFraction = float(thisSubSample) / baseResolution diff --git a/python_tools/setup.py b/python_tools/setup.py index 5e6eebb..bd2a9e9 100644 --- a/python_tools/setup.py +++ b/python_tools/setup.py @@ -2,6 +2,9 @@ from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext import numpy as np +import os + +VOID_GSL=os.environ.get('VOID_GSL') setup( name='void_python_tools', @@ -15,6 +18,6 @@ setup( ext_modules = [ Extension("void_python_tools.apTools.chi2.velocityProfileFitNative", ["void_python_tools/apTools/chi2/velocityProfileFitNative.pyx"], - libraries=["gsl", "gslcblas"]) + libraries=["gsl", "gslcblas"], library_dirs=[VOID_GSL+"/lib"], include_dirs=[VOID_GSL+"/include"]) ] ) diff --git a/run_env.sh.in b/run_env.sh.in new file mode 100644 index 0000000..969bf9c --- /dev/null +++ b/run_env.sh.in @@ -0,0 +1,6 @@ +#!/bin/sh + +PYTHONPATH=@PYTHONPATH@ +export PYTHONPATH + +$@