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 "") set(CPACK_RPM_COMPRESSION_TYPE_TMP "")
endif() endif()
if(CPACK_PACKAGE_RELOCATABLE) if(CPACK_PACKAGE_RELOCATABLE OR CPACK_RPM_PACKAGE_RELOCATABLE)
set(CPACK_RPM_PACKAGE_RELOCATABLE TRUE)
endif()
if(CPACK_RPM_PACKAGE_RELOCATABLE)
if(CPACK_RPM_PACKAGE_DEBUG) if(CPACK_RPM_PACKAGE_DEBUG)
message("CPackRPM:Debug: Trying to build a relocatable package") message("CPackRPM:Debug: Trying to build a relocatable package")
endif() endif()
if(CPACK_SET_DESTDIR AND (NOT CPACK_SET_DESTDIR STREQUAL "I_ON")) 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.") 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() else()
set(CPACK_RPM_PACKAGE_PREFIX ${CPACK_PACKAGING_INSTALL_PREFIX}) # kept for back compatibility (provided external RPM spec files) set(CPACK_RPM_PACKAGE_PREFIX ${CPACK_PACKAGING_INSTALL_PREFIX}) # kept for back compatibility (provided external RPM spec files)
cpack_rpm_prepare_relocation_paths() cpack_rpm_prepare_relocation_paths()
set(CPACK_RPM_PACKAGE_RELOCATABLE TRUE)
endif() endif()
endif() endif()

View File

@ -112,6 +112,22 @@ if(BUILD_TESTING)
set(RPMBUILD_EXECUTABLE "RPMBUILD_EXECUTABLE-NOTFOUND") set(RPMBUILD_EXECUTABLE "RPMBUILD_EXECUTABLE-NOTFOUND")
endif() 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. # 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_CPackComponentsForAll ${CTEST_TEST_CPACK})
set(CTEST_RUN_CPackComponentsPrefix ${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 find_program(NSIS_MAKENSIS_EXECUTABLE NAMES makensis
PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS] PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS]
DOC "makensis program location" 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) if(CTEST_RUN_CPackComponentsForAll)
# Check whether if rpmbuild command is found # Check whether if rpmbuild command is found
# before adding RPM tests # before adding RPM tests
if(RPMBUILD_EXECUTABLE) if(CPACK_BINARY_RPM)
list(APPEND ACTIVE_CPACK_GENERATORS RPM) list(APPEND ACTIVE_CPACK_GENERATORS RPM)
endif() endif()
# Check whether if dpkg command is found # Check whether if dpkg command is found
# before adding DEB tests # before adding DEB tests
find_program(DPKG_EXECUTABLE NAMES dpkg) if(CPACK_BINARY_DEB)
if(DPKG_EXECUTABLE)
list(APPEND ACTIVE_CPACK_GENERATORS DEB) list(APPEND ACTIVE_CPACK_GENERATORS DEB)
endif() 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' # now contains the list of 'active generators'
set(CPackComponentsForAll_BUILD_OPTIONS) set(CPackComponentsForAll_BUILD_OPTIONS)
# set up list of CPack generators # set up list of CPack generators
list(APPEND GENLST "ZIP") list(APPEND ACTIVE_CPACK_GENERATORS "ZIP")
if(APPLE) if(APPLE)
list(APPEND GENLST "DragNDrop") list(APPEND ACTIVE_CPACK_GENERATORS "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")
endif() endif()
# set up list of component packaging ways # 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 "OnePackPerGroup")
list(APPEND CWAYLST "IgnoreGroup") list(APPEND CWAYLST "IgnoreGroup")
list(APPEND CWAYLST "AllInOne") list(APPEND CWAYLST "AllInOne")
foreach(CPackGen ${GENLST}) foreach(CPackGen IN LISTS ACTIVE_CPACK_GENERATORS)
set(CPackRun_CPackGen "-DCPackGen=${CPackGen}") set(CPackRun_CPackGen "-DCPackGen=${CPackGen}")
foreach(CPackComponentWay ${CWAYLST}) foreach(CPackComponentWay ${CWAYLST})
set(CPackRun_CPackComponentWay "-DCPackComponentWay=${CPackComponentWay}") set(CPackRun_CPackComponentWay "-DCPackComponentWay=${CPackComponentWay}")

View File

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