CPack: CMAKE_PROJECT_HOMEPAGE_URL -> CPACK_PACKAGE_HOMEPAGE_URL

At CPack running time the `CMAKE_PROJECT_HOMEPAGE_URL` variable
is not set.

Internal CPack modules (e.g. CPackDEB, CPackRPM, CPackFreeBSD)
should use `CPACK_PACKAGE_HOMEPAGE_URL` instead, which is available
after inclusion of `CPack.cmake` into `CMakeLists.txt`.

Closes: #19607
This commit is contained in:
Alex Turbov
2019-11-10 14:20:29 +02:00
committed by Brad King
parent a9c0959900
commit 3476dbe6d7
8 changed files with 58 additions and 5 deletions

View File

@@ -546,8 +546,8 @@ function(cpack_deb_prepare_package_vars)
)
# Homepage: (optional)
if(NOT CPACK_DEBIAN_PACKAGE_HOMEPAGE AND CMAKE_PROJECT_HOMEPAGE_URL)
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "${CMAKE_PROJECT_HOMEPAGE_URL}")
if(NOT CPACK_DEBIAN_PACKAGE_HOMEPAGE AND CPACK_PACKAGE_HOMEPAGE_URL)
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "${CPACK_PACKAGE_HOMEPAGE_URL}")
endif()
# Section: (recommended)

View File

@@ -68,7 +68,7 @@ _cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_DESCRIPTION"
# There's really only one homepage for a project, so
# re-use the Debian setting if it's there.
_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_WWW"
"CMAKE_PROJECT_HOMEPAGE_URL"
"CPACK_PACKAGE_HOMEPAGE_URL"
"CPACK_DEBIAN_PACKAGE_HOMEPAGE"
"_cpack_freebsd_fallback_www"
)

View File

@@ -844,8 +844,8 @@ function(cpack_rpm_generate_package)
endif()
endif()
if(NOT CPACK_RPM_PACKAGE_URL AND CMAKE_PROJECT_HOMEPAGE_URL)
set(CPACK_RPM_PACKAGE_URL "${CMAKE_PROJECT_HOMEPAGE_URL}")
if(NOT CPACK_RPM_PACKAGE_URL AND CPACK_PACKAGE_HOMEPAGE_URL)
set(CPACK_RPM_PACKAGE_URL "${CPACK_PACKAGE_HOMEPAGE_URL}")
endif()
# CPACK_RPM_PACKAGE_NAME (mandatory)

View File

@@ -553,6 +553,7 @@ set(cpack_tests
DEB.MD5SUMS
DEB.DEB_PACKAGE_VERSION_BACK_COMPATIBILITY
DEB.DEB_DESCRIPTION
DEB.PROJECT_META
RPM.CUSTOM_BINARY_SPEC_FILE
RPM.CUSTOM_NAMES
@@ -573,6 +574,7 @@ set(cpack_tests
RPM.SUGGESTS
RPM.SYMLINKS
RPM.USER_FILELIST
RPM.PROJECT_META
7Z
TBZ2

View File

@@ -46,3 +46,4 @@ run_cpack_test_subtests(
false
"MONOLITHIC;COMPONENT"
)
run_cpack_test(PROJECT_META "RPM.PROJECT_META;DEB.PROJECT_META" false "MONOLITHIC;COMPONENT")

View File

@@ -0,0 +1,9 @@
if(GENERATOR_TYPE STREQUAL DEB)
set(EXPECTED_FILE_1 "project_meta-1.2.3*.deb")
elseif(GENERATOR_TYPE STREQUAL RPM)
set(EXPECTED_FILE_1 "project_meta-1.2.3*.rpm")
else()
message(FATAL_ERROR "Unexpected CPack generator")
endif()
set(EXPECTED_FILES_COUNT "1")
set(EXPECTED_FILE_CONTENT_1_LIST "/foo;/foo/CMakeLists.txt")

View File

@@ -0,0 +1,30 @@
function(checkPackageURL FILE TAG EXPECTED_URL)
getPackageInfo("${FILE}" "_file_info")
string(REPLACE "\n" ";" _file_info "${_file_info}")
set(_seen_url FALSE)
foreach(_line IN LISTS _file_info)
if(_line MATCHES "${TAG}: (.*)")
set(_seen_url TRUE)
if(NOT CMAKE_MATCH_1 STREQUAL EXPECTED_URL)
message(FATAL_ERROR "Unexpected `Homepage` URL: `${CMAKE_MATCH_1}` != `${EXPECTED_URL}`")
endif()
break()
endif()
endforeach()
if(NOT _seen_url)
message(FATAL_ERROR "The packge `${FILE}` do not have URL as expected")
endif()
endfunction()
if(GENERATOR_TYPE STREQUAL DEB)
set(_tag " Homepage") # NOTE The leading space
elseif(GENERATOR_TYPE STREQUAL RPM)
set(_tag "URL.*")
else()
message(FATAL_ERROR "Unexpected CPack generator")
endif()
checkPackageURL("${FOUND_FILE_1}" "${_tag}" "https://meta.test.info")
# kate: indent-width 2;

View File

@@ -0,0 +1,11 @@
project(
MetaInfoTest
VERSION 1.2.3
DESCRIPTION "This is going to be a summary"
HOMEPAGE_URL "https://meta.test.info"
)
install(FILES CMakeLists.txt DESTINATION foo COMPONENT test)
if(PACKAGING_TYPE STREQUAL "COMPONENT")
set(CPACK_COMPONENTS_ALL test)
endif()