CPack: Enable DEB and RPM tests more reliably

CPack DEB and RPM generators were not used for some tests because
CPACK_BINARY_DEB and CPACK_BINARY_RPM variable were not set.  Fix this,
simplify generator selection in CTEST_RUN_CPackComponentsForAll, and fix
bugs that were detected after tests were run.
This commit is contained in:
Domen Vrankar 2015-05-09 00:42:30 +02:00 committed by Brad King
parent 6831f91a6c
commit 7c103be8de
3 changed files with 25 additions and 23 deletions

View File

@ -1197,18 +1197,17 @@ function(cpack_rpm_generate_package)
set(CPACK_RPM_COMPRESSION_TYPE_TMP "")
endif()
if(CPACK_PACKAGE_RELOCATABLE)
set(CPACK_RPM_PACKAGE_RELOCATABLE TRUE)
endif()
if(CPACK_RPM_PACKAGE_RELOCATABLE)
if(CPACK_PACKAGE_RELOCATABLE OR CPACK_RPM_PACKAGE_RELOCATABLE)
if(CPACK_RPM_PACKAGE_DEBUG)
message("CPackRPM:Debug: Trying to build a relocatable package")
endif()
if(CPACK_SET_DESTDIR AND (NOT CPACK_SET_DESTDIR STREQUAL "I_ON"))
message("CPackRPM:Warning: CPACK_SET_DESTDIR is set (=${CPACK_SET_DESTDIR}) while requesting a relocatable package (CPACK_RPM_PACKAGE_RELOCATABLE is set): this is not supported, the package won't be relocatable.")
set(CPACK_RPM_PACKAGE_RELOCATABLE FALSE)
else()
set(CPACK_RPM_PACKAGE_PREFIX ${CPACK_PACKAGING_INSTALL_PREFIX}) # kept for back compatibility (provided external RPM spec files)
cpack_rpm_prepare_relocation_paths()
set(CPACK_RPM_PACKAGE_RELOCATABLE TRUE)
endif()
endif()

View File

@ -112,6 +112,22 @@ if(BUILD_TESTING)
set(RPMBUILD_EXECUTABLE "RPMBUILD_EXECUTABLE-NOTFOUND")
endif()
if(RPMBUILD_EXECUTABLE)
set(CPACK_BINARY_RPM ON)
else()
set(CPACK_BINARY_RPM OFF)
endif()
# Look for rpmbuild to use for tests.
# The tool does not work with spaces in the path.
find_program(DPKG_EXECUTABLE NAMES dpkg)
if(DPKG_EXECUTABLE)
set(CPACK_BINARY_DEB ON)
else()
set(CPACK_BINARY_DEB OFF)
endif()
#---------------------------------------------------------------------------
# Add tests below here.
@ -865,11 +881,6 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
set(CTEST_RUN_CPackComponentsForAll ${CTEST_TEST_CPACK})
set(CTEST_RUN_CPackComponentsPrefix ${CTEST_TEST_CPACK})
# Do not try to build RPM
if (NOT RPMBUILD_EXECUTABLE)
set(CPACK_BINARY_RPM OFF)
endif()
find_program(NSIS_MAKENSIS_EXECUTABLE NAMES makensis
PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS]
DOC "makensis program location"
@ -948,13 +959,12 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
if(CTEST_RUN_CPackComponentsForAll)
# Check whether if rpmbuild command is found
# before adding RPM tests
if(RPMBUILD_EXECUTABLE)
if(CPACK_BINARY_RPM)
list(APPEND ACTIVE_CPACK_GENERATORS RPM)
endif()
# Check whether if dpkg command is found
# before adding DEB tests
find_program(DPKG_EXECUTABLE NAMES dpkg)
if(DPKG_EXECUTABLE)
if(CPACK_BINARY_DEB)
list(APPEND ACTIVE_CPACK_GENERATORS DEB)
endif()
@ -962,17 +972,9 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
# now contains the list of 'active generators'
set(CPackComponentsForAll_BUILD_OPTIONS)
# set up list of CPack generators
list(APPEND GENLST "ZIP")
list(APPEND ACTIVE_CPACK_GENERATORS "ZIP")
if(APPLE)
list(APPEND GENLST "DragNDrop")
endif()
list(FIND ACTIVE_CPACK_GENERATORS "RPM" RPM_ACTIVE)
if (NOT ${RPM_ACTIVE} EQUAL -1)
list(APPEND GENLST "RPM")
endif()
list(FIND ACTIVE_CPACK_GENERATORS "DEB" DEB_ACTIVE)
if (NOT ${DEB_ACTIVE} EQUAL -1)
list(APPEND GENLST "DEB")
list(APPEND ACTIVE_CPACK_GENERATORS "DragNDrop")
endif()
# set up list of component packaging ways
@ -980,7 +982,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
list(APPEND CWAYLST "OnePackPerGroup")
list(APPEND CWAYLST "IgnoreGroup")
list(APPEND CWAYLST "AllInOne")
foreach(CPackGen ${GENLST})
foreach(CPackGen IN LISTS ACTIVE_CPACK_GENERATORS)
set(CPackRun_CPackGen "-DCPackGen=${CPackGen}")
foreach(CPackComponentWay ${CWAYLST})
set(CPackRun_CPackComponentWay "-DCPackComponentWay=${CPackComponentWay}")

View File

@ -6,6 +6,7 @@ install(FILES file-runtime.txt
install(FILES file-development.txt
DESTINATION lib COMPONENT Development)
set(CPACK_PACKAGE_CONTACT "None") # mandatory for DEB generator
set(CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY 1)
set(CPACK_COMPONENTS_ALL Development)
set(CPACK_ARCHIVE_COMPONENT_INSTALL 1)