From b384912c4257938ff61e7e6687eba83d458a04a6 Mon Sep 17 00:00:00 2001 From: Guilhem Lavaux Date: Fri, 18 Apr 2014 17:46:29 +0200 Subject: [PATCH] Added a patch to scipy-kdtree to fix a np.min bug in query --- external/check_and_apply_patch.cmake | 19 ++++++++++++++++++ external/external_python_build.cmake | 7 +++++++ external/patch_kdtree | 29 ++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 external/check_and_apply_patch.cmake create mode 100644 external/patch_kdtree diff --git a/external/check_and_apply_patch.cmake b/external/check_and_apply_patch.cmake new file mode 100644 index 0000000..b020ec2 --- /dev/null +++ b/external/check_and_apply_patch.cmake @@ -0,0 +1,19 @@ +SET(STAMP ${BUILD_PREFIX}/patch_applied) + +SET(RESULT "not ok") + +IF (EXISTS ${STAMP}) + FILE(READ ${STAMP} RESULT) +ENDIF (EXISTS ${STAMP}) + +IF(NOT "${RESULT}" STREQUAL "ok") + EXECUTE_PROCESS(COMMAND patch -p0 -i ${PATCH_FILE} + WORKING_DIRECTORY ${SOURCE_PREFIX} + RESULT_VARIABLE okcode) + IF(NOT "${okcode}" STREQUAL "0") + FILE(WRITE ${STAMP} "not-applied") + MESSAGE(FATAL_ERROR "Patch not applied") + ELSE(NOT "${okcode}" STREQUAL "0") + FILE(WRITE ${STAMP} "ok") + ENDIF(NOT "${okcode}" STREQUAL "0") +ENDIF(NOT "${RESULT}" STREQUAL "ok") diff --git a/external/external_python_build.cmake b/external/external_python_build.cmake index e056ee3..e93947a 100644 --- a/external/external_python_build.cmake +++ b/external/external_python_build.cmake @@ -199,7 +199,14 @@ IF(INTERNAL_KDTREE_SCIPY) 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 + PATCH_COMMAND ${CMAKE_COMMAND} + -DBUILD_PREFIX=${BUILD_PREFIX}/kdtree-scipy-prefix + -DPATCH_FILE=${CMAKE_SOURCE_DIR}/external/patch_kdtree + -DSOURCE_PREFIX=${BUILD_PREFIX}/kdtree-scipy-prefix/src/kdtree-scipy + -P ${CMAKE_SOURCE_DIR}/external/check_and_apply_patch.cmake + ) + SET(AUXILIARY_PYTHON_DEPEND ${AUXILIARY_PYTHON_DEPEND} kdtree-scipy) ENDIF(INTERNAL_KDTREE_SCIPY) diff --git a/external/patch_kdtree b/external/patch_kdtree new file mode 100644 index 0000000..847a90a --- /dev/null +++ b/external/patch_kdtree @@ -0,0 +1,29 @@ +--- periodic_kdtree.py.old 2014-04-18 17:30:39.000000000 +0200 ++++ periodic_kdtree.py 2014-04-18 17:31:59.000000000 +0200 +@@ -102,7 +102,7 @@ + # all neighbors within the given distance_upper_bound". + + # Cap distance_upper_bound +- distance_upper_bound = np.min(distance_upper_bound, ++ distance_upper_bound = min(distance_upper_bound, + self.max_distance_upper_bound) + + # Run queries over all relevant images of x +@@ -128,7 +128,7 @@ + # is a single point, not an array of points + + # Cap r +- r = np.min(r, self.max_distance_upper_bound) ++ r = min(r, self.max_distance_upper_bound) + + # Run queries over all relevant images of x + results = [] +@@ -213,7 +213,7 @@ + # all neighbors within the given distance_upper_bound". + + # Cap distance_upper_bound +- distance_upper_bound = np.min(distance_upper_bound, ++ distance_upper_bound = min(distance_upper_bound, + self.max_distance_upper_bound) + + # Run queries over all relevant images of x