CMake: Add preliminary CPack support
We'll tune it later.
This commit is contained in:
@@ -75,3 +75,22 @@ target_link_libraries(salmanoff
|
|||||||
add_all_daps_dependencies()
|
add_all_daps_dependencies()
|
||||||
|
|
||||||
install(TARGETS salmanoff DESTINATION bin)
|
install(TARGETS salmanoff DESTINATION bin)
|
||||||
|
|
||||||
|
# Install device configuration files (preprocessed .daps files)
|
||||||
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/devices/
|
||||||
|
DESTINATION share/salmanoff/devices
|
||||||
|
FILES_MATCHING PATTERN "*.daps"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Install documentation
|
||||||
|
install(FILES README.md DESTINATION share/doc/salmanoff)
|
||||||
|
install(FILES LICENSE DESTINATION share/doc/salmanoff)
|
||||||
|
|
||||||
|
# Install example configurations if they exist
|
||||||
|
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/examples")
|
||||||
|
install(DIRECTORY examples/ DESTINATION share/salmanoff/examples)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Include CPack configuration
|
||||||
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPackConfig.cmake)
|
||||||
|
include(CPack)
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
Copyright (c) 2024 Salmanoff Project. All rights reserved.
|
||||||
|
|
||||||
|
PROPRIETARY SOFTWARE LICENSE
|
||||||
|
|
||||||
|
This software and associated documentation files (the "Software") are
|
||||||
|
proprietary and confidential. The Software is owned exclusively by the
|
||||||
|
Salmanoff Project and is protected by copyright laws and international
|
||||||
|
treaty provisions.
|
||||||
|
|
||||||
|
NO LICENSE GRANTED. No person or entity is granted any rights or
|
||||||
|
permissions to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
sell, or otherwise transfer the Software or any portion thereof without
|
||||||
|
explicit written permission from the Salmanoff Project.
|
||||||
|
|
||||||
|
UNAUTHORIZED USE PROHIBITED. Any unauthorized use, reproduction, or
|
||||||
|
distribution of the Software is strictly prohibited and may result in
|
||||||
|
severe civil and criminal penalties.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
# Package Generation
|
||||||
|
|
||||||
|
This project supports generating both Debian (.deb) and RPM (.rpm) packages
|
||||||
|
using CPack.
|
||||||
|
|
||||||
|
## Manual Package Generation
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- CMake 3.16 or later
|
||||||
|
- Make or Ninja build system
|
||||||
|
- For RPM packages: `rpmbuild` utility
|
||||||
|
|
||||||
|
### Build Process
|
||||||
|
|
||||||
|
1. **Create build directory:**
|
||||||
|
```bash
|
||||||
|
mkdir -p build-package
|
||||||
|
cd build-package
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Configure with CMake:**
|
||||||
|
```bash
|
||||||
|
cmake .. -DCMAKE_BUILD_TYPE=Release
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Build the project:**
|
||||||
|
```bash
|
||||||
|
make -j$(nproc)
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Generate packages:**
|
||||||
|
```bash
|
||||||
|
cpack -G DEB # Generate Debian package
|
||||||
|
cpack -G RPM # Generate RPM package (requires rpmbuild)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Requirements for RPM Generation
|
||||||
|
|
||||||
|
To generate RPM packages, you need `rpmbuild` installed:
|
||||||
|
|
||||||
|
- **Ubuntu/Debian**: `sudo apt-get install rpm`
|
||||||
|
- **CentOS/RHEL**: `sudo yum install rpm-build`
|
||||||
|
- **Fedora**: `sudo dnf install rpm-build`
|
||||||
|
|
||||||
|
### Package Contents
|
||||||
|
|
||||||
|
The generated packages include:
|
||||||
|
|
||||||
|
- **Main executable**: `/usr/bin/salmanoff`
|
||||||
|
- **Shared libraries**: `/usr/lib/lib*.so`
|
||||||
|
- **Device configurations**: `/usr/share/salmanoff/devices/` (preprocessed
|
||||||
|
.daps files)
|
||||||
|
- **Documentation**: `/usr/share/doc/salmanoff/`
|
||||||
|
|
||||||
|
### Installing Packages
|
||||||
|
|
||||||
|
**Debian/Ubuntu:**
|
||||||
|
```bash
|
||||||
|
sudo dpkg -i salmanoff-0.00.004-x86_64.deb
|
||||||
|
```
|
||||||
|
|
||||||
|
**CentOS/RHEL/Fedora:**
|
||||||
|
```bash
|
||||||
|
sudo rpm -i salmanoff-0.00.004-x86_64.rpm
|
||||||
|
```
|
||||||
|
|
||||||
|
### Package Configuration
|
||||||
|
|
||||||
|
Package metadata and configuration is defined in
|
||||||
|
`cmake/CPackConfig.cmake`. This includes:
|
||||||
|
|
||||||
|
- Package name, version, and description
|
||||||
|
- Dependencies and recommendations
|
||||||
|
- License information
|
||||||
|
- File naming conventions
|
||||||
|
|
||||||
|
### Troubleshooting
|
||||||
|
|
||||||
|
- **RPM generation fails**: Ensure `rpmbuild` is installed
|
||||||
|
- **Missing dependencies**: Check that all build dependencies are
|
||||||
|
installed
|
||||||
|
- **Permission errors**: Ensure you have write permissions in the build
|
||||||
|
directory
|
||||||
@@ -8,3 +8,5 @@ This project, Salmanoff (pronounced: Sal-man-off), is an ROS rewrite of the Hari
|
|||||||
* Leonard Peik`OFF`.
|
* Leonard Peik`OFF`.
|
||||||
|
|
||||||
Would you like to know what this project is and does? Well, it's a secret! But you can find out by reading the code. Or you could just ask me. Or you could wait until I release it. But that's no fun.
|
Would you like to know what this project is and does? Well, it's a secret! But you can find out by reading the code. Or you could just ask me. Or you could wait until I release it. But that's no fun.
|
||||||
|
|
||||||
|
For package generation instructions, see [PACKAGING.md](PACKAGING.md).
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# CPack configuration for package generation
|
||||||
|
# This file contains all CPack settings for generating deb and rpm packages
|
||||||
|
|
||||||
|
# Set package metadata using project variables
|
||||||
|
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
|
||||||
|
set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
|
||||||
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
|
||||||
|
"Salmanoff - A sensor management and control system")
|
||||||
|
set(CPACK_PACKAGE_VENDOR "Salmanoff Project")
|
||||||
|
set(CPACK_PACKAGE_CONTACT "maintainer@salmanoff.org")
|
||||||
|
|
||||||
|
# Set package description
|
||||||
|
set(CPACK_PACKAGE_DESCRIPTION
|
||||||
|
"Salmanoff is a comprehensive sensor management and control system that\n"
|
||||||
|
"provides unified interfaces for various sensor devices including LiDAR\n"
|
||||||
|
"systems. It features modular architecture with support for multiple\n"
|
||||||
|
"device types, asynchronous processing, and real-time data handling."
|
||||||
|
)
|
||||||
|
|
||||||
|
# License information
|
||||||
|
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
||||||
|
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
|
||||||
|
|
||||||
|
# Enable deb and rpm generators
|
||||||
|
set(CPACK_GENERATOR "DEB;RPM")
|
||||||
|
|
||||||
|
# DEB package specific settings
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_MAINTAINER
|
||||||
|
"Salmanoff Project <maintainer@salmanoff.org>")
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_SECTION "science")
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_DEPENDS
|
||||||
|
"libboost-system1.74.0 | libboost-system1.73.0 | libboost-system1.72.0, "
|
||||||
|
"libc6, libstdc++6")
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "libxcb1, libx11-6")
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_SUGGESTS "livox-sdk")
|
||||||
|
|
||||||
|
# RPM package specific settings
|
||||||
|
set(CPACK_RPM_PACKAGE_LICENSE "Proprietary")
|
||||||
|
set(CPACK_RPM_PACKAGE_GROUP "Applications/Engineering")
|
||||||
|
set(CPACK_RPM_PACKAGE_URL "https://github.com/salmanoff/salmanoff")
|
||||||
|
set(CPACK_RPM_PACKAGE_REQUIRES "boost-system >= 1.72.0, glibc, libstdc++")
|
||||||
|
set(CPACK_RPM_PACKAGE_SUGGESTS "xcb, libX11, livox-sdk")
|
||||||
|
|
||||||
|
# Package file naming using project variables
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME
|
||||||
|
"${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||||
|
|
||||||
|
# Set compression
|
||||||
|
set(CPACK_DEB_COMPONENT_INSTALL ON)
|
||||||
|
set(CPACK_RPM_COMPONENT_INSTALL ON)
|
||||||
Reference in New Issue
Block a user