From 7a95dd035ee5ea7f0d73d68c113a5dd728c4fec7 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 26 Feb 2020 18:12:35 +0100 Subject: [PATCH] remove scripts/generate_deb.sh.in and implement in CMakeModules/package.cmake instead. --- CMakeModules/package.cmake | 31 +++++++++++++++++--- debian_control.in | 9 ++++++ scripts/generate_deb.sh.in | 58 -------------------------------------- 3 files changed, 36 insertions(+), 62 deletions(-) create mode 100644 debian_control.in delete mode 100644 scripts/generate_deb.sh.in diff --git a/CMakeModules/package.cmake b/CMakeModules/package.cmake index 4120c52..f2de17d 100644 --- a/CMakeModules/package.cmake +++ b/CMakeModules/package.cmake @@ -18,11 +18,34 @@ endif() # -------------------------------- if (UNIX) # Only include in bash environments. - # Hack to set the right permissions :) - configure_file(scripts/generate_deb.sh.in ${PROJECT_BINARY_DIR}/tmp/generate_deb.sh @ONLY) - file(COPY ${PROJECT_BINARY_DIR}/tmp/generate_deb.sh DESTINATION ${PROJECT_BINARY_DIR} - FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE + + execute_process( + COMMAND lsb_release -rs + OUTPUT_VARIABLE UBUNTU_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE ) + + # Debian uses different names for 32 and 64 bit. + if (PACKAGE_PLATFORM EQUAL "x86") + set( PACKAGE_DEB_PLATFORM "i386" ) + else() + set( PACKAGE_DEB_PLATFORM "amd64" ) + endif() + + set( PACKAGE_DEB_RELEASE 1 CACHE STRING "Debian package release number") + set( PACKAGE_DEB_VERSION ${PACKAGE_VERSION}-${PACKAGE_DEB_RELEASE} ) + set( PACKAGE_DEB_FILENAME ${PACKAGE_NAME}_${PACKAGE_DEB_VERSION}-ubuntu-${UBUNTU_VERSION}_${PACKAGE_DEB_PLATFORM}.deb ) + set( DEB_ROOT "debroot" ) + + configure_file(debian_control.in ${DEB_ROOT}/DEBIAN/control @ONLY) + + add_custom_target(package_deb + COMMAND ${CMAKE_COMMAND} --install . --prefix "${DEB_ROOT}${CMAKE_INSTALL_PREFIX}" + COMMAND fakeroot dpkg-deb --build ${DEB_ROOT} ${PACKAGE_DEB_FILENAME} > /dev/null + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + ) + + add_dependencies(package_deb ${PROGRAM_EXE}) endif (UNIX) # -------------------------------- diff --git a/debian_control.in b/debian_control.in new file mode 100644 index 0000000..e8f3f23 --- /dev/null +++ b/debian_control.in @@ -0,0 +1,9 @@ +Package: @PACKAGE_NAME@ +Version: @PACKAGE_DEB_VERSION@ +Description: @PACKAGE_DESCRIPTION@ +Section: misc +Priority: optional +Architecture: @PACKAGE_DEB_PLATFORM@ +Homepage: @PACKAGE_HOMEPAGE_URL@ +Maintainer: @PACKAGE_MAINTAINER@ +Depends: libssl1.1, libc6 diff --git a/scripts/generate_deb.sh.in b/scripts/generate_deb.sh.in deleted file mode 100644 index c124b72..0000000 --- a/scripts/generate_deb.sh.in +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env bash - -BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" - -PACKAGE_NAME="@PACKAGE_NAME@" -PACKAGE_VERSION="@PACKAGE_VERSION@" -PACKAGE_PREFIX=$(echo "@CMAKE_INSTALL_PREFIX@" | sed -E 's~^/~~') -PACKAGE_BINDIR="@CMAKE_INSTALL_BINDIR@" -PACKAGE_SHAREDIR="@CMAKE_INSTALL_DATADIR@/@CMAKE_PROJECT_NAME@" -PACKAGE_MANDIR="@CMAKE_INSTALL_MANDIR@" -PACKAGE_TMPDIR="tmp/debroot" - -if [[ -f /etc/upstream-release/lsb-release ]]; then - source /etc/upstream-release/lsb-release -elif [[ -f /etc/lsb-release ]]; then - source /etc/lsb-release -else - echo "ERROR: could not determine debian release." - exit 1 -fi - -DISTRIB_ID=$(echo $DISTRIB_ID | tr '[:upper:]' '[:lower:]') - -# Default to 1 if no release is set. -if [[ -z $RELEASE ]]; then - RELEASE="1" -fi - -PACKAGE_FULLNAME="${PACKAGE_NAME}_${PACKAGE_VERSION}-${RELEASE}-${DISTRIB_ID}-${DISTRIB_RELEASE}_amd64" - -rm -fr ${BASE_DIR}/${PACKAGE_TMPDIR} - -# Create debian files. -mkdir -p ${BASE_DIR}/${PACKAGE_TMPDIR}/DEBIAN -echo "Package: ${PACKAGE_NAME} -Version: ${PACKAGE_VERSION}-${RELEASE} -Section: misc -Priority: optional -Architecture: amd64 -Homepage: @PACKAGE_HOMEPAGE_URL@ -Maintainer: @PACKAGE_MAINTAINER@ -Description: @PACKAGE_DESCRIPTION@ -Depends: libssl1.1, libc6" &> ${BASE_DIR}/${PACKAGE_TMPDIR}/DEBIAN/control - -cat ${BASE_DIR}/${PACKAGE_TMPDIR}/DEBIAN/control - -mkdir -p ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_BINDIR} -mkdir -p ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_SHAREDIR} -mkdir -p ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_MANDIR} - -cp ${BASE_DIR}/${PACKAGE_NAME} ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_BINDIR}/${PACKAGE_NAME} -cp -r ${BASE_DIR}/man1 ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_MANDIR} - -for file in README.md LICENSE LICENSE.bitcoin ; do - cp ${BASE_DIR}/../${file} ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_SHAREDIR} -done - -fakeroot dpkg-deb --build ${BASE_DIR}/${PACKAGE_TMPDIR} ${BASE_DIR}/${PACKAGE_FULLNAME}.deb