From 37e7bbbecacb17936ebbb10d3ed1834a01a61523 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Fri, 11 Nov 2022 19:15:46 -0500 Subject: [PATCH] add support to create deb packages using CMake CPack; add support to generate a binary tarball; --- CMakeLists.txt | 49 ++++++++++++++++++++++++++++++++++++++++--- debian/changelog | 5 ----- debian/compat | 1 - debian/control | 11 ---------- debian/copyright | 1 - debian/rules | 22 ------------------- debian/source/format | 1 - debian/source/options | 4 ---- 8 files changed, 46 insertions(+), 48 deletions(-) delete mode 100644 debian/changelog delete mode 100644 debian/compat delete mode 100644 debian/control delete mode 100644 debian/copyright delete mode 100755 debian/rules delete mode 100644 debian/source/format delete mode 100644 debian/source/options diff --git a/CMakeLists.txt b/CMakeLists.txt index d3f5ea02..ccf2aca7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -250,11 +250,15 @@ option(CROSS_COMPILE_RPI_ARM "Cross-compile for (old RPi) 32-bit ARM" off) set(CMAKE_C_COMPILER gcc) set(CMAKE_CXX_COMPILER g++) +set(ARCH amd64) +set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE amd64) message(CHECK_START "Cross compiling for 32-bit ARM") if (CROSS_COMPILE_ARM) set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc) set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++) + set(ARCH arm) + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE arm) message(CHECK_PASS "yes") else () message(CHECK_PASS "no") @@ -263,6 +267,8 @@ message(CHECK_START "Cross compiling for 64-bit ARM") if (CROSS_COMPILE_AARCH64) set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc) set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++) + set(ARCH arm64) + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE arm64) message(CHECK_PASS "yes") else () message(CHECK_PASS "no") @@ -271,6 +277,8 @@ message(CHECK_START "Cross compiling for (old RPi) 32-bit ARM") if (CROSS_COMPILE_RPI_ARM) set(CMAKE_C_COMPILER /opt/tools/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc) set(CMAKE_CXX_COMPILER /opt/tools/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++) + set(ARCH armhf) + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE armhf) message(CHECK_PASS "yes") else () message(CHECK_PASS "no") @@ -290,6 +298,7 @@ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -g -O3 -Wall -std=c++11 set(CMAKE_BUILD_TYPE "RelWithDebInfo") set(CMAKE_INSTALL_PREFIX "/opt/dvm") +set(CMAKE_INSTALL_PREFIX_TARBALL "tar_build") set(GIT_VER "") set(GIT_VER_HASH "") @@ -306,6 +315,25 @@ add_executable(dvmhost ${dvmhost_SRC}) target_include_directories(dvmhost PRIVATE .) target_link_libraries(dvmhost PRIVATE Threads::Threads util) +set(CPACK_GENERATOR "DEB") +set(CPACK_PACKAGE_NAME "dvmhost") +set(CPACK_DEBIAN_PACKAGE_NAME "dvmhost") + +set(CPACK_PACKAGE_VENDOR "DVMProject") + +set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "The DVM Host software provides the host computer implementation of a mixed-mode DMR, P25 and/or NXDN or dedicated-mode DMR, P25 or NXDN repeater system that talks to the actual modem hardware. The host software; is the portion of a complete Over-The-Air modem implementation that performs the data processing, decision making and FEC correction for a digital repeater.") +set(CPACK_DEBIAN_PACKAGE_MAINTAINER "DVMProject Authors") +set(CPACK_DEBIAN_PACKAGE_VERSION "3.00") +set(CPACK_DEBIAN_PACKAGE_RELEASE "0") +set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/dvmproject") + +set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA + "${CMAKE_CURRENT_SOURCE_DIR}/debian/postinst;${CMAKE_CURRENT_SOURCE_DIR}/debian/postrm") + +set(CPACK_DEBIAN_FILE_NAME ${CPACK_DEBIAN_PACKAGE_NAME}_${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb) + +include(CPack) + # dvmcmd project project(dvmcmd) find_package(Threads REQUIRED) @@ -332,13 +360,28 @@ target_include_directories(dvmtests PRIVATE .) endif (ENABLE_TESTS) # dvmhost/dvmcmd install -install(TARGETS dvmhost DESTINATION bin) -install(TARGETS dvmcmd DESTINATION bin) +install(TARGETS dvmhost DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) +install(TARGETS dvmcmd DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) install(FILES config.example.yml iden_table.dat RSSI.dat rid_acl.example.dat tg_acl.example.dat DESTINATION ${CMAKE_INSTALL_PREFIX}) install(PROGRAMS start-dvm.sh stop-dvm.sh dvm-watchdog.sh stop-watchdog.sh DESTINATION ${CMAKE_INSTALL_PREFIX}) -install(CODE "execute_process(COMMAND mkdir -p /opt/dvm/log || true)") +install(CODE "execute_process(COMMAND mkdir -p /opt/dvm/log)") install(CODE "execute_process(COMMAND bash \"-c\" \"sed -i 's/filePath: ./filePath: \\\\/opt\\\\/dvm\\\\/log\\\\//' /opt/dvm/config.example.yml\")") install(CODE "execute_process(COMMAND bash \"-c\" \"sed -i 's/activityFilePath: ./activityFilePath: \\\\/opt\\\\/dvm\\\\/log\\\\//' /opt/dvm/config.example.yml\")") install(CODE "execute_process(COMMAND bash \"-c\" \"sed -i 's/file: iden_table.dat/file: \\\\/opt\\\\/dvm\\\\/iden_table.dat/' /opt/dvm/config.example.yml\")") install(CODE "execute_process(COMMAND bash \"-c\" \"sed -i 's/file: rid_acl.dat/file: \\\\/opt\\\\/dvm\\\\/rid_acl.dat/' /opt/dvm/config.example.yml\")") install(CODE "execute_process(COMMAND bash \"-c\" \"sed -i 's/file: tg_acl.dat/file: \\\\/opt\\\\/dvm\\\\/tg_acl.dat/' /opt/dvm/config.example.yml\")") + +# custom target to generate a tarball +add_custom_target(tarball + COMMAND rm -rf ${CMAKE_INSTALL_PREFIX_TARBALL} + COMMAND mkdir -p ${CMAKE_INSTALL_PREFIX_TARBALL}/dvm/bin + COMMAND mkdir -p ${CMAKE_INSTALL_PREFIX_TARBALL}/dvm/log + COMMAND touch ${CMAKE_INSTALL_PREFIX_TARBALL}/dvm/log/INCLUDE_DRIECTORY + COMMAND cp -v dvmhost ${CMAKE_INSTALL_PREFIX_TARBALL}/dvm/bin + COMMAND cp -v dvmcmd ${CMAKE_INSTALL_PREFIX_TARBALL}/dvm/bin + COMMAND cp ../*.sh ${CMAKE_INSTALL_PREFIX_TARBALL}/dvm + COMMAND chmod +x ${CMAKE_INSTALL_PREFIX_TARBALL}/dvm/*.sh + COMMAND cp -v ../config*.yml ${CMAKE_INSTALL_PREFIX_TARBALL}/dvm + COMMAND cp -v ../*.dat ${CMAKE_INSTALL_PREFIX_TARBALL}/dvm + COMMAND cd ${CMAKE_INSTALL_PREFIX_TARBALL} && tar czvf ../dvmhost_1.0.0_${ARCH}.tar.gz * + COMMAND rm -rf ${CMAKE_INSTALL_PREFIX_TARBALL}) diff --git a/debian/changelog b/debian/changelog deleted file mode 100644 index 6381a503..00000000 --- a/debian/changelog +++ /dev/null @@ -1,5 +0,0 @@ -dvmhost (1.0.0-1) UNRELEASED; urgency=medium - - * Initial release. - - -- MAINTAINER Fri, 11 May 2018 09:13:00 -0400 diff --git a/debian/compat b/debian/compat deleted file mode 100644 index f599e28b..00000000 --- a/debian/compat +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/debian/control b/debian/control deleted file mode 100644 index 74f1faed..00000000 --- a/debian/control +++ /dev/null @@ -1,11 +0,0 @@ -Source: dvmhost -Maintainer: Bryan Biedenkapp -Section: misc -Priority: optional -Standards-Version: 3.9.2 -Build-Depends: debhelper (>= 9) - -Package: dvmhost -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: Digital Voice Modem Host diff --git a/debian/copyright b/debian/copyright deleted file mode 100644 index 13765c04..00000000 --- a/debian/copyright +++ /dev/null @@ -1 +0,0 @@ -DVMProject Developers diff --git a/debian/rules b/debian/rules deleted file mode 100755 index 53acd5a3..00000000 --- a/debian/rules +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/make -f -install_root = /opt -build_root = $$(pwd)/debian/dvmhost - -%: - dh $@ --with=systemd - -override_dh_installinit: - dh_systemd_enable -pdvmhost --name=dvmhost linux/dvmhost.service - dh_installinit -pdvmhost --no-start --noscripts - dh_systemd_start -pdvmhost --no-restart-on-upgrade - -override_dh_systemd_start: - echo "Not running dh_systemd_start" - -override_dh_auto_install: - dh_auto_install - mkdir -p $(build_root)/opt/dvm || true - mkdir -p $(build_root)/opt/dvm/bin || true - mkdir -p $(build_root)/opt/dvm/log || true - cp -Rv $(install_root)/dvm $(build_root)/opt - diff --git a/debian/source/format b/debian/source/format deleted file mode 100644 index 163aaf8d..00000000 --- a/debian/source/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (quilt) diff --git a/debian/source/options b/debian/source/options deleted file mode 100644 index 774e5604..00000000 --- a/debian/source/options +++ /dev/null @@ -1,4 +0,0 @@ -tar-ignore = ".vscode" -tar-ignore = ".git" -tar-ignore = ".gitignore" -tar-ignore = ".gitattributes"