diff options
author | Be <be@mixxx.org> | 2021-02-22 14:08:25 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-22 14:08:25 -0800 |
commit | ca045daa88ae0688e4b3066318828ea3efc07352 (patch) | |
tree | f297ff210ab33eb72bc3b60e6a7a57039ad6ca31 | |
parent | 6cc7e3198a871fa3a502ac51e2e79fbcfd0db316 (diff) | |
parent | 725529430142a2316e77fb893a2f9cbed3a97a70 (diff) |
Merge pull request #3571 from daschuer/CPackDebInstall
Make the CPack DEB packet and the PPA build equal using
-rw-r--r-- | .github/workflows/build.yml | 2 | ||||
-rw-r--r-- | CMakeLists.txt | 4 | ||||
-rw-r--r-- | packaging/CPackDebInstall.cmake | 79 |
3 files changed, 84 insertions, 1 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cf71fd9b90..943ddfb49c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,6 +19,7 @@ jobs: -DMAD=ON -DMODPLUG=ON -DWAVPACK=ON + -INSTALL_USER_UDEV_RULES=OFF cmake_generator: Unix Makefiles cmake_build_type: RelWithDebInfo ctest_args: @@ -40,6 +41,7 @@ jobs: -DMAD=ON -DMODPLUG=ON -DWAVPACK=ON + -INSTALL_USER_UDEV_RULES=OFF cmake_generator: Unix Makefiles cmake_build_type: RelWithDebInfo ctest_args: diff --git a/CMakeLists.txt b/CMakeLists.txt index 365d4687fd..b50868c855 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2608,6 +2608,7 @@ set(CPACK_DEBIAN_PACKAGE_REPLACES "mixxx-data") set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5sql5-sqlite, fonts-open-sans, fonts-ubuntu") set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "${CPACK_PACKAGE_HOMEPAGE_URL}") +set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION TRUE) file(READ ${CPACK_PACKAGE_DESCRIPTION_FILE} CPACK_DEBIAN_PACKAGE_DESCRIPTION) set(CPACK_DEBIAN_PACKAGE_DESCRIPTION_MERGED "${CPACK_DEBIAN_PACKAGE_DESCRIPTION}") string(PREPEND CPACK_DEBIAN_PACKAGE_DESCRIPTION_MERGED "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}" "\n") @@ -2615,6 +2616,7 @@ string(REPLACE "\n\n" "\n.\n" CPACK_DEBIAN_PACKAGE_DESCRIPTION_MERGED "${CPACK_D string(REPLACE "\n" "\n " CPACK_DEBIAN_PACKAGE_DESCRIPTION_MERGED "${CPACK_DEBIAN_PACKAGE_DESCRIPTION_MERGED}") if("3.16.0" VERSION_GREATER CMAKE_VERSION) # This hack is no longer required with cpack version 3.16.3 + set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "${CPACK_DEBIAN_PACKAGE_DESCRIPTION_MERGED}") set(CPACK_PACKAGE_DESCRIPTION "${CPACK_DEBIAN_PACKAGE_DESCRIPTION_MERGED}") endif() @@ -2627,7 +2629,7 @@ set(CPACK_DEBIAN_PACKAGE_VERSION "${CPACK_DEBIAN_UPSTREAM_VERSION}-ppa1~${GIT_BR set(CPACK_DEBIAN_DISTRIBUTION_RELEASES bionic focal groovy hirsute) set(CPACK_DEBIAN_SOURCE_DIR ${CMAKE_SOURCE_DIR}) set(CPACK_DEBIAN_UPLOAD_PPA_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/packaging/CPackDebUploadPPA.cmake") - +set(CPACK_DEBIAN_INSTALL_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/packaging/CPackDebInstall.cmake") set(CPACK_WIX_UPGRADE_GUID "921DC99C-4DCF-478D-B950-50685CB9E6BE") set(CPACK_WIX_LICENSE_RTF "${CMAKE_CURRENT_SOURCE_DIR}/packaging/wix/LICENSE.rtf") diff --git a/packaging/CPackDebInstall.cmake b/packaging/CPackDebInstall.cmake new file mode 100644 index 0000000000..85fc30b042 --- /dev/null +++ b/packaging/CPackDebInstall.cmake @@ -0,0 +1,79 @@ +# This file is executed during cpack time. +# The command is +# cpack -G DEB + +find_program( CPACK_DEBIAN_DEBHELPER dh_prep ) +if( NOT CPACK_DEBIAN_DEBHELPER ) + message( FATAL_ERROR "debhelper not found, required for cpack -G DEB" ) +endif() + +find_program( CPACK_DEBIAN_MARKDOWN markdown ) +if( NOT CPACK_DEBIAN_MARKDOWN ) + message( FATAL_ERROR "markdown not found, required for cpack -G External -D DEB_UPLOAD_PPA=true" ) +endif() + +find_program( CPACK_DEBIAN_DOCBOOK_TO_MAN docbook-to-man ) +if( NOT CPACK_DEBIAN_DOCBOOK_TO_MAN ) + message( FATAL_ERROR "docbook-to-man not found, required for cpack -G DEB" ) +endif() + +message( NOTICE "Creating debian folder" ) +file(COPY ${CPACK_DEBIAN_SOURCE_DIR}/packaging/debian + DESTINATION ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}) +configure_file(${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/debian/control.in + ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/debian/control + @ONLY) +file(REMOVE ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/debian/control.in) + +file(COPY ${CPACK_DEBIAN_SOURCE_DIR}/res/linux/mixxx-usb-uaccess.rules + DESTINATION ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/debian) +file(RENAME + ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/debian/mixxx-usb-uaccess.rules + ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/debian/mixxx.mixxx-usb-uaccess.udev) + +execute_process( + COMMAND ${CPACK_DEBIAN_DOCBOOK_TO_MAN} debian/mixxx.sgml + OUTPUT_FILE mixxx.1 + WORKING_DIRECTORY ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME} +) + +execute_process( + COMMAND ${CPACK_DEBIAN_MARKDOWN} ${CPACK_DEBIAN_SOURCE_DIR}/CHANGELOG.md + OUTPUT_FILE NEWS.html + WORKING_DIRECTORY ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/debian +) + +if(DEB_BUILD) + execute_process( + COMMAND lsb_release --short --codename + OUTPUT_VARIABLE BUILD_MACHINE_RELEASE + OUTPUT_STRIP_TRAILING_WHITESPACE + ) +endif() + +execute_process(COMMAND ${CPACK_DEBIAN_DEBCHANGE} -v "${CPACK_DEBIAN_UPSTREAM_VERSION}-${CPACK_DEBIAN_DEBIAN_VERSION}~${CPACK_DEBIAN_DEBIAN_VERSION_EXTRA}~${RELEASE}" -M "Build of ${CPACK_DEBIAN_UPSTREAM_VERSION}" + WORKING_DIRECTORY ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}) +execute_process(COMMAND ${CPACK_DEBIAN_DEBCHANGE} -r -D ${RELEASE} -M "Build of ${CPACK_DEBIAN_UPSTREAM_VERSION}" + WORKING_DIRECTORY ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}) + +function(run_dh DH_COMMAND) + execute_process(COMMAND ${DH_COMMAND} ${ARGV1} ${ARGV2} -P. + WORKING_DIRECTORY ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME} + RESULT_VARIABLE CPACK_DEBIAN_DH_RET) + if(NOT CPACK_DEBIAN_DH_RET EQUAL "0") + message(FATAL_ERROR "${DH_COMMAND} retuned exit code ${CPACK_DEBIAN_DH_RET}") + endif() +endfunction() + +# We don't need root, normally read as Rules-Requires-Root from debian/control +set(ENV{DEB_RULES_REQUIRES_ROOT} no) + +run_dh(dh_testdir) +run_dh(dh_testroot) +run_dh(dh_installdocs) +run_dh(dh_installchangelogs) +run_dh(dh_installman) +run_dh(dh_installudev --name=mixxx-usb-uaccess --priority=69) + +file (REMOVE_RECURSE ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/debian) +file (REMOVE ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/mixxx.1) |