mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-09 15:20:56 -06:00
CPackRPM now supports multiple directives in CPACK_RPM_USER_FILELIST
* In older version "%dir %attr(-, root, root) foo" would put "%dir foo" in the final spec file. * Also added comment to describe this and advise not not to add trailing slashes to directories in USER_FILELIST. * Includes test in RunCMake CPack which now passes.
This commit is contained in:
committed by
Domen Vrankar
parent
c45b767a8c
commit
a5a6f61be3
@@ -507,10 +507,12 @@
|
||||
#
|
||||
# May be used to explicitly specify ``%(<directive>)`` file line
|
||||
# in the spec file. Like ``%config(noreplace)`` or any other directive
|
||||
# that be found in the ``%files`` section. Since CPackRPM is generating
|
||||
# the list of files (and directories) the user specified files of
|
||||
# the ``CPACK_RPM_<COMPONENT>_USER_FILELIST`` list will be removed from
|
||||
# the generated list.
|
||||
# that be found in the ``%files`` section. You can have multiple directives
|
||||
# per line, as in ``%attr(600,root,root) %config(noreplace)``. Since
|
||||
# CPackRPM is generating the list of files (and directories) the user
|
||||
# specified files of the ``CPACK_RPM_<COMPONENT>_USER_FILELIST`` list will
|
||||
# be removed from the generated list. If referring to directories do
|
||||
# not add a trailing slash.
|
||||
#
|
||||
# .. variable:: CPACK_RPM_CHANGELOG_FILE
|
||||
#
|
||||
@@ -2055,7 +2057,8 @@ function(cpack_rpm_generate_package)
|
||||
set(CPACK_RPM_USER_INSTALL_FILES "")
|
||||
foreach(F IN LISTS CPACK_RPM_USER_FILELIST_INTERNAL)
|
||||
string(REGEX REPLACE "%[A-Za-z]+(\\([^()]*\\))? " "" F_PATH ${F})
|
||||
string(REGEX MATCH "%[A-Za-z]+(\\([^()]*\\))?" F_PREFIX ${F})
|
||||
string(REGEX MATCH "(%[A-Za-z]+(\\([^()]*\\))? )*" F_PREFIX ${F})
|
||||
string(STRIP ${F_PREFIX} F_PREFIX)
|
||||
|
||||
if(CPACK_RPM_PACKAGE_DEBUG)
|
||||
message("CPackRPM:Debug: F_PREFIX=<${F_PREFIX}>, F_PATH=<${F_PATH}>")
|
||||
|
||||
@@ -22,3 +22,4 @@ run_cpack_test(PER_COMPONENT_FIELDS "RPM;DEB" false "COMPONENT")
|
||||
run_cpack_test_subtests(SINGLE_DEBUGINFO "no_main_component;one_component;one_component_main;no_debuginfo;one_component_no_debuginfo;no_components;valid" "RPM" true "CUSTOM")
|
||||
run_cpack_source_test(SOURCE_PACKAGE "RPM")
|
||||
run_cpack_test(SUGGESTS "RPM" false "MONOLITHIC")
|
||||
run_cpack_test(USER_FILELIST "RPM" false "MONOLITHIC")
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
set(EXPECTED_FILES_COUNT "1")
|
||||
set(EXPECTED_FILE_CONTENT_1_LIST "/usr/one;/usr/one/foo.txt;/usr/one/two;/usr/one/two/bar.txt;/usr/three;/usr/three/baz.txt;/usr/three/qux.txt")
|
||||
12
Tests/RunCMake/CPack/tests/USER_FILELIST/VerifyResult.cmake
Normal file
12
Tests/RunCMake/CPack/tests/USER_FILELIST/VerifyResult.cmake
Normal file
@@ -0,0 +1,12 @@
|
||||
execute_process(COMMAND ${RPM_EXECUTABLE} -qpd ${FOUND_FILE_1}
|
||||
WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
|
||||
OUTPUT_VARIABLE DOC_FILES_
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
string(REPLACE "\n" ";" DOC_FILES_ "${DOC_FILES_}")
|
||||
|
||||
set(DOC_FILES_WANTED_ "/usr/one/foo.txt;/usr/one/two/bar.txt;/usr/three/baz.txt")
|
||||
if (NOT "${DOC_FILES_}" STREQUAL "${DOC_FILES_WANTED_}")
|
||||
message(FATAL_ERROR "USER_FILELIST handling error: Check filelist in spec file. Doc files were: ${DOC_FILES_}. Should have been ${DOC_FILES_WANTED_}")
|
||||
endif()
|
||||
13
Tests/RunCMake/CPack/tests/USER_FILELIST/test.cmake
Normal file
13
Tests/RunCMake/CPack/tests/USER_FILELIST/test.cmake
Normal file
@@ -0,0 +1,13 @@
|
||||
install(FILES CMakeLists.txt DESTINATION one RENAME foo.txt)
|
||||
install(FILES CMakeLists.txt DESTINATION one/two RENAME bar.txt)
|
||||
install(FILES CMakeLists.txt DESTINATION three RENAME baz.txt)
|
||||
install(FILES CMakeLists.txt DESTINATION three RENAME qux.txt)
|
||||
|
||||
# We are verifying the USER_FILELIST works by comparing what
|
||||
# ends up with a %doc tag in the final rpm with what we expect
|
||||
# from this USER_FILELIST.
|
||||
set(CPACK_RPM_USER_FILELIST
|
||||
"%doc /usr/one/foo.txt"
|
||||
"%doc %attr(640,root,root) /usr/one/two/bar.txt"
|
||||
"%attr(600, -, root) %doc /usr/three/baz.txt"
|
||||
)
|
||||
Reference in New Issue
Block a user