From 4f178e5f663d4532c1e2e5245bec727738836a47 Mon Sep 17 00:00:00 2001 From: Pat Riehecky Date: Thu, 5 Nov 2026 13:40:28 -0600 Subject: [PATCH] Minor tweaks for cpack --- CMakeLists.txt | 42 ++++++++++++++++------------------------ src/C/CMakeLists.txt | 14 +++++++++++--- src/shell/CMakeLists.txt | 7 +++++-- 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6cb542b..fd6a7b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,47 +5,35 @@ project(kcron C) set(LANGUAGES "C") -################################ -# Testing (CTest) -enable_testing() -include(CTest) - -if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING - "Build type (Debug, Release, RelWithDebInfo, MinSizeRel)" FORCE - ) - message(STATUS "Build type not specified, defaulting to RelWithDebInfo") -endif() - -message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") - -execute_process(COMMAND git describe --abbrev=0 OUTPUT_VARIABLE VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) - -#### -# CMake modules include(FeatureSummary) set_package_properties(kcron PROPERTIES URL "https://github.com/fermitools/kcron" DESCRIPTION "A utility for getting Kerberos credentials in scheduled jobs") +execute_process(COMMAND git describe --abbrev=0 OUTPUT_VARIABLE VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) +#### set(CPACK_PACKAGE_NAME "fermilab-util_${CMAKE_PROJECT_NAME}") set(CPACK_PACKAGE_CONTACT "fermilab ") -set(CPACK_PACKAGE_DESCRIPTION A utility for getting Kerberos credentials in scheduled jobs) -set(CPACK_RPM_PACKAGE_DESCRIPTION A utility for getting Kerberos credentials in scheduled jobs) +set(CPACK_PACKAGE_DESCRIPTION "A utility for getting Kerberos credentials in scheduled jobs") set(CPACK_PACKAGE_VERSION ${VERSION}) -set(CPACK_PACKAGE_RELEASE 1) set(CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/LICENSE) -set(CPACK_RPM_PACKAGE_LICENSE MIT) set(CPACK_PACKAGING_INSTALL_PREFIX "/usr") -set(CPACK_RPM_PACKAGE_RELOCATABLE OFF) -set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}.${CMAKE_SYSTEM_PROCESSOR}") -set(CPACK_GENERATOR "RPM") include(CPack) +#### +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING + "Build type (Debug, Release, RelWithDebInfo, MinSizeRel)" FORCE + ) + message(STATUS "Build type not specified, defaulting to RelWithDebInfo") +endif() + +message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") + ### Require out-of-source builds file(TO_CMAKE_PATH "${PROJECT_BINARY_DIR}/CMakeLists.txt" LOC_PATH) if(EXISTS "${LOC_PATH}") @@ -58,6 +46,10 @@ endif(EXISTS "${LOC_PATH}") include(doc/CMakeLists.txt) include(src/C/CMakeLists.txt) include(src/shell/CMakeLists.txt) + +# Testing (CTest) +enable_testing() +include(CTest) add_subdirectory(test) #### diff --git a/src/C/CMakeLists.txt b/src/C/CMakeLists.txt index 2a117c7..8f65558 100644 --- a/src/C/CMakeLists.txt +++ b/src/C/CMakeLists.txt @@ -285,12 +285,20 @@ add_executable(client-keytab-name) ############################# # Installation Configuration +# init-kerberos-client-dir also needs cap_chown,cap_dac_override set via +# setcap post-install (file capabilities aren't expressible via install()). install(TARGETS init-kerberos-client-dir DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/kcron - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE) install(TARGETS create-empty-client-keytab DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/kcron - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE) install(TARGETS client-keytab-name DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/kcron - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE) message(STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}") message(STATUS "Install libexec: ${CMAKE_INSTALL_LIBEXECDIR}") diff --git a/src/shell/CMakeLists.txt b/src/shell/CMakeLists.txt index ed515f2..6a11a05 100644 --- a/src/shell/CMakeLists.txt +++ b/src/shell/CMakeLists.txt @@ -3,8 +3,11 @@ cmake_minimum_required (VERSION 3.11) include(GNUInstallDirs) -install(FILES ${PROJECT_SOURCE_DIR}/src/shell/kcron.sysconfig DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/sysconfig RENAME kcron) -install(FILES ${PROJECT_SOURCE_DIR}/src/shell/kcrondestroy ${PROJECT_SOURCE_DIR}/src/shell/kcroninit DESTINATION ${CMAKE_INSTALL_BINDIR}) +install(FILES ${PROJECT_SOURCE_DIR}/src/shell/kcron.sysconfig DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/sysconfig RENAME kcron + PERMISSIONS OWNER_READ OWNER_WRITE + GROUP_READ + WORLD_READ) +install(PROGRAMS ${PROJECT_SOURCE_DIR}/src/shell/kcrondestroy ${PROJECT_SOURCE_DIR}/src/shell/kcroninit DESTINATION ${CMAKE_INSTALL_BINDIR}) # # All CTest registrations for the shell utilities (syntax checks, sourcing,