CPack/DEB: test preserve extra config file permissions

This commit is contained in:
Domen Vrankar 2015-09-14 22:44:00 +02:00 committed by Brad King
parent 7044e8ee4b
commit becb14c955
3 changed files with 42 additions and 5 deletions

View File

@ -1,11 +1,17 @@
set(foo_preinst "^echo default_preinst$") set(foo_preinst "^echo default_preinst$")
set(foo_preinst_permissions_regex "-rwxr-xr-x .*")
set(foo_prerm "^echo default_prerm$") set(foo_prerm "^echo default_prerm$")
set(foo_prerm_permissions_regex "-rwxr-xr-x .*")
verifyDebControl("${FOUND_FILE_1}" "foo" "preinst;prerm") verifyDebControl("${FOUND_FILE_1}" "foo" "preinst;prerm")
set(bar_preinst "^echo bar_preinst$") set(bar_preinst "^echo bar_preinst$")
set(bar_prerm_permissions_regex "-rwx------ .*")
set(bar_prerm "^echo bar_prerm$") set(bar_prerm "^echo bar_prerm$")
set(bar_prerm_permissions_regex "-rwx------ .*")
verifyDebControl("${FOUND_FILE_2}" "bar" "preinst;prerm") verifyDebControl("${FOUND_FILE_2}" "bar" "preinst;prerm")
set(bas_preinst "^echo default_preinst$") set(bas_preinst "^echo default_preinst$")
set(bas_prerm_permissions_regex "-rwxr-xr-x .*")
set(bas_prerm "^echo default_prerm$") set(bas_prerm "^echo default_prerm$")
set(bas_prerm_permissions_regex "-rwxr-xr-x .*")
verifyDebControl("${FOUND_FILE_3}" "bas" "preinst;prerm") verifyDebControl("${FOUND_FILE_3}" "bas" "preinst;prerm")

View File

@ -24,6 +24,19 @@ function(verifyDebControl FILE PREFIX VERIFY_FILES)
message(FATAL_ERROR "Unexpected content in for '${PREFIX}_${FILE_}'!" message(FATAL_ERROR "Unexpected content in for '${PREFIX}_${FILE_}'!"
" Content: '${content_}'") " Content: '${content_}'")
endif() endif()
execute_process(COMMAND ls -l "${CMAKE_CURRENT_BINARY_DIR}/control_${PREFIX}/${FILE_}"
OUTPUT_VARIABLE package_permissions_
ERROR_VARIABLE package_permissions_error_
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT package_permissions_error_)
if(NOT package_permissions_ MATCHES "${${PREFIX}_${FILE_}_permissions_regex}")
message(FATAL_ERROR "Unexpected file permissions for ${PREFIX}_${FILE_}: '${package_permissions_}'!")
endif()
else()
message(FATAL_ERROR "Listing file permissions failed (${package_permissions_error_})!")
endif()
endforeach() endforeach()
endfunction() endfunction()

View File

@ -2,14 +2,32 @@ install(FILES CMakeLists.txt DESTINATION foo COMPONENT foo)
install(FILES CMakeLists.txt DESTINATION bar COMPONENT bar) install(FILES CMakeLists.txt DESTINATION bar COMPONENT bar)
install(FILES CMakeLists.txt DESTINATION bas COMPONENT bas) install(FILES CMakeLists.txt DESTINATION bas COMPONENT bas)
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/preinst "echo default_preinst") file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/tmp/preinst "echo default_preinst")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/prerm "echo default_prerm") file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/tmp/prerm "echo default_prerm")
foreach(file_ preinst prerm)
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/tmp/${file_}
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
FILE_PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
endforeach()
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
"${CMAKE_CURRENT_BINARY_DIR}/preinst;${CMAKE_CURRENT_BINARY_DIR}/prerm") "${CMAKE_CURRENT_BINARY_DIR}/preinst;${CMAKE_CURRENT_BINARY_DIR}/prerm;${CMAKE_CURRENT_BINARY_DIR}/conffiles")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bar/preinst "echo bar_preinst") file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bar_tmp/preinst "echo bar_preinst")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bar/prerm "echo bar_prerm") file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bar_tmp/prerm "echo bar_prerm")
foreach(file_ preinst prerm)
# not acceptable permissions for lintian but we need to check that
# permissions are preserved
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/bar_tmp/${file_}
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/bar
FILE_PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE)
endforeach()
set(CPACK_DEBIAN_BAR_PACKAGE_CONTROL_EXTRA set(CPACK_DEBIAN_BAR_PACKAGE_CONTROL_EXTRA
"${CMAKE_CURRENT_BINARY_DIR}/bar/preinst;${CMAKE_CURRENT_BINARY_DIR}/bar/prerm") "${CMAKE_CURRENT_BINARY_DIR}/bar/preinst;${CMAKE_CURRENT_BINARY_DIR}/bar/prerm")