diff --git a/debian/changelog b/debian/changelog index 063d0c255..53471d88c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,8 @@ cmake (2.8.7-3) UNRELEASED; urgency=low + * Fix some tests not to fail if absolute build path contains regex + metacharacters like +. This makes the package binNMUable again. + (patch paths_in_regex_espace_metachars.diff) -- Modestas Vainius Sun, 26 Feb 2012 23:22:41 +0200 diff --git a/debian/patches/paths_in_regex_espace_metachars.diff b/debian/patches/paths_in_regex_espace_metachars.diff new file mode 100644 index 000000000..487a38241 --- /dev/null +++ b/debian/patches/paths_in_regex_espace_metachars.diff @@ -0,0 +1,53 @@ +From: Modestas Vainius +Subject: Escape metachars before embedding paths into the regex +Forwarded: yes +Bug: http://public.kitware.com/Bug/view.php?id=12999 +Origin: vendor + +${CMake_SOURCE_DIR} and ${CMake_BINARY_DIR} cannot be embedded into regex +directly. If they contain special regex metacharacters like +, the regex +will break. So just escape such metacharacters with a backslash before +embedding the path into the regex. + +The issue affected the following tests: CTestTestConfigFileInBuildDir1 and +CTestTestConfigFileInBuildDir2. + +--- a/Tests/CMakeLists.txt ++++ b/Tests/CMakeLists.txt +@@ -16,6 +16,11 @@ MACRO(ADD_TEST_MACRO NAME COMMAND) + LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${dir}") + ENDMACRO(ADD_TEST_MACRO) + ++MACRO(REGEX_ESCAPE_STRING _OUT _IN) ++ # Escape special regex metacharacters with a backslash ++ string(REGEX REPLACE "([$^.[|*+?()]|])" "\\\\\\1" ${_OUT} "${_IN}") ++ENDMACRO(REGEX_ESCAPE_STRING _OUT _IN) ++ + INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/CheckFortran.cmake) + + # Fake a user home directory to avoid polluting the real one. +@@ -1654,9 +1659,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION= + -S "${CMake_BINARY_DIR}/Tests/CTestTestConfigFileInBuildDir1/test1.cmake" -V + --output-log "${CMake_BINARY_DIR}/Tests/CTestTestConfigFileInBuildDir1/testOut1.log" + ) ++ REGEX_ESCAPE_STRING(CTEST_TEST_ESCAPED_SOURCE_DIR "${CMake_SOURCE_DIR}") + SET_TESTS_PROPERTIES(CTestTestConfigFileInBuildDir1 PROPERTIES DEPENDS CTestTestNoBuild + PASS_REGULAR_EXPRESSION +- "Reading ctest configuration file: ${CMake_SOURCE_DIR}.Tests.CTestTestConfigFileInBuildDir.CTestConfig.cmake") ++ "Reading ctest configuration file: ${CTEST_TEST_ESCAPED_SOURCE_DIR}.Tests.CTestTestConfigFileInBuildDir.CTestConfig.cmake") + + CONFIGURE_FILE( + "${CMake_SOURCE_DIR}/Tests/CTestTestConfigFileInBuildDir/test2.cmake.in" +@@ -1670,10 +1676,11 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION= + -S "${CMake_BINARY_DIR}/Tests/CTestTestConfigFileInBuildDir2/test2.cmake" -V + --output-log "${CMake_BINARY_DIR}/Tests/CTestTestConfigFileInBuildDir2/testOut2.log" + ) ++ REGEX_ESCAPE_STRING(CTEST_TEST_ESCAPED_BINARY_DIR "${CMake_BINARY_DIR}") + SET_TESTS_PROPERTIES(CTestTestConfigFileInBuildDir2 PROPERTIES DEPENDS CTestTestNoBuild + REQUIRED_FILES ${CMake_BINARY_DIR}/Tests/CTestTestConfigFileInBuildDir2/CTestConfig.cmake + PASS_REGULAR_EXPRESSION +- "Reading ctest configuration file: ${CMake_BINARY_DIR}.Tests.CTestTestConfigFileInBuildDir2.CTestConfig.cmake") ++ "Reading ctest configuration file: ${CTEST_TEST_ESCAPED_BINARY_DIR}.Tests.CTestTestConfigFileInBuildDir2.CTestConfig.cmake") + + # Use macro, not function so that build can still be driven by CMake 2.4. + # After 2.6 is required, this could be a function without the extra 'set' diff --git a/debian/patches/series b/debian/patches/series index 5c0c782c9..87fc2e24e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -3,3 +3,4 @@ multiarch_findgtk2_fix.diff support_cppflags.diff manpage_fixes.diff mipsel_is_little_endian.diff +paths_in_regex_espace_metachars.diff