Merge topic 'cpack-rpm-percomponent-group-and-name'
27e6f74f
CPack: Added tests for package name and group controll fieldsc926efa1
CPackRPM: Configure RPM package group and name per component
This commit is contained in:
commit
27ed820c81
|
@ -0,0 +1,7 @@
|
|||
cpack-rpm-percomponent-group-and-name
|
||||
-------------------------------------
|
||||
|
||||
* The :module:`CPackRPM` module learned to set Name and Group
|
||||
control fields per-component.
|
||||
See :variable:`CPACK_RPM_<component>_PACKAGE_NAME`
|
||||
and :variable:`CPACK_RPM_<component>_PACKAGE_GROUP`.
|
|
@ -37,6 +37,7 @@
|
|||
# * Default : CPACK_PACKAGE_DESCRIPTION_SUMMARY
|
||||
#
|
||||
# .. variable:: CPACK_RPM_PACKAGE_NAME
|
||||
# CPACK_RPM_<component>_PACKAGE_NAME
|
||||
#
|
||||
# The RPM package name.
|
||||
#
|
||||
|
@ -81,6 +82,7 @@
|
|||
# * Default : "unknown"
|
||||
#
|
||||
# .. variable:: CPACK_RPM_PACKAGE_GROUP
|
||||
# CPACK_RPM_<component>_PACKAGE_GROUP
|
||||
#
|
||||
# The RPM package group.
|
||||
#
|
||||
|
@ -1106,10 +1108,7 @@ function(cpack_rpm_generate_package)
|
|||
|
||||
# Are we packaging components ?
|
||||
if(CPACK_RPM_PACKAGE_COMPONENT)
|
||||
set(CPACK_RPM_PACKAGE_COMPONENT_PART_NAME "-${CPACK_RPM_PACKAGE_COMPONENT}")
|
||||
string(TOUPPER ${CPACK_RPM_PACKAGE_COMPONENT} CPACK_RPM_PACKAGE_COMPONENT_UPPER)
|
||||
else()
|
||||
set(CPACK_RPM_PACKAGE_COMPONENT_PART_NAME "")
|
||||
endif()
|
||||
|
||||
set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}")
|
||||
|
@ -1143,10 +1142,19 @@ function(cpack_rpm_generate_package)
|
|||
endif()
|
||||
|
||||
# CPACK_RPM_PACKAGE_NAME (mandatory)
|
||||
|
||||
if(NOT CPACK_RPM_PACKAGE_NAME)
|
||||
string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_RPM_PACKAGE_NAME)
|
||||
endif()
|
||||
|
||||
if(CPACK_RPM_PACKAGE_COMPONENT)
|
||||
if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_NAME)
|
||||
set(CPACK_RPM_PACKAGE_NAME ${CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_NAME})
|
||||
else()
|
||||
set(CPACK_RPM_PACKAGE_NAME ${CPACK_RPM_PACKAGE_NAME}-${CPACK_RPM_PACKAGE_COMPONENT})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# CPACK_RPM_PACKAGE_VERSION (mandatory)
|
||||
if(NOT CPACK_RPM_PACKAGE_VERSION)
|
||||
if(NOT CPACK_PACKAGE_VERSION)
|
||||
|
@ -1206,6 +1214,15 @@ function(cpack_rpm_generate_package)
|
|||
endif()
|
||||
|
||||
# CPACK_RPM_PACKAGE_GROUP
|
||||
|
||||
#Check for component group first.
|
||||
#If not set, it will use regular package group logic.
|
||||
if(CPACK_RPM_PACKAGE_COMPONENT)
|
||||
if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_GROUP)
|
||||
set(CPACK_RPM_PACKAGE_GROUP ${CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_GROUP})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT CPACK_RPM_PACKAGE_GROUP)
|
||||
set(CPACK_RPM_PACKAGE_GROUP "unknown")
|
||||
endif()
|
||||
|
@ -1613,7 +1630,7 @@ function(cpack_rpm_generate_package)
|
|||
)
|
||||
|
||||
# The name of the final spec file to be used by rpmbuild
|
||||
set(CPACK_RPM_BINARY_SPECFILE "${CPACK_RPM_ROOTDIR}/SPECS/${CPACK_RPM_PACKAGE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_NAME}.spec")
|
||||
set(CPACK_RPM_BINARY_SPECFILE "${CPACK_RPM_ROOTDIR}/SPECS/${CPACK_RPM_PACKAGE_NAME}.spec")
|
||||
|
||||
# Print out some debug information if we were asked for that
|
||||
if(CPACK_RPM_PACKAGE_DEBUG)
|
||||
|
@ -1645,7 +1662,7 @@ function(cpack_rpm_generate_package)
|
|||
"# -*- rpm-spec -*-
|
||||
BuildRoot: \@CPACK_RPM_DIRECTORY\@/\@CPACK_PACKAGE_FILE_NAME\@\@CPACK_RPM_PACKAGE_COMPONENT_PART_PATH\@
|
||||
Summary: \@CPACK_RPM_PACKAGE_SUMMARY\@
|
||||
Name: \@CPACK_RPM_PACKAGE_NAME\@\@CPACK_RPM_PACKAGE_COMPONENT_PART_NAME\@
|
||||
Name: \@CPACK_RPM_PACKAGE_NAME\@
|
||||
Version: \@CPACK_RPM_PACKAGE_VERSION\@
|
||||
Release: \@CPACK_RPM_PACKAGE_RELEASE\@
|
||||
License: \@CPACK_RPM_PACKAGE_LICENSE\@
|
||||
|
@ -1749,15 +1766,15 @@ mv \"\@CPACK_TOPLEVEL_DIRECTORY\@/tmpBBroot\" $RPM_BUILD_ROOT
|
|||
"${CPACK_RPM_BINARY_SPECFILE}"
|
||||
WORKING_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}"
|
||||
RESULT_VARIABLE CPACK_RPMBUILD_EXEC_RESULT
|
||||
ERROR_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_COMPONENT_PART_NAME}.err"
|
||||
OUTPUT_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_COMPONENT_PART_NAME}.out")
|
||||
ERROR_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.err"
|
||||
OUTPUT_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.out")
|
||||
if(CPACK_RPM_PACKAGE_DEBUG OR CPACK_RPMBUILD_EXEC_RESULT)
|
||||
file(READ ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_COMPONENT_PART_NAME}.err RPMBUILDERR)
|
||||
file(READ ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_COMPONENT_PART_NAME}.out RPMBUILDOUT)
|
||||
file(READ ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.err RPMBUILDERR)
|
||||
file(READ ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.out RPMBUILDOUT)
|
||||
message("CPackRPM:Debug: You may consult rpmbuild logs in: ")
|
||||
message("CPackRPM:Debug: - ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_COMPONENT_PART_NAME}.err")
|
||||
message("CPackRPM:Debug: - ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.err")
|
||||
message("CPackRPM:Debug: *** ${RPMBUILDERR} ***")
|
||||
message("CPackRPM:Debug: - ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_COMPONENT_PART_NAME}.out")
|
||||
message("CPackRPM:Debug: - ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.out")
|
||||
message("CPackRPM:Debug: *** ${RPMBUILDOUT} ***")
|
||||
endif()
|
||||
else()
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
set(whitespaces_ "[\t\n\r ]*")
|
||||
|
||||
set(EXPECTED_FILES_COUNT "3")
|
||||
set(EXPECTED_FILE_1 "per_component*-pkg_1.deb")
|
||||
set(EXPECTED_FILE_CONTENT_1 "^.*/usr/foo${whitespaces_}.*/usr/foo/CMakeLists.txt$")
|
||||
set(EXPECTED_FILE_2 "per_component*-pkg_2.deb")
|
||||
set(EXPECTED_FILE_CONTENT_2 "^.*/usr/foo${whitespaces_}.*/usr/foo/CMakeLists.txt$")
|
||||
set(EXPECTED_FILE_3 "per_component*-pkg_3.deb")
|
||||
set(EXPECTED_FILE_CONTENT_3 "^.*/usr/foo${whitespaces_}.*/usr/foo/CMakeLists.txt$")
|
|
@ -0,0 +1,18 @@
|
|||
function(checkPackageInfo_ TYPE FILE REGEX)
|
||||
set(whitespaces_ "[\t\n\r ]*")
|
||||
|
||||
getPackageInfo("${FILE}" "FILE_INFO_")
|
||||
if(NOT FILE_INFO_ MATCHES "${REGEX}")
|
||||
message(FATAL_ERROR "Unexpected ${TYPE} in '${FILE}'; file info: '${FILE_INFO_}'")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# check package name
|
||||
checkPackageInfo_("name" "${FOUND_FILE_1}" ".*Package${whitespaces_}:${whitespaces_}per_component-pkg_1")
|
||||
checkPackageInfo_("name" "${FOUND_FILE_2}" ".*Package${whitespaces_}:${whitespaces_}second")
|
||||
checkPackageInfo_("name" "${FOUND_FILE_3}" ".*Package${whitespaces_}:${whitespaces_}per_component-pkg_3")
|
||||
|
||||
# check package group
|
||||
checkPackageInfo_("group" "${FOUND_FILE_1}" ".*Section${whitespaces_}:${whitespaces_}default")
|
||||
checkPackageInfo_("group" "${FOUND_FILE_2}" ".*Section${whitespaces_}:${whitespaces_}second_group")
|
||||
checkPackageInfo_("group" "${FOUND_FILE_3}" ".*Section${whitespaces_}:${whitespaces_}default")
|
|
@ -0,0 +1,6 @@
|
|||
set(CPACK_PACKAGE_CONTACT "someone")
|
||||
set(CPACK_DEB_COMPONENT_INSTALL "ON")
|
||||
|
||||
set(CPACK_DEBIAN_PACKAGE_SECTION "default")
|
||||
set(CPACK_DEBIAN_PKG_2_PACKAGE_NAME "second")
|
||||
set(CPACK_DEBIAN_PKG_2_PACKAGE_SECTION "second_group")
|
|
@ -0,0 +1,5 @@
|
|||
install(FILES CMakeLists.txt DESTINATION foo COMPONENT pkg_1)
|
||||
install(FILES CMakeLists.txt DESTINATION foo COMPONENT pkg_2)
|
||||
install(FILES CMakeLists.txt DESTINATION foo COMPONENT pkg_3)
|
||||
|
||||
set(CPACK_PACKAGE_NAME "per_component")
|
|
@ -8,3 +8,12 @@ function(getPackageContent FILE RESULT_VAR)
|
|||
|
||||
set(${RESULT_VAR} "${package_content_}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(getPackageInfo FILE RESULT_VAR)
|
||||
execute_process(COMMAND ${RPM_EXECUTABLE} -pqi ${FILE}
|
||||
OUTPUT_VARIABLE info_content
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
set(${RESULT_VAR} "${info_content}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
set(whitespaces_ "[\t\n\r ]*")
|
||||
|
||||
set(EXPECTED_FILES_COUNT "3")
|
||||
set(EXPECTED_FILE_1 "per_component*-pkg_1.rpm")
|
||||
set(EXPECTED_FILE_CONTENT_1 "^/usr/foo${whitespaces_}/usr/foo/CMakeLists.txt$")
|
||||
set(EXPECTED_FILE_2 "per_component*-pkg_2.rpm")
|
||||
set(EXPECTED_FILE_CONTENT_2 "^/usr/foo${whitespaces_}/usr/foo/CMakeLists.txt$")
|
||||
set(EXPECTED_FILE_3 "per_component*-pkg_3.rpm")
|
||||
set(EXPECTED_FILE_CONTENT_3 "^/usr/foo${whitespaces_}/usr/foo/CMakeLists.txt$")
|
|
@ -0,0 +1,18 @@
|
|||
function(checkPackageInfo_ TYPE FILE REGEX)
|
||||
set(whitespaces_ "[\t\n\r ]*")
|
||||
|
||||
getPackageInfo("${FILE}" "FILE_INFO_")
|
||||
if(NOT FILE_INFO_ MATCHES "${REGEX}")
|
||||
message(FATAL_ERROR "Unexpected ${TYPE} in '${FILE}'; file info: '${FILE_INFO_}'")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# check package name
|
||||
checkPackageInfo_("name" "${FOUND_FILE_1}" ".*Name${whitespaces_}:${whitespaces_}per_component-pkg_1")
|
||||
checkPackageInfo_("name" "${FOUND_FILE_2}" ".*Name${whitespaces_}:${whitespaces_}second")
|
||||
checkPackageInfo_("name" "${FOUND_FILE_3}" ".*Name${whitespaces_}:${whitespaces_}per_component-pkg_3")
|
||||
|
||||
# check package group
|
||||
checkPackageInfo_("group" "${FOUND_FILE_1}" ".*Group${whitespaces_}:${whitespaces_}default")
|
||||
checkPackageInfo_("group" "${FOUND_FILE_2}" ".*Group${whitespaces_}:${whitespaces_}second_group")
|
||||
checkPackageInfo_("group" "${FOUND_FILE_3}" ".*Group${whitespaces_}:${whitespaces_}default")
|
|
@ -0,0 +1,5 @@
|
|||
set(CPACK_RPM_COMPONENT_INSTALL "ON")
|
||||
|
||||
set(CPACK_RPM_PACKAGE_GROUP "default")
|
||||
set(CPACK_RPM_pkg_2_PACKAGE_NAME "second")
|
||||
set(CPACK_RPM_pkg_2_PACKAGE_GROUP "second_group")
|
|
@ -10,3 +10,4 @@ run_cpack_test(DEB_EXTRA "DEB" false)
|
|||
run_cpack_test(DEPENDENCIES "RPM;DEB" true)
|
||||
run_cpack_test(EMPTY_DIR "RPM;DEB;TGZ" true)
|
||||
run_cpack_test(COMPONENTS_EMPTY_DIR "RPM;DEB;TGZ" true)
|
||||
run_cpack_test(PER_COMPONENT_FIELDS "RPM;DEB" false)
|
||||
|
|
Loading…
Reference in New Issue