From a35eeac0a05ae20ddd8c4c632796b728fd21164a Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Wed, 8 Jun 2022 22:16:24 -0400 Subject: [PATCH 1/2] pack separate base & dev .deb packages --- package.cmake | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/package.cmake b/package.cmake index 07cdf24907..c9e4e85f59 100644 --- a/package.cmake +++ b/package.cmake @@ -25,15 +25,40 @@ string(APPEND CPACK_PACKAGE_FILE_NAME "-${CMAKE_SYSTEM_PROCESSOR}") set(CPACK_PACKAGE_CONTACT "EOS Network Foundation") set(CPACK_PACKAGE_VENDOR "EOS Network Foundation") -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "daemon and CLI tools for Mandel blockchain protocol") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Mandel blockchain protocol") +set(CPACK_COMPONENT_BASE_DESCRIPTION "daemon and CLI tools including ${NODE_EXECUTABLE_NAME}, ${CLI_CLIENT_EXECUTABLE_NAME}, and ${KEY_STORE_EXECUTABLE_NAME}") +set(CPACK_COMPONENT_DEV_DESCRIPTION "headers and libraries for native contract unit testing") set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/eosnetworkfoundation/mandel") set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) -set(CPACK_DEBIAN_PACKAGE_SECTION "utils") +set(CPACK_DEBIAN_BASE_PACKAGE_SECTION "utils") set(CPACK_DEBIAN_PACKAGE_CONFLICTS "eosio") set(CPACK_RPM_PACKAGE_CONFLICTS "eosio") +#only consider "base" and "dev" components for per-component packages +get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS) +list(REMOVE_ITEM CPACK_COMPONENTS_ALL "Unspecified") + +#enable per component packages for .deb; ensure main package is just "mandel", not "mandel-base", and make the dev package have "mandel-dev" at the front not the back +set(CPACK_DEB_COMPONENT_INSTALL ON) +set(CPACK_DEBIAN_BASE_PACKAGE_NAME "${CMAKE_PROJECT_NAME}") +set(CPACK_DEBIAN_BASE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.deb") +string(REGEX REPLACE "^(${CMAKE_PROJECT_NAME})" "\\1-dev" CPACK_DEBIAN_DEV_FILE_NAME "${CPACK_DEBIAN_BASE_FILE_NAME}") + +#deb package tooling will be unable to detect deps for the dev package. llvm is tricky since we don't know what package could have been used; try to figure it out +set(CPACK_DEBIAN_DEV_PACKAGE_DEPENDS "libboost-all-dev;libssl-dev") +find_program(DPKG_QUERY "dpkg-query") +if(DPKG_QUERY AND OS_RELEASE MATCHES "\n?ID=\"?ubuntu") + execute_process(COMMAND "${DPKG_QUERY}" -S "${LLVM_CMAKE_DIR}" COMMAND cut -d: -f1 RESULT_VARIABLE LLVM_PKG_FIND_RESULT OUTPUT_VARIABLE LLVM_PKG_FIND_OUTPUT) + if(LLVM_PKG_FIND_OUTPUT) + list(APPEND CPACK_DEBIAN_DEV_PACKAGE_DEPENDS "${LLVM_PKG_FIND_OUTPUT}") + endif() +endif() + +#since rpm packages aren't component based, make sure description picks up more detailed description instead of just summary +set(CPACK_RPM_PACKAGE_DESCRIPTION "${CPACK_COMPONENT_BASE_DESCRIPTION}") + #turn some knobs to try and make package paths cooperate with GNUInstallDirs a little better set(CPACK_SET_DESTDIR ON) set(CPACK_PACKAGE_RELOCATABLE OFF) From 089b0c5845bafa0b242312dc69e7da6ef2bcc61f Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Sun, 12 Jun 2022 22:24:40 -0400 Subject: [PATCH 2/2] strip llvm-dev dep in deb dev package of newlines --- package.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.cmake b/package.cmake index c9e4e85f59..47d45dcec3 100644 --- a/package.cmake +++ b/package.cmake @@ -51,7 +51,8 @@ set(CPACK_DEBIAN_DEV_PACKAGE_DEPENDS "libboost-all-dev;libssl-dev") find_program(DPKG_QUERY "dpkg-query") if(DPKG_QUERY AND OS_RELEASE MATCHES "\n?ID=\"?ubuntu") execute_process(COMMAND "${DPKG_QUERY}" -S "${LLVM_CMAKE_DIR}" COMMAND cut -d: -f1 RESULT_VARIABLE LLVM_PKG_FIND_RESULT OUTPUT_VARIABLE LLVM_PKG_FIND_OUTPUT) - if(LLVM_PKG_FIND_OUTPUT) + if(LLVM_PKG_FIND_RESULT EQUAL 0) + string(STRIP "${LLVM_PKG_FIND_OUTPUT}" LLVM_PKG_FIND_OUTPUT) list(APPEND CPACK_DEBIAN_DEV_PACKAGE_DEPENDS "${LLVM_PKG_FIND_OUTPUT}") endif() endif()