From 54a95f5fc66574cd9fff07024cc449b160b5629a Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 3 Jun 2015 09:21:52 -0400 Subject: [PATCH 1/2] CPackDeb: Check dpkg-shlibdeps version more robustly Use if(MATCHES) to verify that a match exists before using the match group variable. --- Modules/CPackDeb.cmake | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Modules/CPackDeb.cmake b/Modules/CPackDeb.cmake index 226153ca4..48f6dd1aa 100644 --- a/Modules/CPackDeb.cmake +++ b/Modules/CPackDeb.cmake @@ -352,10 +352,11 @@ function(cpack_deb_prepare_package_vars) OUTPUT_VARIABLE _TMP_VERSION ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REGEX MATCH "dpkg-shlibdeps version ([0-9]+\\.[0-9]+\\.[0-9]+)" - SHLIBDEPS_EXECUTABLE_VERSION - "${_TMP_VERSION}") - set(SHLIBDEPS_EXECUTABLE_VERSION "${CMAKE_MATCH_1}") + if(_TMP_VERSION MATCHES "dpkg-shlibdeps version ([0-9]+\\.[0-9]+\\.[0-9]+)") + set(SHLIBDEPS_EXECUTABLE_VERSION "${CMAKE_MATCH_1}") + else() + set(SHLIBDEPS_EXECUTABLE_VERSION "") + endif() if(CPACK_DEBIAN_PACKAGE_DEBUG) message("CPackDeb Debug: dpkg-shlibdeps --version output is '${_TMP_VERSION}'") From 39fc3ed7e0db554818f41c3623bd858e0399dbb0 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 3 Jun 2015 09:23:02 -0400 Subject: [PATCH 2/2] CPackDeb: Check dpkg-shlibdeps --ignore-missing-info flag Check for this flag explicitly in the --help output before using it. It turns out there are some versions of the tool that support --version but not --ignore-missing-info. --- Modules/CPackDeb.cmake | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Modules/CPackDeb.cmake b/Modules/CPackDeb.cmake index 48f6dd1aa..09cddcd11 100644 --- a/Modules/CPackDeb.cmake +++ b/Modules/CPackDeb.cmake @@ -399,9 +399,12 @@ function(cpack_deb_prepare_package_vars) file(MAKE_DIRECTORY ${CPACK_TEMPORARY_DIRECTORY}/debian) file(WRITE ${CPACK_TEMPORARY_DIRECTORY}/debian/control "") - # only set ignore-missing-info flag for dpkg-shlibdeps that have --version option - # (those are newer and also have --ignore-missing-info flag) - if(SHLIBDEPS_EXECUTABLE_VERSION) + # Add --ignore-missing-info if the tool supports it + execute_process(COMMAND env LC_ALL=C ${SHLIBDEPS_EXECUTABLE} --help + OUTPUT_VARIABLE _TMP_HELP + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(_TMP_HELP MATCHES "--ignore-missing-info") set(IGNORE_MISSING_INFO_FLAG "--ignore-missing-info") endif()