summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBe <be@mixxx.org>2021-02-22 14:08:25 -0800
committerGitHub <noreply@github.com>2021-02-22 14:08:25 -0800
commitca045daa88ae0688e4b3066318828ea3efc07352 (patch)
treef297ff210ab33eb72bc3b60e6a7a57039ad6ca31
parent6cc7e3198a871fa3a502ac51e2e79fbcfd0db316 (diff)
parent725529430142a2316e77fb893a2f9cbed3a97a70 (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.yml2
-rw-r--r--CMakeLists.txt4
-rw-r--r--packaging/CPackDebInstall.cmake79
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)