Improve CPack deb generation
This commit is contained in:
+21
-5
@@ -5,6 +5,7 @@ include(CMakeDependentOption)
|
|||||||
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/DAPSS.cmake)
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/DAPSS.cmake)
|
||||||
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/DebugOpts.cmake)
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/DebugOpts.cmake)
|
||||||
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/VerifyBoostDynamic.cmake)
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/VerifyBoostDynamic.cmake)
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
# Set C++ standard
|
# Set C++ standard
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
@@ -19,6 +20,13 @@ endif()
|
|||||||
# Compiler flags
|
# Compiler flags
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic")
|
||||||
|
|
||||||
|
# Ensure installed directories use Debian-standard permissions instead of
|
||||||
|
# inheriting group-writable bits from the build tree.
|
||||||
|
set(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
|
||||||
|
OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
||||||
|
GROUP_READ GROUP_EXECUTE
|
||||||
|
WORLD_READ WORLD_EXECUTE)
|
||||||
|
|
||||||
# Mind oscillator configuration
|
# Mind oscillator configuration
|
||||||
set(MIND_VOSCILLATOR_PERIOD_MS 33 CACHE STRING "Mind's virtual osc clock rate (ms)")
|
set(MIND_VOSCILLATOR_PERIOD_MS 33 CACHE STRING "Mind's virtual osc clock rate (ms)")
|
||||||
if(NOT MIND_VOSCILLATOR_PERIOD_MS GREATER 0)
|
if(NOT MIND_VOSCILLATOR_PERIOD_MS GREATER 0)
|
||||||
@@ -210,21 +218,29 @@ if(ENABLE_TESTS)
|
|||||||
add_subdirectory(tests)
|
add_subdirectory(tests)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
install(TARGETS salmanoff DESTINATION bin)
|
install(TARGETS salmanoff DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
|
||||||
# Install device configuration files (preprocessed .daps files)
|
# Install device configuration files (preprocessed .daps files)
|
||||||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/devices/
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/devices/
|
||||||
DESTINATION share/salmanoff/devices
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/salmanoff/devices
|
||||||
|
DIRECTORY_PERMISSIONS
|
||||||
|
OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
||||||
|
GROUP_READ GROUP_EXECUTE
|
||||||
|
WORLD_READ WORLD_EXECUTE
|
||||||
|
FILE_PERMISSIONS
|
||||||
|
OWNER_READ OWNER_WRITE
|
||||||
|
GROUP_READ
|
||||||
|
WORLD_READ
|
||||||
FILES_MATCHING PATTERN "*.daps"
|
FILES_MATCHING PATTERN "*.daps"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Install documentation
|
# Install documentation
|
||||||
install(FILES README.md DESTINATION share/doc/salmanoff)
|
install(FILES README.md DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||||
install(FILES LICENSE DESTINATION share/doc/salmanoff)
|
install(FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||||
|
|
||||||
# Install example configurations if they exist
|
# Install example configurations if they exist
|
||||||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/examples")
|
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/examples")
|
||||||
install(DIRECTORY examples/ DESTINATION share/salmanoff/examples)
|
install(DIRECTORY examples/ DESTINATION ${CMAKE_INSTALL_DATADIR}/salmanoff/examples)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Include CPack configuration
|
# Include CPack configuration
|
||||||
|
|||||||
+62
-12
@@ -5,22 +5,48 @@
|
|||||||
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
|
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
|
||||||
set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
|
set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
|
||||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
|
||||||
"Salmanoff - A sensor management and control system")
|
"Cognitive robotics runtime")
|
||||||
set(CPACK_PACKAGE_VENDOR "Salmanoff Project")
|
set(CPACK_PACKAGE_VENDOR "Salmanoff Project")
|
||||||
set(CPACK_PACKAGE_CONTACT "maintainer@salmanoff.org")
|
set(CPACK_PACKAGE_CONTACT "maintainer@salmanoff.org")
|
||||||
|
|
||||||
# Set package description
|
# Set package description.
|
||||||
set(CPACK_PACKAGE_DESCRIPTION
|
# Use a single joined string so CMake does not serialize it as a semicolon list
|
||||||
"Salmanoff is a comprehensive sensor management and control system that\n"
|
# in the generated Debian control file.
|
||||||
"provides unified interfaces for various sensor devices including LiDAR\n"
|
string(JOIN "\n "
|
||||||
"systems. It features modular architecture with support for multiple\n"
|
CPACK_PACKAGE_DESCRIPTION
|
||||||
"device types, asynchronous processing, and real-time data handling."
|
"Comprehensive sensor management and control runtime."
|
||||||
)
|
""
|
||||||
|
"Salmanoff provides unified interfaces for various sensor devices,"
|
||||||
|
"including LiDAR systems."
|
||||||
|
"It features modular architecture with support for multiple device"
|
||||||
|
"types, asynchronous processing, and real-time data handling.")
|
||||||
|
|
||||||
# License information
|
# License information
|
||||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
||||||
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
|
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
|
||||||
|
|
||||||
|
# Debian-specific packaged documentation.
|
||||||
|
set(SALMANOFF_CHANGELOG_TXT "${CMAKE_CURRENT_BINARY_DIR}/changelog")
|
||||||
|
set(SALMANOFF_CHANGELOG_GZ "${CMAKE_CURRENT_BINARY_DIR}/changelog.gz")
|
||||||
|
file(WRITE "${SALMANOFF_CHANGELOG_TXT}"
|
||||||
|
"salmanoff (${PROJECT_VERSION}) unstable; urgency=medium\n\n"
|
||||||
|
" * Package release.\n\n"
|
||||||
|
" -- Salmanoff Project <maintainer@salmanoff.org> Fri, 06 Mar 2026 00:00:00 +0000\n")
|
||||||
|
execute_process(
|
||||||
|
COMMAND gzip -n -9 -c "${SALMANOFF_CHANGELOG_TXT}"
|
||||||
|
OUTPUT_FILE "${SALMANOFF_CHANGELOG_GZ}"
|
||||||
|
)
|
||||||
|
|
||||||
|
set(SALMANOFF_MANPAGE_GZ "${CMAKE_CURRENT_BINARY_DIR}/salmanoff.1.gz")
|
||||||
|
execute_process(
|
||||||
|
COMMAND gzip -n -9 -c "${CMAKE_CURRENT_SOURCE_DIR}/docs/salmanoff.1"
|
||||||
|
OUTPUT_FILE "${SALMANOFF_MANPAGE_GZ}"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(FILES "${SALMANOFF_CHANGELOG_GZ}" DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||||
|
install(FILES "${SALMANOFF_MANPAGE_GZ}" DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
||||||
|
install(FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR} RENAME copyright)
|
||||||
|
|
||||||
# Enable deb and rpm generators
|
# Enable deb and rpm generators
|
||||||
set(CPACK_GENERATOR "DEB;RPM")
|
set(CPACK_GENERATOR "DEB;RPM")
|
||||||
|
|
||||||
@@ -36,9 +62,12 @@ set(CPACK_DEBIAN_PACKAGE_DISTRIBUTION "ubuntu")
|
|||||||
set(CPACK_DEBIAN_PACKAGE_BUILD_DEPENDS
|
set(CPACK_DEBIAN_PACKAGE_BUILD_DEPENDS
|
||||||
"build-essential, cmake (>= 3.16), libboost-all-dev, flex, bison, ocl-icd-opencl-dev, liburing-dev")
|
"build-essential, cmake (>= 3.16), libboost-all-dev, flex, bison, ocl-icd-opencl-dev, liburing-dev")
|
||||||
|
|
||||||
# Runtime dependencies (from builddeps file - runtime equivalents)
|
# Runtime dependencies.
|
||||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS
|
# Let dpkg-shlibdeps derive the actual ELF dependencies from the built
|
||||||
"libboost-system1.74.0 | libboost-system1.73.0 | libboost-system1.72.0, libboost-log1.74.0 | libboost-log1.73.0 | libboost-log1.72.0, libc6, libstdc++6, ocl-icd-libopencl1 | libopencl1, liburing2 | liburing1")
|
# binaries/libraries. Hard-coding old Boost soname packages here makes the
|
||||||
|
# package unnecessarily pull obsolete runtimes on newer distros, and in this
|
||||||
|
# tree the generated binaries are not currently linked against Boost DSOs.
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_DEPENDS "")
|
||||||
set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "libxcb1, libx11-6")
|
set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "libxcb1, libx11-6")
|
||||||
set(CPACK_DEBIAN_PACKAGE_SUGGESTS "livox-sdk")
|
set(CPACK_DEBIAN_PACKAGE_SUGGESTS "livox-sdk")
|
||||||
|
|
||||||
@@ -49,9 +78,19 @@ set(CPACK_RPM_PACKAGE_URL "https://github.com/salmanoff/salmanoff")
|
|||||||
set(CPACK_RPM_PACKAGE_REQUIRES "boost-system >= 1.72.0, boost-log >= 1.72.0, glibc, libstdc++, ocl-icd, liburing")
|
set(CPACK_RPM_PACKAGE_REQUIRES "boost-system >= 1.72.0, boost-log >= 1.72.0, glibc, libstdc++, ocl-icd, liburing")
|
||||||
set(CPACK_RPM_PACKAGE_SUGGESTS "xcb, libX11, livox-sdk")
|
set(CPACK_RPM_PACKAGE_SUGGESTS "xcb, libX11, livox-sdk")
|
||||||
|
|
||||||
|
# Package file naming using Debian's architecture naming when available.
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}")
|
||||||
|
if(EXISTS "/usr/bin/dpkg")
|
||||||
|
execute_process(
|
||||||
|
COMMAND /usr/bin/dpkg --print-architecture
|
||||||
|
OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Package file naming using project variables
|
# Package file naming using project variables
|
||||||
set(CPACK_PACKAGE_FILE_NAME
|
set(CPACK_PACKAGE_FILE_NAME
|
||||||
"${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_PROCESSOR}")
|
"${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
|
||||||
|
|
||||||
# Enable automatic dependency detection for Debian packages
|
# Enable automatic dependency detection for Debian packages
|
||||||
# This uses dpkg-shlibdeps to automatically detect shared library dependencies
|
# This uses dpkg-shlibdeps to automatically detect shared library dependencies
|
||||||
@@ -60,3 +99,14 @@ set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
|||||||
# Set compression
|
# Set compression
|
||||||
set(CPACK_DEB_COMPONENT_INSTALL ON)
|
set(CPACK_DEB_COMPONENT_INSTALL ON)
|
||||||
set(CPACK_RPM_COMPONENT_INSTALL ON)
|
set(CPACK_RPM_COMPONENT_INSTALL ON)
|
||||||
|
|
||||||
|
# Generate standard Debian shared-library metadata and use triggers instead of
|
||||||
|
# maintainer scripts for ldconfig handling.
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON)
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/postinst"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/postrm"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/triggers")
|
||||||
|
|
||||||
|
# Ship stripped binaries in the primary package.
|
||||||
|
set(CPACK_STRIP_FILES ON)
|
||||||
|
|||||||
Executable
+5
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# ldconfig is handled via the package trigger.
|
||||||
|
exit 0
|
||||||
Executable
+5
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# ldconfig is handled via the package trigger.
|
||||||
|
exit 0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
activate-noawait ldconfig
|
||||||
@@ -4,6 +4,11 @@ add_library(attachmentSupport SHARED
|
|||||||
stagingBuffer.cpp
|
stagingBuffer.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set_target_properties(attachmentSupport PROPERTIES
|
||||||
|
VERSION ${PROJECT_VERSION}
|
||||||
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||||
|
)
|
||||||
|
|
||||||
target_include_directories(attachmentSupport PUBLIC
|
target_include_directories(attachmentSupport PUBLIC
|
||||||
${Boost_INCLUDE_DIRS}
|
${Boost_INCLUDE_DIRS}
|
||||||
${CMAKE_SOURCE_DIR}/include
|
${CMAKE_SOURCE_DIR}/include
|
||||||
@@ -24,4 +29,6 @@ add_custom_command(TARGET attachmentSupport POST_BUILD
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Install rules
|
# Install rules
|
||||||
install(TARGETS attachmentSupport DESTINATION lib)
|
install(TARGETS attachmentSupport
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} NAMELINK_SKIP
|
||||||
|
)
|
||||||
|
|||||||
@@ -10,6 +10,11 @@ if(ENABLE_LIB_livoxProto1)
|
|||||||
udpCommandDemuxer.cpp
|
udpCommandDemuxer.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set_target_properties(livoxProto1 PROPERTIES
|
||||||
|
VERSION ${PROJECT_VERSION}
|
||||||
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||||
|
)
|
||||||
|
|
||||||
# Set config define for header generation
|
# Set config define for header generation
|
||||||
add_compile_definitions(CONFIG_LIB_LIVOXPROTO1_ENABLED)
|
add_compile_definitions(CONFIG_LIB_LIVOXPROTO1_ENABLED)
|
||||||
target_include_directories(livoxProto1 PUBLIC ${Boost_INCLUDE_DIRS})
|
target_include_directories(livoxProto1 PUBLIC ${Boost_INCLUDE_DIRS})
|
||||||
@@ -25,5 +30,7 @@ if(ENABLE_LIB_livoxProto1)
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Install rules
|
# Install rules
|
||||||
install(TARGETS livoxProto1 DESTINATION lib)
|
install(TARGETS livoxProto1
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} NAMELINK_SKIP
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -10,11 +10,18 @@ if(ENABLE_LIB_xcbXorg)
|
|||||||
xcbXorg.cpp
|
xcbXorg.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set_target_properties(xcbXorg PROPERTIES
|
||||||
|
VERSION ${PROJECT_VERSION}
|
||||||
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||||
|
)
|
||||||
|
|
||||||
# Set config define for header generation
|
# Set config define for header generation
|
||||||
add_compile_definitions(CONFIG_LIB_XCBXORG_ENABLED)
|
add_compile_definitions(CONFIG_LIB_XCBXORG_ENABLED)
|
||||||
target_include_directories(xcbXorg PUBLIC ${XCB_INCLUDE_DIRS})
|
target_include_directories(xcbXorg PUBLIC ${XCB_INCLUDE_DIRS})
|
||||||
target_link_libraries(xcbXorg ${XCB_LIBRARIES} attachmentSupport)
|
target_link_libraries(xcbXorg ${XCB_LIBRARIES} attachmentSupport)
|
||||||
|
|
||||||
# Install rules
|
# Install rules
|
||||||
install(TARGETS xcbXorg DESTINATION lib)
|
install(TARGETS xcbXorg
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} NAMELINK_SKIP
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
+1
-1
Submodule libspinscale updated: 596ad367e2...b6eb502e56
@@ -20,6 +20,11 @@ if(ENABLE_STIMBUFFAPI_livoxGen1)
|
|||||||
openClKernels.cl.S
|
openClKernels.cl.S
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set_target_properties(livoxGen1 PROPERTIES
|
||||||
|
VERSION ${PROJECT_VERSION}
|
||||||
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||||
|
)
|
||||||
|
|
||||||
# Set assembler working directory so .incbin can find the .cl file
|
# Set assembler working directory so .incbin can find the .cl file
|
||||||
# Also declare dependency on collateDgrams.cl and slotCompactor.cl
|
# Also declare dependency on collateDgrams.cl and slotCompactor.cl
|
||||||
set_source_files_properties(openClKernels.cl.S PROPERTIES
|
set_source_files_properties(openClKernels.cl.S PROPERTIES
|
||||||
@@ -54,5 +59,7 @@ if(ENABLE_STIMBUFFAPI_livoxGen1)
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Install rules
|
# Install rules
|
||||||
install(TARGETS livoxGen1 DESTINATION lib)
|
install(TARGETS livoxGen1
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} NAMELINK_SKIP
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -11,6 +11,11 @@ if(ENABLE_STIMBUFFAPI_xcbWindow)
|
|||||||
xcbWindow.cpp
|
xcbWindow.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set_target_properties(xcbWindow PROPERTIES
|
||||||
|
VERSION ${PROJECT_VERSION}
|
||||||
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||||
|
)
|
||||||
|
|
||||||
target_include_directories(xcbWindow PUBLIC
|
target_include_directories(xcbWindow PUBLIC
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
||||||
@@ -26,5 +31,7 @@ if(ENABLE_STIMBUFFAPI_xcbWindow)
|
|||||||
attachmentSupport)
|
attachmentSupport)
|
||||||
|
|
||||||
# Install rules
|
# Install rules
|
||||||
install(TARGETS xcbWindow DESTINATION lib)
|
install(TARGETS xcbWindow
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} NAMELINK_SKIP
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
Reference in New Issue
Block a user