mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-26 18:58:34 -06:00
Merge topic 'cpack-deb-mr-1296-fix'
c5db2f9aCPack/Deb: fix for regex passing even if invalid characters are present529729d6CPack/Deb: CPACK_DEBIAN_PACKAGE_VERSION regex testing exception Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1375
This commit is contained in:
@@ -110,6 +110,14 @@
|
||||
# :variable:`CPACK_DEBIAN_PACKAGE_RELEASE` is not set then hyphens are not
|
||||
# allowed.
|
||||
#
|
||||
# .. note::
|
||||
#
|
||||
# For backward compatibility with CMake 3.9 and lower a failed test of this
|
||||
# variable's content is not a hard error when both
|
||||
# :variable:`CPACK_DEBIAN_PACKAGE_RELEASE` and
|
||||
# :variable:`CPACK_DEBIAN_PACKAGE_EPOCH` variables are not set. An author
|
||||
# warning is reported instead.
|
||||
#
|
||||
# .. variable:: CPACK_DEBIAN_PACKAGE_RELEASE
|
||||
#
|
||||
# The Debian package release - Debian revision number.
|
||||
@@ -753,9 +761,22 @@ function(cpack_deb_prepare_package_vars)
|
||||
set(CPACK_DEBIAN_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
|
||||
endif()
|
||||
|
||||
if(NOT CPACK_DEBIAN_PACKAGE_VERSION MATCHES "^[0-9][A-Za-z0-9.+-~]*$")
|
||||
message(FATAL_ERROR
|
||||
"CPackDeb: Debian package version must confirm to \"^[0-9][A-Za-z0-9.+-~]*$\" regex!")
|
||||
if(DEFINED CPACK_DEBIAN_PACKAGE_RELEASE OR DEFINED CPACK_DEBIAN_PACKAGE_EPOCH)
|
||||
# only test the version format if CPACK_DEBIAN_PACKAGE_RELEASE or
|
||||
# CPACK_DEBIAN_PACKAGE_EPOCH is set
|
||||
if(NOT CPACK_DEBIAN_PACKAGE_VERSION MATCHES "^[0-9][A-Za-z0-9.+~-]*$")
|
||||
message(FATAL_ERROR
|
||||
"CPackDeb: Debian package version must confirm to \"^[0-9][A-Za-z0-9.+~-]*$\" regex!")
|
||||
endif()
|
||||
else()
|
||||
# before CMake 3.10 version format was not tested so only warn to preserve
|
||||
# backward compatibility
|
||||
if(NOT CPACK_DEBIAN_PACKAGE_VERSION MATCHES "^([0-9]+:)?[0-9][A-Za-z0-9.+~-]*$")
|
||||
message(AUTHOR_WARNING
|
||||
"CPackDeb: Debian package versioning ([<epoch>:]<version>[-<release>])"
|
||||
" should confirm to \"^([0-9]+:)?[0-9][A-Za-z0-9.+~-]*$\" regex in"
|
||||
" order to satisfy Debian packaging rules.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CPACK_DEBIAN_PACKAGE_RELEASE)
|
||||
@@ -765,9 +786,15 @@ function(cpack_deb_prepare_package_vars)
|
||||
endif()
|
||||
string(APPEND CPACK_DEBIAN_PACKAGE_VERSION
|
||||
"-${CPACK_DEBIAN_PACKAGE_RELEASE}")
|
||||
elseif(CPACK_DEBIAN_PACKAGE_VERSION MATCHES ".*-.*")
|
||||
message(FATAL_ERROR
|
||||
"CPackDeb: Debian package version must not contain hyphens when CPACK_DEBIAN_PACKAGE_RELEASE is not provided!")
|
||||
elseif(DEFINED CPACK_DEBIAN_PACKAGE_EPOCH)
|
||||
# only test the version format if CPACK_DEBIAN_PACKAGE_RELEASE or
|
||||
# CPACK_DEBIAN_PACKAGE_EPOCH is set - versions CPack/Deb generator before
|
||||
# CMake 3.10 did not check for version format so we have to preserve
|
||||
# backward compatibility
|
||||
if(CPACK_DEBIAN_PACKAGE_VERSION MATCHES ".*-.*")
|
||||
message(FATAL_ERROR
|
||||
"CPackDeb: Debian package version must not contain hyphens when CPACK_DEBIAN_PACKAGE_RELEASE is not provided!")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CPACK_DEBIAN_PACKAGE_EPOCH)
|
||||
|
||||
@@ -29,3 +29,4 @@ run_cpack_test(SYMLINKS "RPM;TGZ" false "MONOLITHIC;COMPONENT")
|
||||
run_cpack_test(USER_FILELIST "RPM" false "MONOLITHIC")
|
||||
run_cpack_test(MD5SUMS "DEB" false "MONOLITHIC;COMPONENT")
|
||||
run_cpack_test(CPACK_INSTALL_SCRIPT "ZIP" false "MONOLITHIC")
|
||||
run_cpack_test(DEB_PACKAGE_VERSION_BACK_COMPATIBILITY "DEB" false "MONOLITHIC;COMPONENT")
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
set(EXPECTED_FILES_COUNT "1")
|
||||
set(EXPECTED_FILE_CONTENT_1_LIST "/usr;/usr/foo;/usr/foo/CMakeLists.txt")
|
||||
@@ -0,0 +1,11 @@
|
||||
function(checkPackageInfo_ TYPE FILE REGEX)
|
||||
getPackageInfo("${FILE}" "FILE_INFO_")
|
||||
if(NOT FILE_INFO_ MATCHES "${REGEX}")
|
||||
message(FATAL_ERROR "Unexpected ${TYPE} in '${FILE}' ${EXPECTED_FILE_1_VERSION} ${EXPECTED_FILE_1_REVISION}; file info: '${FILE_INFO_}'")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
set(whitespaces_ "[\t\n\r ]*")
|
||||
|
||||
checkPackageInfo_("version" "${FOUND_FILE_1}"
|
||||
".*Version${whitespaces_}:${whitespaces_}5.0.1-71-g884852e")
|
||||
@@ -0,0 +1,7 @@
|
||||
install(FILES CMakeLists.txt DESTINATION foo COMPONENT test)
|
||||
|
||||
set(CPACK_DEBIAN_PACKAGE_VERSION "5.0.1-71-g884852e")
|
||||
|
||||
if(PACKAGING_TYPE STREQUAL "COMPONENT")
|
||||
set(CPACK_COMPONENTS_ALL test)
|
||||
endif()
|
||||
Reference in New Issue
Block a user