Improve rpm detection and rpm package naming
Also don't build rpm packages on debian, even if rpm is installed.
This commit is contained in:
parent
a35ebed4ab
commit
fade10aa1b
@ -497,19 +497,52 @@ else(WIN32)
|
|||||||
# .rpm settings
|
# .rpm settings
|
||||||
# RPM package building needs rpmbuild, but cpack doesn't check for it first...
|
# RPM package building needs rpmbuild, but cpack doesn't check for it first...
|
||||||
find_program(RPM_AVAILABLE "rpmbuild")
|
find_program(RPM_AVAILABLE "rpmbuild")
|
||||||
if(RPM_AVAILABLE)
|
execute_process(COMMAND rpm -q rpm
|
||||||
|
RESULT_VARIABLE RPM_VERSION_EXIT
|
||||||
|
OUTPUT_VARIABLE RPMCOMMAND_PACKAGE_VERSION
|
||||||
|
ERROR_QUIET
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
if(RPM_VERSION_EXIT)
|
||||||
|
if(NOT RPMCOMMAND_PACKAGE_VERSION STREQUAL "package rpm is not installed")
|
||||||
|
message(FATAL_ERROR "Could not determine version of installed rpm package")
|
||||||
|
endif(NOT RPMCOMMAND_PACKAGE_VERSION STREQUAL "package rpm is not installed")
|
||||||
|
endif(RPM_VERSION_EXIT)
|
||||||
|
if(RPM_AVAILABLE AND NOT RPM_VERSION_EXIT)
|
||||||
message(STATUS "rpmbuild found - enabling .rpm package generation")
|
message(STATUS "rpmbuild found - enabling .rpm package generation")
|
||||||
set(CPACK_GENERATOR ${CPACK_GENERATOR} RPM)
|
set(CPACK_GENERATOR ${CPACK_GENERATOR} RPM)
|
||||||
|
|
||||||
set(CPACK_RPM_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-${CPACK_PACKAGE_VERSION_PATCH}-${PACKAGE_TARGET_ARCHITECTURE}")
|
if(RPM_VERSION_EXIT)
|
||||||
|
message(FATAL_ERROR "Could not determine version of installed rpm package")
|
||||||
|
else(RPM_VERSION_EXIT)
|
||||||
|
# Fedora sample: rpm-4.13.0-0.rc1.13.fc23.x86_64
|
||||||
|
# OpenSuse sample: rpm-4.12.0.1-13.1.x86_64
|
||||||
|
string(REGEX MATCH "(\\.((fc|el)[0-9]+))?\\.([^.]+)$" MATCH_RESULT "${RPMCOMMAND_PACKAGE_VERSION}")
|
||||||
|
if(CMAKE_MATCH_2 STREQUAL "")
|
||||||
|
set(CPACK_RPM_DIST "")
|
||||||
|
else(CMAKE_MATCH_2 STREQUAL "")
|
||||||
|
set(CPACK_RPM_DIST ".${CMAKE_MATCH_2}")
|
||||||
|
endif(CMAKE_MATCH_2 STREQUAL "")
|
||||||
|
set(RPM_PACKAGE_ARCHITECTURE "${CMAKE_MATCH_4}")
|
||||||
|
string(REGEX MATCH "${RPM_PACKAGE_ARCHITECTURE}" MATCH_RESULT "${PACKAGE_TARGET_ARCHITECTURE}")
|
||||||
|
if(NOT "${MATCH_RESULT}" STREQUAL "${RPM_PACKAGE_ARCHITECTURE}")
|
||||||
|
set(RPM_PACKAGE_ARCHITECTURE "${PACKAGE_TARGET_ARCHITECTURE}")
|
||||||
|
endif()
|
||||||
|
endif(RPM_VERSION_EXIT)
|
||||||
|
message(STATUS "Rpm distribution: ${CPACK_RPM_DIST}")
|
||||||
|
message(STATUS "Rpm package architecture: ${RPM_PACKAGE_ARCHITECTURE}")
|
||||||
|
|
||||||
|
string(REPLACE "-" "." RPM_VERSION_STRING "${VERSION_STRING}")
|
||||||
|
set(CPACK_RPM_PACKAGE_FILE_NAME "${PROJECT_NAME}-${RPM_VERSION_STRING}.${CPACK_PACKAGE_VERSION_PATCH}${CPACK_RPM_DIST}.${RPM_PACKAGE_ARCHITECTURE}")
|
||||||
message(STATUS "Rpm package name: ${CPACK_RPM_PACKAGE_FILE_NAME}.rpm")
|
message(STATUS "Rpm package name: ${CPACK_RPM_PACKAGE_FILE_NAME}.rpm")
|
||||||
set(CPACK_RPM_PACKAGE_VERSION "${VERSION_STRING}.${CPACK_PACKAGE_VERSION_PATCH}")
|
set(CPACK_RPM_PACKAGE_VERSION "${RPM_VERSION_STRING}.${CPACK_PACKAGE_VERSION_PATCH}${CPACK_RPM_DIST}")
|
||||||
set(CPACK_RPM_PACKAGE_GROUP "Amusements/Games")
|
set(CPACK_RPM_PACKAGE_GROUP "Amusements/Games")
|
||||||
set(CPACK_RPM_PACKAGE_LICENSE "GPLv2.1+")
|
set(CPACK_RPM_PACKAGE_LICENSE "GPLv2.1+")
|
||||||
set(CPACK_RPM_PACKAGE_URL "${CPACK_PACKAGE_URL}")
|
set(CPACK_RPM_PACKAGE_URL "${CPACK_PACKAGE_URL}")
|
||||||
else(RPM_AVAILABLE)
|
elseif(RPM_VERSION_EXIT)
|
||||||
|
message(STATUS "rpm is installed, but not the native package manager - no .rpm package will be generated")
|
||||||
|
else(RPM_AVAILABLE AND NOT RPM_VERSION_EXIT)
|
||||||
message(STATUS "rpmbuild not found - no .rpm package will be generated")
|
message(STATUS "rpmbuild not found - no .rpm package will be generated")
|
||||||
endif(RPM_AVAILABLE)
|
endif(RPM_AVAILABLE AND NOT RPM_VERSION_EXIT)
|
||||||
unset(RPM_AVAILABLE CACHE)
|
unset(RPM_AVAILABLE CACHE)
|
||||||
else(CMAKE_INSTALL_PREFIX STREQUAL "/usr")
|
else(CMAKE_INSTALL_PREFIX STREQUAL "/usr")
|
||||||
message(STATUS "Install prefix is not '/usr' - not building .deb / .rpm packages")
|
message(STATUS "Install prefix is not '/usr' - not building .deb / .rpm packages")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user