From 229385955109b866a23c4ac2aa03d4d11044c39d Mon Sep 17 00:00:00 2001 From: "Enrico Loparco (eloparco)" Date: Thu, 24 Jun 2021 09:15:41 +0200 Subject: [HICN-708] Rebase with master Signed-off-by: Enrico Loparco (eloparco) Change-Id: I2122e1d61dd3b2e039972624ffbdbcb3c5610159 --- cmake/Modules/Packager.cmake | 162 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 142 insertions(+), 20 deletions(-) (limited to 'cmake/Modules/Packager.cmake') diff --git a/cmake/Modules/Packager.cmake b/cmake/Modules/Packager.cmake index 1edfd671d..f27479188 100644 --- a/cmake/Modules/Packager.cmake +++ b/cmake/Modules/Packager.cmake @@ -26,10 +26,10 @@ function(get_next_version VERSION NEXT_VERSION) list(GET VER_NUMBERS 0 major) list(GET VER_NUMBERS 1 minor) - math(EXPR minor "${minor} + 3") + math(EXPR minor "${minor} + 4") if (minor GREATER 12) - set(minor "1") + math(EXPR minor "${minor} % 12") math(EXPR major "${major} + 1") endif() @@ -52,17 +52,17 @@ macro(extract_version) if (NOT VER) set(VER "v1.2-0-gcafe") endif() - message(STATUS "Git describe output: ${VER}") - string(REGEX REPLACE "v([0-9]+).([0-9]+).*-([0-9]+)-(g[0-9a-f]+)" "\\1;\\2;\\3;\\4" VER ${VER}) + string(REGEX REPLACE "v([0-9]+).([0-9]+)-?(.*)?-([0-9]+)-(g[0-9a-f]+)" "\\1;\\2;\\3;\\4;\\5;" VER ${VER}) list(GET VER 0 VERSION_MAJOR) list(GET VER 1 VERSION_MINOR) - list(GET VER 2 VERSION_REVISION) - list(GET VER 3 COMMIT_NAME) + list(GET VER 2 RELEASE_CANDIDATE) + list(GET VER 3 VERSION_REVISION) + list(GET VER 4 COMMIT_NAME) endmacro(extract_version) -macro(make_packages) +function(make_packages) if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") # parse /etc/os-release file(READ "/etc/os-release" os_version) @@ -78,6 +78,7 @@ macro(make_packages) message(STATUS "Version major: ${VERSION_MAJOR}") message(STATUS "Version minor: ${VERSION_MINOR}") + message(STATUS "Release: ${RELEASE_CANDIDATE}") message(STATUS "Revision: ${VERSION_REVISION}") message(STATUS "Commit hash: ${COMMIT_NAME}") @@ -91,24 +92,43 @@ macro(make_packages) else() set(bld "b$ENV{BUILD_NUMBER}") endif() - - message("Build number is: ${bld}") + message(STATUS "Build number is: ${bld}") #define DEB and RPM version numbers - if(${commit_num} EQUAL 0) - set(deb_ver "${tag}") - set(rpm_ver "${tag}") + if(NOT RELEASE_CANDIDATE) + if (commit_num) + set(deb_ver "${tag}.${commit_num}-release") + set(rpm_ver "${tag}.${commit_num}") + else() + set(deb_ver "${tag}-release") + set(rpm_ver "${tag}") + endif() + set(rpm_release "release") else() - set(deb_ver "${tag}-${commit_num}-release") - set(rpm_ver "${tag}-${commit_num}-release") + # TODO To be changed for next release with + # set(deb_ver "${tag}${RELEASE_CANDIDATE}~${commit_num}") + # set(rpm_ver "${tag}") + # set(rpm_release "${RELEASE_CANDIDATE}~${commit_num}") + set(deb_ver "${tag}-${commit_num}") + set(rpm_ver "${tag}-${commit_num}") + set(rpm_release "1") endif() + message(STATUS "Version: ${deb_ver}") + get_next_version(${tag} next_version) + message(STATUS "Next version: ${next_version}") get_cmake_property(components COMPONENTS) list(REMOVE_ITEM components "Unspecified") set(CPACK_COMPONENTS_ALL ${components}) + list(LENGTH components N_COMPONENTS) + + if (NOT N_COMPONENTS) + return() + endif() + if(OS_ID MATCHES "debian" OR OS_ID_LIKE MATCHES "debian") set(CPACK_GENERATOR "DEB") set(type "DEBIAN") @@ -119,7 +139,7 @@ macro(make_packages) OUTPUT_STRIP_TRAILING_WHITESPACE ) - set(CPACK_PACKAGE_VERSION "${deb_ver}") + set(CPACK_${type}_PACKAGE_VERSION "${deb_ver}") foreach(lc ${components}) if (${lc} MATCHES ".*Unspecified.*") continue() @@ -152,7 +172,8 @@ macro(make_packages) OUTPUT_STRIP_TRAILING_WHITESPACE ) - set(CPACK_PACKAGE_VERSION "${rpm_ver}") + set(CPACK_${type}_PACKAGE_VERSION "${rpm_ver}") + set(CPACK_${type}_PACKAGE_RELEASE "${rpm_release}") foreach(lc ${components}) if (${lc} MATCHES ".*Unspecified.*") continue() @@ -162,7 +183,7 @@ macro(make_packages) set(CPACK_${type}_${uc}_DESCRIPTION "${${lc}_DESCRIPTION}") set(RPM_DEPS) - if (NOT ${${lc}_DEB_DEPENDENCIES} STREQUAL "") + if (NOT ${${lc}_RPM_DEPENDENCIES} STREQUAL "") string(REPLACE "stable_version" ${tag} RPM_DEPS ${${lc}_RPM_DEPENDENCIES}) string(REPLACE "next_version" ${next_version} RPM_DEPS ${RPM_DEPS}) endif() @@ -176,7 +197,7 @@ macro(make_packages) endif() set(CPACK_RPM_${uc}_PACKAGE_NAME "${package_name}") - set(CPACK_${type}_${uc}_FILE_NAME "${package_name}-${rpm_ver}.${arch}.rpm") + set(CPACK_${type}_${uc}_FILE_NAME "${package_name}-${rpm_ver}-${rpm_release}.${arch}.rpm") if (NOT ${${lc}_RPM_POST_INSTALL_SCRIPT_FILE} STREQUAL "") set(CPACK_RPM_${uc}_POST_INSTALL_SCRIPT_FILE "${${lc}_RPM_POST_INSTALL_SCRIPT_FILE}") @@ -199,8 +220,109 @@ macro(make_packages) set(CPACK_COMPONENTS_IGNORE_GROUPS 1) set(CPACK_${CPACK_GENERATOR}_COMPONENT_INSTALL ON) set(CPACK_${type}_PACKAGE_MAINTAINER "HICN Team") - set(CPACK_${type}_PACKAGE_RELEASE 1) + set(CPACK_PACKAGE_CONTACT ${CONTACT}) include(CPack) endif() + elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR ${CMAKE_SYSTEM_NAME} MATCHES "Windows") + set(CMAKE_SKIP_BUILD_RPATH FALSE) + set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) + set(CMAKE_INSTALL_RPATH /opt/hicn) + set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + set(CPACK_SET_DESTDIR true) + set(CMAKE_INSTALL_RPATH "\${CPACK_INSTALL_PREFIX}") + set(CMAKE_SKIP_INSTALL_RPATH FALSE) + set(HICN_DEPENDECIES_INSTALLER "${LIBTRANSPORT_LIBRARIES_LIST};${FACEMGR_LIBRARY_LIST};${APPS_LIBRARY_LIST}") + separate_arguments(HICN_DEPENDECIES_INSTALLER) + foreach (HICN_DEPENDECY ${HICN_DEPENDECIES_INSTALLER}) + get_filename_component(DEPENDENCY_NAME "${HICN_DEPENDECY}" NAME) + get_filename_component(DEPENDENCY "${HICN_DEPENDECY}" REALPATH) + get_filename_component(DEPENDENCY_PATH "${DEPENDENCY}" DIRECTORY) + install(FILES ${DEPENDENCY} DESTINATION lib COMPONENT dependencies) + endforeach() + set(CPACK_PACKAGE_NAME "hicn") + extract_version() + set(CPACK_PACKAGE_VENDOR "${PACKAGE_VENDOR}") + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "hICN") + set(CPACK_PACKAGE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}") + set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}") + set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}") + set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_REVISION}") + set(CPACK_PACKAGE_INSTALL_DIRECTORY "hICN Components") + set(CPACK_COMPONENTS_ALL dependencies ${HICN_UTILS} ${HICN_LIGHT} ${HICN_APPS} ${FACEMGR} lib${LIBTRANSPORT} ${LIBTRANSPORT}-dev lib${LIBHICN} ${LIBHICN}-dev ${HICN_UTILS}-dev ${HICN_LIGHT}-dev ${HICN_APPS}-dev ${FACEMGR}-dev) + set(CPACK_COMPONENT_DEPENDENCIES_DISPLAY_NAME "Dependencies") + if (HICN_UTILS) + string(TOUPPER ${HICN_UTILS} HICN_UTILS_UPPERCASE) + set(CPACK_COMPONENT_${HICN_UTILS_UPPERCASE}_DISPLAY_NAME "hICN utils") + set(CPACK_COMPONENT_${HICN_UTILS_UPPERCASE}_GROUP "Executables") + set(CPACK_COMPONENT_${HICN_UTILS_UPPERCASE}_INSTALL_TYPES Full) + set(CPACK_COMPONENT_${HICN_APPS_DEV_UPPERCASE}_DISPLAY_NAME "hicn-apps headers") + endif() + string(TOUPPER ${HICN_LIGHT} HICN_LIGHT_UPPERCASE) + if (HICN_APPS) + string(TOUPPER ${HICN_APPS} HICN_APPS_UPPERCASE) + string(TOUPPER ${HICN_APPS}-dev HICN_APPS_DEV_UPPERCASE) + set(CPACK_COMPONENT_${HICN_APPS_UPPERCASE}_DISPLAY_NAME "hICN apps") + set(CPACK_COMPONENT_${HICN_APPS_DEV_UPPERCASE}_GROUP "Headers") + set(CPACK_COMPONENT_${HICN_APPS_UPPERCASE}_INSTALL_TYPES Full) + set(CPACK_COMPONENT_${HICN_APPS_DEV_UPPERCASE}_INSTALL_TYPES Full) + endif() + if (FACEMGR) + string(TOUPPER ${FACEMGR} FACEMGR_UPPERCASE) + string(TOUPPER ${FACEMGR}-dev FACEMGR_DEV_UPPERCASE) + set(CPACK_COMPONENT_${FACEMGR_DEV_UPPERCASE}_DISPLAY_NAME "facemgr headers") + set(CPACK_COMPONENT_${FACEMGR_UPPERCASE}_DISPLAY_NAME "facemgr") + set(CPACK_COMPONENT_${FACEMGR_UPPERCASE}_GROUP "Executables") + set(CPACK_COMPONENT_${FACEMGR_DEV_UPPERCASE}_GROUP "Headers") + set(CPACK_COMPONENT_${FACEMGR_UPPERCASE}_INSTALL_TYPES Full) + set(CPACK_COMPONENT_${FACEMGR_DEV_UPPERCASE}_INSTALL_TYPES Full) + endif() + string(TOUPPER lib${LIBTRANSPORT} LIBTRANSPORT_UPPERCASE) + string(TOUPPER ${LIBTRANSPORT}-dev LIBTRANSPORT_DEV_UPPERCASE) + string(TOUPPER lib${LIBHICN} LIBHICN_UPPERCASE) + string(TOUPPER ${LIBHICN}-dev LIBHICN_DEV_UPPERCASE) + string(TOUPPER ${HICN_UTILS}-dev HICN_UTILS_DEV_UPPERCASE) + string(TOUPPER ${HICN_LIGHT}-dev HICN_LIGHT_DEV_UPPERCASE) + set(CPACK_COMPONENT_${HICN_LIGHT_UPPERCASE}_DISPLAY_NAME "hICN light apps") + set(CPACK_COMPONENT_${LIBTRANSPORT_UPPERCASE}_DISPLAY_NAME "libtransport libs") + set(CPACK_COMPONENT_${LIBHICN_UPPERCASE}_DISPLAY_NAME "hicn libs") + set(CPACK_COMPONENT_${LIBTRANSPORT_DEV_UPPERCASE}_DISPLAY_NAME "libtransport headers") + set(CPACK_COMPONENT_${LIBHICN_DEV_UPPERCASE}_DISPLAY_NAME "hicn headers") + set(CPACK_COMPONENT_${HICN_UTILS_DEV_UPPERCASE}_DISPLAY_NAME "hicn utils headers") + set(CPACK_COMPONENT_${HICN_LIGHT_DEV_UPPERCASE}_DISPLAY_NAME "hicn-light headers") + set (CPACK_RESOURCE_FILE_LICENSE + "${PROJECT_SOURCE_DIR}/cmake/Modules/License.txt") + set(CPACK_COMPONENT_DEPENDENCIES_DESCRIPTION + "All dependency libreries") + set(CPACK_COMPONENT_${HICN_LIGHT_UPPERCASE}_GROUP "Executables") + set(CPACK_COMPONENT_${HICN_APPS_UPPERCASE}_GROUP "Executables") + set(CPACK_COMPONENT_${LIBTRANSPORT_UPPERCASE}_GROUP "Libraries") + set(CPACK_COMPONENT_${LIBHICN_UPPERCASE}_GROUP "Libraries") + set(CPACK_COMPONENT_${LIBTRANSPORT_DEV_UPPERCASE}_GROUP "Headers") + set(CPACK_COMPONENT_${LIBHICN_DEV_UPPERCASE}_GROUP "Headers") + set(CPACK_COMPONENT_${HICN_UTILS_DEV_UPPERCASE}_GROUP "Headers") + set(CPACK_COMPONENT_${HICN_LIGHT_DEV_UPPERCASE}_GROUP "Headers") + set(CPACK_COMPONENT_DEPENDENCIES_GROUP "Dependencies") + set(CPACK_COMPONENT_GROUP_DEVELOPMENT_EXPANDED ON) + set(CPACK_COMPONENT_GROUP_DEPENDENCIES_DESCRIPTION + "All dependency libreries") + set(CPACK_ALL_INSTALL_TYPES Full Developer) + set(CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything") + set(CPACK_COMPONENT_${HICN_LIGHT_UPPERCASE}_INSTALL_TYPES Full) + set(CPACK_COMPONENT_${LIBTRANSPORT_UPPERCASE}_INSTALL_TYPES Full) + set(CPACK_COMPONENT_${LIBHICN_UPPERCASE}_INSTALL_TYPES Full) + set(CPACK_COMPONENT_${LIBTRANSPORT_DEV_UPPERCASE}_INSTALL_TYPES Full) + set(CPACK_COMPONENT_${LIBHICN_DEV_UPPERCASE}_INSTALL_TYPES Full) + set(CPACK_COMPONENT_${HICN_UTILS_DEV_UPPERCASE}_INSTALL_TYPES Full) + set(CPACK_COMPONENT_${HICN_LIGHT_DEV_UPPERCASE}_INSTALL_TYPES Full) + if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(CMAKE_INSTALL_RPATH /opt/hicn) + + set(CPACK_INSTALL_PREFIX "/opt/hicn") + set(CPACK_GENERATOR productbuild) + set( CPACK_PRE_BUILD_SCRIPTS "${PROJECT_SOURCE_DIR}/cmake/Modules/PostInstall.cmake") + else() + set(CPACK_INSTALL_PREFIX "c:/Program Files/hicn") + endif() + include(CPack) endif() -endmacro() +endfunction() -- cgit 1.2.3-korg