diff options
author | Jan Holthuis <jan.holthuis@ruhr-uni-bochum.de> | 2020-12-12 03:13:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-12 03:13:11 +0100 |
commit | 1505f63763a8c7b349d589644f16fc425b2469ad (patch) | |
tree | fe0376002c3b0de629185757ddb66807ac94df53 | |
parent | 18f698dffece85b0897c62f65020704ef2c2aeef (diff) | |
parent | 8a6e2b23d63eaf8de6e2061aa920b60bea34841d (diff) |
Merge pull request #3426 from daschuer/debian_ppa
CPack Debian PPA Build
28 files changed, 356 insertions, 261 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3e996b06ee..285a046092 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -250,6 +250,11 @@ jobs: run: cpack -G ${{ matrix.cpack_generator }} -V working-directory: cmake_build + - name: "Package for PPA" + if: startsWith(matrix.os, 'ubuntu') + run: cpack -G External -D DEB_SOURCEPKG=ON + working-directory: cmake_build + - name: "[macOS] Sign Package" if: runner.os == 'macOS' && env.MACOS_CODESIGN_OPENSSL_PASSWORD != null && env.MACOS_CODESIGN_CERTIFICATE_PASSWORD != null run: codesign --verbose=4 --options runtime --sign "${APPLE_CODESIGN_IDENTITY}" --entitlements ../build/osx/entitlements.plist *.dmg diff --git a/CHANGELOG.md b/CHANGELOG.md index 1719040e55..234b037d59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -128,8 +128,6 @@ ## [2.2.2](https://launchpad.net/mixxx/+milestone/2.2.2) (2019-08-10) -==== 2.2.2 2019-08-10 ==== - * Fix battery widget with upower <= 0.99.7. #2221 * Fix BPM adjust in BpmControl. lp:1836480 * Disable track metadata export for .ogg files and TagLib 1.11.1. lp:1833190 diff --git a/CMakeLists.txt b/CMakeLists.txt index 47e08aa713..c80d1386d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1204,13 +1204,26 @@ install( "*.qm" ) + # Font files -install( - DIRECTORY - "${CMAKE_CURRENT_SOURCE_DIR}/res/fonts" - DESTINATION - "${MIXXX_INSTALL_DATADIR}" -) +if(UNIX AND NOT APPLE) + # Ubuntu and OpenSans are already installed by package manager + install( + DIRECTORY + "${CMAKE_CURRENT_SOURCE_DIR}/res/fonts" + DESTINATION + "${MIXXX_INSTALL_DATADIR}" + PATTERN "OpenSans*" EXCLUDE + PATTERN "Ubuntu*" EXCLUDE + ) +else() + install( + DIRECTORY + "${CMAKE_CURRENT_SOURCE_DIR}/res/fonts" + DESTINATION + "${MIXXX_INSTALL_DATADIR}" + ) +endif() # Keyboard mapping(s) install( @@ -1269,16 +1282,29 @@ if(UNIX AND NOT APPLE) FILES "${CMAKE_CURRENT_SOURCE_DIR}/res/linux/mixxx.appdata.xml" DESTINATION - "${CMAKE_INSTALL_DATADIR}/appdata" + "${CMAKE_INSTALL_DATAROOTDIR}/metainfo" ) - # udev rule file for USB HID and Bulk controllers - install( - FILES - "${CMAKE_CURRENT_SOURCE_DIR}/res/linux/mixxx-usb-uaccess.rules" - DESTINATION - "${CMAKE_INSTALL_SYSCONFDIR}/udev/rules.d" - ) + option(INSTALL_USER_UDEV_RULES "Install user udev rule file for USB HID and Bulk controllers" ON) + if (INSTALL_USER_UDEV_RULES) + install( + FILES + "${CMAKE_CURRENT_SOURCE_DIR}/res/linux/mixxx-usb-uaccess.rules" + DESTINATION + "${CMAKE_INSTALL_SYSCONFDIR}/udev/rules.d" + ) + message(WARNING + " The udev rule file for USB HID and Bulk controller permissions will\n" + " be installed to: ${CMAKE_INSTALL_SYSCONFDIR}/udev/rules.d.\n" + " If you are installing Mixxx from source for your own use, copy\n" + " mixxx-usb-uaccess.rules to /etc/udev/rules.d/ and run:\n" + " udevadm control --reload-rules && udevadm trigger\n" + " as root to load the rules.\n" + " If you are building a package for a distribution, the correct\n" + " directory for system rules is /lib/udev/rules.d with an appropriate\n" + " priority prefix. Adjust your package script accordingly and set\n" + " -DINSTALL_USER_UDEV_RULES=OFF") + endif() endif() # @@ -1487,13 +1513,15 @@ else() endif() add_dependencies(mixxx-lib mixxx-res mixxx-script) +file(READ src/_version.h MIXXX_VERSION_FILECONTENT) +string(REGEX REPLACE "^.*#define MIXXX_VERSION \"(.*)\".*$" "\\1" MIXXX_VERSION "${MIXXX_VERSION_FILECONTENT}") +# a dummy configure to force a reconfigure when the version changes +configure_file(src/_version.h src/_version.h) + # Windows-only resource file if(WIN32) string(TIMESTAMP MIXXX_YEAR "%Y") - file(READ src/_version.h MIXXX_VERSION_FILECONTENT) - string(REGEX REPLACE "^.*#define MIXXX_VERSION \"(.*)\".*$" "\\1" MIXXX_VERSION "${MIXXX_VERSION_FILECONTENT}") - # Remove anything after ~ or - in the version number and replace the dots with commas string(REGEX REPLACE "^([^~-]+).*$" "\\1" MIXXX_FILEVERSION "${MIXXX_VERSION}") string(REPLACE "." "," MIXXX_FILEVERSION "${MIXXX_FILEVERSION}") @@ -2508,7 +2536,8 @@ endif() # Packaging set(CPACK_PACKAGE_VENDOR "Mixxx Project") set(CPACK_PACKAGE_CONTACT "RJ Skerry-Ryan <rryan@mixxx.org>") -set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cpack_package_description.txt") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Digital DJ Application") +set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/CPackPackageDescription.txt") set(CPACK_PACKAGE_INSTALL_DIRECTORY "Mixxx") set(CPACK_PACKAGE_EXECUTABLES "mixxx;Mixxx") set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/res/images/mixxx_install_logo.bmp") @@ -2520,12 +2549,42 @@ set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README") set(CPACK_STRIP_FILES ON) set(CPACK_CREATE_DESKTOP_LINKS "mixxx") +set(CPACK_SOURCE_IGNORE_FILES "\\\\.#;/#;.*~;\\\\.o$") +list(APPEND CPACK_SOURCE_IGNORE_FILES "/\\\\.git/") +list(APPEND CPACK_SOURCE_IGNORE_FILES "/\\\\.github/") +list(APPEND CPACK_SOURCE_IGNORE_FILES "/cache/") +list(APPEND CPACK_SOURCE_IGNORE_FILES "/.*_build/") +list(APPEND CPACK_SOURCE_IGNORE_FILES "/\\\\.sconf_temp/") +list(APPEND CPACK_SOURCE_IGNORE_FILES "${CMAKE_CURRENT_BINARY_DIR}/") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}-Source") + set(CPACK_DEBIAN_PACKAGE_SECTION "sound") set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") -set(CPACK_DEBIAN_PACKAGE_SUGGESTS "pdf-viewer") +set(CPACK_DEBIAN_PACKAGE_SUGGESTS "pdf-viewer, pulseaudio-utils") set(CPACK_DEBIAN_PACKAGE_REPLACES "mixxx-data") -set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5opengl5, libqt5svg5, libqt5xml5, libqt5sql5, libqt5sql5-sqlite") +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}") +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") +string(REPLACE "\n\n" "\n.\n" CPACK_DEBIAN_PACKAGE_DESCRIPTION_MERGED "${CPACK_DEBIAN_PACKAGE_DESCRIPTION_MERGED}") +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_PACKAGE_DESCRIPTION "${CPACK_DEBIAN_PACKAGE_DESCRIPTION_MERGED}") +endif() + +# The upstream version must not contain hyphen +string(REPLACE "-" "~" CPACK_DEBIAN_UPSTREAM_VERSION "${MIXXX_VERSION}") +set(CPACK_DEBIAN_DEBIAN_VERSION 0ubuntu1) +set(CPACK_DEBIAN_DEBIAN_VERSION_EXTRA "${GIT_BRANCH}~git${GIT_COMMIT_COUNT}") +string(REPLACE "_" "" CPACK_DEBIAN_DEBIAN_VERSION_EXTRA "${CPACK_DEBIAN_DEBIAN_VERSION_EXTRA}") +set(CPACK_DEBIAN_PACKAGE_VERSION "${CPACK_DEBIAN_UPSTREAM_VERSION}-ppa1~${GIT_BRANCH}~git${GIT_COMMIT_COUNT}~bionic") +set(CPACK_DEBIAN_DISTRIBUTION_RELEASES bionic focal groovy) +set(CPACK_DEBIAN_SOURCE_DIR ${CMAKE_SOURCE_DIR}) +set(CPACK_DEBIAN_UPLOAD_PPA_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/packaging/CPackDebUploadPPA.cmake") + set(CPACK_WIX_UPGRADE_GUID "921DC99C-4DCF-478D-B950-50685CB9E6BE") set(CPACK_WIX_LICENSE_RTF "${CMAKE_CURRENT_SOURCE_DIR}/build/wix/LICENSE.rtf") @@ -2534,6 +2593,8 @@ set(CPACK_WIX_PROPERTY_ARPHELPLINK "${CPACK_PACKAGE_HOMEPAGE_URL}") set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/build/wix/images/banner.bmp") set(CPACK_WIX_UI_DIALOG "${CMAKE_CURRENT_SOURCE_DIR}/build/wix/images/dialog.bmp") +set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_SOURCE_DIR}/packaging/CPackConfig.cmake" ) + include(CPack) if(APPLE AND MACOS_BUNDLE) diff --git a/build/debian/compat b/build/debian/compat deleted file mode 100644 index ec635144f6..0000000000 --- a/build/debian/compat +++ /dev/null @@ -1 +0,0 @@ -9 diff --git a/build/debian/control b/build/debian/control deleted file mode 100644 index 2189d935f7..0000000000 --- a/build/debian/control +++ /dev/null @@ -1,127 +0,0 @@ -Source: mixxx -Section: sound -Priority: optional -Maintainer: RJ Skerry-Ryan <rryan@mixxx.org> -Build-Depends: debhelper (>= 9), - pkg-config, - docbook-to-man, - libglu1-mesa-dev, -# qt5-default depends on qtbase5-dev, which includes headers for -# QtConcurrent -# QtCore -# QtGui -# QtNetwork -# QtPlatformHeaders -# QtPrintSupport -# QtSql -# QtWidgets -# QtXml - qt5-default (>= 5.5.0), -# We additionally need headers for QtOpenGL, QtScript, and QtSvg. - qtscript5-dev, - libqt5opengl5-dev, - libqt5svg5-dev, -# Only needed for running tests that use SQLite. - libqt5sql5-sqlite, - libqt5x11extras5-dev, - scons, - libjack-dev, - portaudio19-dev, - libid3tag0-dev, - libmad0-dev, - libogg-dev, - libsndfile1-dev, - libasound2-dev, - libvorbis-dev, - libfaad-dev, - libportmidi-dev, - libtag1-dev, - libshout-dev, - libssl-dev, - libprotobuf-dev, - protobuf-compiler, - libusb-1.0-0-dev, - libchromaprint-dev, - librubberband-dev, - libopusfile-dev, - libsqlite3-dev, - libsoundtouch-dev, - libhidapi-dev, - libupower-glib-dev, - liblilv-dev, - libmodplug-dev, - libmp3lame-dev, - libebur128-dev, -# for running mixxx-test - xvfb -Standards-Version: 3.9.8 -Homepage: http://www.mixxx.org/ - -Package: mixxx -Section: sound -Architecture: linux-any -Depends: ${shlibs:Depends}, - ${misc:Depends}, - libqt5opengl5, - libqt5svg5, - libqt5xml5, - libqt5sql5, - libqt5sql5-sqlite, -# for pasuspender - pulseaudio-utils -Suggests: pdf-viewer -Replaces: mixxx-data -Description: Free Digital DJ software. Start making live DJ mixes today. - Mixxx is free DJ software that gives you everything you need to perform live DJ - mixes. Blend songs together with automatic BPM matching and remix on-the-fly - with looping and hot cues. Whether you're a pro DJ or just getting started, - Mixxx has you covered. - . - Mixxx works with ALSA, JACK, OSS and supports many popular DJ controllers. - . - Features include: - - Parallel or split scratchable waveform displays - - Waveform summaries - - Spinning vinyl widgets - - MP3, OGG, WAVE, FLAC, and optional unprotected aac (m4a) playback - - Extra playback formats through plugins - - Wave and Ogg recording with optional MP3 support - - Fast, database-powered library - - Crates and playlists for organizing your music - - Reads iTunes, Traktor, and Rhythmbox libraries - - History section keeps track of your setlists - - Internet Broadcasting with Shoutcast and Icecast - - Microphone Support - - Automatic crossfading with Auto DJ - - Pitch-independent time stretch (key lock) - - Adjustable pitch range - - Ramping pitchbend controls - - ReplayGain volume normalization - - Quantized loops, hotcues, and beatloops - - Synchronization and auto-beatmatching - - BPM detection and estimation - - Bulk BPM analysis - - Adjustable EQ shelves - - Crossfader curve control - - Sampler Decks - - Vinyl emulation with Serato, Traktor, and Mixvibes timecode support - - Multichannel soundcard support (playback and capture) - - Headphone cueing with multiple soundcard support - - Skinnable interface with several skins bundled - - Support for many DJ MIDI and HID controllers out-of-the-box - - Advanced MIDI/HID scripting engine - - Multiple simultaneous MIDI/HID controllers - - Multi-core CPU support - - 24-bit/96000 Hz playback and capture - -Package: mixxx-test -Section: sound -Architecture: linux-any -Depends: ${shlibs:Depends}, - ${misc:Depends}, - libqt5opengl5, - libqt5svg5, - libqt5xml5, - libqt5sql5, - libqt5sql5-sqlite -Description: The Mixxx test suite. diff --git a/build/debian/dirs b/build/debian/dirs deleted file mode 100644 index e772481755..0000000000 --- a/build/debian/dirs +++ /dev/null @@ -1 +0,0 @@ -usr/bin diff --git a/build/debian/menu b/build/debian/menu deleted file mode 100644 index 4a63128a0e..0000000000 --- a/build/debian/menu +++ /dev/null @@ -1,7 +0,0 @@ -?package(mixxx): \ - needs="X11" \ - section="Apps/Sound" \ - title="Mixxx" \ - command="/usr/bin/pasuspender -- /usr/bin/mixxx -platform xcb" \ - icon="/usr/share/pixmaps/mixxx.xpm" \ - icon16x16="/usr/share/pixmaps/mixxx-16.xpm" diff --git a/build/debian/mixxx-test.install b/build/debian/mixxx-test.install deleted file mode 100644 index 38754b9969..0000000000 --- a/build/debian/mixxx-test.install +++ /dev/null @@ -1,2 +0,0 @@ -usr/bin/mixxx-test -usr/share/mixxx-test/test_results.xml
\ No newline at end of file diff --git a/build/debian/mixxx.desktop b/build/debian/mixxx.desktop deleted file mode 100644 index c7c96e7720..0000000000 --- a/build/debian/mixxx.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=Mixxx -GenericName=Digital DJ interface -Comment=A digital DJ interface -Exec=pasuspender -- mixxx -platform xcb -Terminal=false -Icon=mixxx_icon -Type=Application -StartupNotify=true -Categories=Qt;AudioVideo;Audio; -Keywords=music;DJ;turntable; diff --git a/build/debian/mixxx.docs b/build/debian/mixxx.docs deleted file mode 100644 index 8f2511a3d0..0000000000 --- a/build/debian/mixxx.docs +++ /dev/null @@ -1,2 +0,0 @@ -README -Mixxx-Manual.pdf diff --git a/build/debian/mixxx.install b/build/debian/mixxx.install deleted file mode 100644 index c1cd6fb9e7..0000000000 --- a/build/debian/mixxx.install +++ /dev/null @@ -1,4 +0,0 @@ -usr/bin/mixxx -usr/share/pixmaps -usr/share/applications -usr/share/mixxx diff --git a/build/debian/rules b/build/debian/rules deleted file mode 100755 index 25f157c66f..0000000000 --- a/build/debian/rules +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- - -# Documentation: https://www.debian.org/doc/debian-policy/ch-source.html#main-building-script-debian-rules - -# Build flags are passed in from the SConscript. The following line is replaced -# via exact-string matching so do not change it! -MIXXX_SCONS_FLAGS = "" - -# If ARCH is set to a different architecture when running pbuilder, pbuilder -# will be set to create an environment to build packages for the architecture -# specified in ARCH. -ifneq (,$(findstring i386,$(ARCH))) - MIXXX_SCONS_FLAGS += machine=x86 -endif -ifneq (,$(findstring amd64,$(ARCH))) - MIXXX_SCONS_FLAGS += machine=x86_64 -endif - -# parallel builds for scons -ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) - NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) - MIXXX_SCONS_FLAGS += -j$(NUMJOBS) -endif - -ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) - MIXXX_SCONS_FLAGS += test=1 -endif - -MIXXX_SCONS_FLAGS += prefix=/usr -MIXXX_SCONS_FLAGS += install_root=$(CURDIR)/debian/tmp/usr - -%: - dh $@ --parallel - -# dh_auto_configure will attempt to run cmake instead of scons -# nothing needs to be done for the configure step; scons is run in the build step below -override_dh_auto_configure: - : - -override_dh_auto_build: - scons $(MIXXX_SCONS_FLAGS) - docbook-to-man debian/mixxx.sgml > mixxx.1 - -override_dh_auto_test: -ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) - xvfb-run -- ./mixxx-test --gtest_output=xml:test_results.xml -endif - -override_dh_auto_clean: - scons $(MIXXX_SCONS_FLAGS) -c || true - rm -rf .sconf_temp/ cache/ lin*_build/ - dh_clean .sconsign.dblite cachecustom.py \ - config.log src/build.h build/*.pyc mixxx.1 lib/*/lib/*.a - dh_auto_clean - -override_dh_auto_install: - scons $(MIXXX_SCONS_FLAGS) install - mkdir $(CURDIR)/debian/tmp/usr/share/mixxx-test - cp test_results.xml $(CURDIR)/debian/tmp/usr/share/mixxx-test/ - cp mixxx-test $(CURDIR)/debian/tmp/usr/bin - find $(CURDIR)/debian/tmp \( -name COPYING -o -name Thumbs.db \ - -o -name shifter.sh -o -name '*.xsl' -o -name '*.php' \) \ - -exec rm -f {} \; - find $(CURDIR)/debian/tmp -name '*.js' -exec chmod -x {} \; - find $(CURDIR)/debian/tmp/usr/share/mixxx/ -type f -exec chmod -x {} \; - -override_dh_gencontrol: - dh_gencontrol -- $(SUBSTVARS) diff --git a/build/debian/watch b/build/debian/watch deleted file mode 100644 index fd14d48ff0..0000000000 --- a/build/debian/watch +++ /dev/null @@ -1,6 +0,0 @@ -# Example watch control file for uscan -# Rename this file to "watch" and then you can run the "uscan" command -# to check for upstream updates and more. -# Site Directory Pattern Version Script -version=2 -http://heanet.dl.sourceforge.net/sourceforge/mixxx/mixxx-(\d+\.+\d+\.+\d).tar.gz diff --git a/packaging/CPackConfig.cmake b/packaging/CPackConfig.cmake new file mode 100644 index 0000000000..99039b1f3e --- /dev/null +++ b/packaging/CPackConfig.cmake @@ -0,0 +1,16 @@ +# unlike CMakeLists.txt this file is include at cpack time, once per generator after CPack has set CPACK_GENERATOR +# to the actual generator being used. It allows per-generator setting of CPACK_* variables at cpack time. + +if (CPACK_GENERATOR STREQUAL "DEB") + set(CPACK_INSTALL_SCRIPT ${CPACK_DEBIAN_INSTALL_SCRIPT}) +endif() + +if (CPACK_GENERATOR STREQUAL "External") + if (DEB_SOURCEPKG OR DEB_UPLOAD_PPA OR DEB_BUILD) + set(CPACK_EXTERNAL_ENABLE_STAGING true) + set(CPACK_INSTALLED_DIRECTORIES "${CPACK_DEBIAN_SOURCE_DIR};/") + set(CPACK_IGNORE_FILES "${CPACK_SOURCE_IGNORE_FILES}") + set(CPACK_INSTALL_CMAKE_PROJECTS "") + set(CPACK_EXTERNAL_PACKAGE_SCRIPT "${CPACK_DEBIAN_UPLOAD_PPA_SCRIPT}" ) + endif () +endif() diff --git a/packaging/CPackDebUploadPPA.cmake b/packaging/CPackDebUploadPPA.cmake new file mode 100644 index 0000000000..106c513862 --- /dev/null +++ b/packaging/CPackDebUploadPPA.cmake @@ -0,0 +1,116 @@ +# This file is executed during cpack time. +# The command is +# cpack -G External -D DEB_UPLOAD_PPA=true + +find_program(CPACK_DEBIAN_DEBUILD debuild) +if(NOT CPACK_DEBIAN_DEBUILD) + message(FATAL_ERROR "debuild not found, required for cpack -G External -D DEB_UPLOAD_PPA=true" ) +endif() + +if(DEB_UPLOAD_PPA) + find_program(CPACK_DEBIAN_DPUT dput) + if(NOT CPACK_DEBIAN_DPUT) + message(FATAL_ERROR "dput not found, required for cpack -G External -D DEB_UPLOAD_PPA=true" ) + endif() +endif() + +find_program(CPACK_DEBIAN_DEBCHANGE debchange) +if(NOT CPACK_DEBIAN_DEBCHANGE) + message(FATAL_ERROR "debchange not found, required for cpack -G External -D DEB_UPLOAD_PPA=true" ) +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() + +# hack from sconscript +if(DEB_UPLOAD_PPA MATCHES "mixxxbetas") + string(REGEX MATCH "^.*(~git[0-9]*).*$" GITVERSION "${CPACK_DEBIAN_DEBIAN_VERSION_EXTRA}") + set(CPACK_DEBIAN_UPSTREAM_VERSION "${CPACK_DEBIAN_UPSTREAM_VERSION}${CMAKE_MATCH_1}") +endif() + +# PR branches hav no access to the pgp key. Don't sign. +find_program(CPACK_DEBIAN_GPG gpg) +if(CPACK_DEBIAN_GPG) + execute_process(COMMAND ${CPACK_DEBIAN_GPG} --fingerprint "${CPACK_PACKAGE_CONTACT}" + RESULT_VARIABLE CPACK_DEBIAN_GPG_RET) +endif() +if(NOT CPACK_DEBIAN_GPG_RET EQUAL "0") + message(WARNING "No secret key found for \"${CPACK_PACKAGE_CONTACT}\", skip signing" ) + SET(CPACK_DEBIAN_DEBUILD_NOSIGN "--no-sign") +endif() + +message(NOTICE "Creating mixxx_${CPACK_DEBIAN_UPSTREAM_VERSION}.orig.tar.gz") +execute_process( + COMMAND tar -czf "mixxx_${CPACK_DEBIAN_UPSTREAM_VERSION}.orig.tar.gz" ${CPACK_PACKAGE_FILE_NAME} + WORKING_DIRECTORY ${CPACK_TOPLEVEL_DIRECTORY} +) + +message( NOTICE "Creating debian folder" ) +file(COPY ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/packaging/debian + DESTINATION ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}) + +execute_process( + COMMAND ${CPACK_DEBIAN_MARKDOWN} ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/CHANGELOG.md + OUTPUT_FILE NEWS.html + WORKING_DIRECTORY ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/debian +) + +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_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/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) + +if(DEB_BUILD) + execute_process( + COMMAND lsb_release --short --codename + OUTPUT_VARIABLE BUILD_MACHINE_RELEASE + OUTPUT_STRIP_TRAILING_WHITESPACE + ) +endif() + +foreach(RELEASE ${CPACK_DEBIAN_DISTRIBUTION_RELEASES}) + + file(COPY ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/packaging/debian/changelog + DESTINATION ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/debian) + 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}) + + if (BUILD_MACHINE_RELEASE STREQUAL RELEASE AND DEB_BUILD) + set(CPACK_DEBIAN_DEBUILD_BUILD "-b") + endif() + if (DEB_UPLOAD_PPA OR DEB_SOURCEPKG) + execute_process(COMMAND ${CPACK_DEBIAN_DEBUILD} -S -sa ${CPACK_DEBIAN_DEBUILD_NOSIGN} + WORKING_DIRECTORY ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME} + RESULT_VARIABLE CPACK_DEBIAN_DEBUILD_RET) + if(NOT CPACK_DEBIAN_DEBUILD_RET EQUAL "0") + message(FATAL_ERROR "${CPACK_DEBIAN_DEBUILD} retuned exit code ${CPACK_DEBIAN_DEBUILD_RET}") + endif() + endif() + if (BUILD_MACHINE_RELEASE STREQUAL RELEASE AND DEB_BUILD) + execute_process(COMMAND ${CPACK_DEBIAN_DEBUILD} -b ${CPACK_DEBIAN_DEBUILD_NOSIGN} + WORKING_DIRECTORY ${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}) + endif() + if(DEB_UPLOAD_PPA) + execute_process(COMMAND ${CPACK_DEBIAN_DPUT} ${DEB_UPLOAD_PPA} "mixxx_${CPACK_DEBIAN_UPSTREAM_VERSION}-${CPACK_DEBIAN_DEBIAN_VERSION}~${CPACK_DEBIAN_DEBIAN_VERSION_EXTRA}~${RELEASE}_source.changes" + WORKING_DIRECTORY ${CPACK_TOPLEVEL_DIRECTORY}) + endif() + +endforeach(RELEASE ${CPACK_DEBIAN_DISTRIBUTION_RELEASES}) + +if(DEB_SOURCEPKG OR DEB_BUILD) + file(GLOB ARTIFACTS + "${CPACK_TOPLEVEL_DIRECTORY}/mixxx_${CPACK_DEBIAN_UPSTREAM_VERSION}-${CPACK_DEBIAN_DEBIAN_VERSION}~${CPACK_DEBIAN_DEBIAN_VERSION_EXTRA}*" + "${CPACK_TOPLEVEL_DIRECTORY}/mixxx-dbgsym_${CPACK_DEBIAN_UPSTREAM_VERSION}-${CPACK_DEBIAN_DEBIAN_VERSION}~${CPACK_DEBIAN_DEBIAN_VERSION_EXTRA}*") + file(COPY ${ARTIFACTS} + DESTINATION ${CPACK_PACKAGE_DIRECTORY}) +endif() diff --git a/packaging/CPackPackageDescription.txt b/packaging/CPackPackageDescription.txt new file mode 100644 index 0000000000..c6261978c8 --- /dev/null +++ b/packaging/CPackPackageDescription.txt @@ -0,0 +1,7 @@ +Mixxx is a digital DJ system, where Wave, Ogg, FLAC and MP3 files can be +mixed on a computer for use in live performances. Filters, crossfader, and +speed control are provided. Mixxx can sync the 4 decks automatically, using +an algorithm to detect the beat. + +Mixxx works with ALSA or Jack, can be controlled from the GUI or from external +controllers, including MIDI devices and joysticks, and supports skins. diff --git a/build/debian/changelog b/packaging/debian/changelog index fbfc06ea56..bb7cf5e2ce 100644 --- a/build/debian/changelog +++ b/packaging/debian/changelog @@ -18,16 +18,16 @@ mixxx (2.2.2-0ubuntu1) bionic; urgency=medium mixxx (2.2.1-0ubuntu1) bionic; urgency=medium - * Bugfix release + * Bugfix release -- Daniel Schürmann <daschuer@mixxx.org> Thu, 22 Apr 2019 23:05:28 +0100 mixxx (2.2.0-0ubuntu1) bionic; urgency=medium - * Bugfix release + * Bugfix release + + -- Daniel Schürmann <daschuer@mixxx.org> Fri, 11 Jan 2019 23:26:08 +0100 - -- Daniel Schürmann <daschuer@mixxx.org> Fr, 11 Jan 2019 23:26:08 +0100 - mixxx (2.1.8-0ubuntu1) bionic; urgency=medium * New upstream release @@ -36,7 +36,7 @@ mixxx (2.1.8-0ubuntu1) bionic; urgency=medium mixxx (2.1.7-0ubuntu1) bionic; urgency=medium - * New upstream release + * New upstream release -- Daniel Schürmann <daschuer@mixxx.org> Mon, 14 Jan 2019 00:08:23 +0100 diff --git a/packaging/debian/compat b/packaging/debian/compat new file mode 100644 index 0000000000..b4de394767 --- /dev/null +++ b/packaging/debian/compat @@ -0,0 +1 @@ +11 diff --git a/packaging/debian/control.in b/packaging/debian/control.in new file mode 100644 index 0000000000..431fe67772 --- /dev/null +++ b/packaging/debian/control.in @@ -0,0 +1,71 @@ +Source: mixxx +Section: @CPACK_DEBIAN_PACKAGE_SECTION@ +Priority: @CPACK_DEBIAN_PACKAGE_PRIORITY@ +Maintainer: @CPACK_PACKAGE_CONTACT@ +Build-Depends: debhelper (>= 11), + pkg-config, + docbook-to-man, + markdown, + libglu1-mesa-dev, +# qt5-default depends on qtbase5-dev, which includes headers for +# QtConcurrent +# QtCore +# QtGui +# QtNetwork +# QtPlatformHeaders +# QtPrintSupport +# QtSql +# QtWidgets +# QtXml + qt5-default, + qt5keychain-dev, +# We additionally need headers for QtOpenGL, QtScript, and QtSvg. + qtscript5-dev, + libqt5opengl5-dev, + libqt5svg5-dev, +# Only needed for running tests that use SQLite. + libqt5sql5-sqlite, + libqt5x11extras5-dev, + cmake, + libjack-dev, + portaudio19-dev, + libid3tag0-dev, + libmad0-dev, + libogg-dev, + libsndfile1-dev, + libasound2-dev, + libvorbis-dev, + libfaad-dev, + libportmidi-dev, + libtag1-dev, + libshout-dev, + libssl-dev, + libprotobuf-dev, + protobuf-compiler, + libusb-1.0-0-dev, + libchromaprint-dev, + librubberband-dev, + libopusfile-dev, + libsqlite3-dev, + libsoundtouch-dev, + libhidapi-dev, + libupower-glib-dev, + liblilv-dev, + libmodplug-dev, + libmp3lame-dev, + libebur128-dev, +# for running mixxx-test + xvfb +Rules-Requires-Root: no +Standards-Version: 4.1.4 +Homepage: @CPACK_DEBIAN_PACKAGE_HOMEPAGE@ +Vcs-Browser: https://github.com/mixxxdj/mixxx +Vcs-Git: https://github.com/mixxxdj/mixxx.git + +Package: mixxx +Section: @CPACK_DEBIAN_PACKAGE_SECTION@ +Architecture: linux-any +Depends: ${shlibs:Depends}, ${misc:Depends}, @CPACK_DEBIAN_PACKAGE_DEPENDS@ +Suggests: @CPACK_DEBIAN_PACKAGE_SUGGESTS@ +Replaces: mixxx-data +Description: @CPACK_DEBIAN_PACKAGE_DESCRIPTION_MERGED@ diff --git a/build/debian/copyright b/packaging/debian/copyright index 4a958894e3..4a958894e3 100644 --- a/build/debian/copyright +++ b/packaging/debian/copyright diff --git a/packaging/debian/mixxx.docs b/packaging/debian/mixxx.docs new file mode 100644 index 0000000000..e1a738961a --- /dev/null +++ b/packaging/debian/mixxx.docs @@ -0,0 +1 @@ +debian/NEWS.html diff --git a/build/debian/mixxx.sgml b/packaging/debian/mixxx.sgml index b748fd9447..9277b5cb23 100644 --- a/build/debian/mixxx.sgml +++ b/packaging/debian/mixxx.sgml @@ -432,5 +432,3 @@ sgml-local-catalogs:nil sgml-local-ecat-files:nil End: --> - - diff --git a/packaging/debian/rules b/packaging/debian/rules new file mode 100755 index 0000000000..fc060e6deb --- /dev/null +++ b/packaging/debian/rules @@ -0,0 +1,18 @@ +#!/usr/bin/make -f + +# Documentation: https://www.debian.org/doc/debian-policy/ch-source.html#main-building-script-debian-rules + + +override_dh_auto_configure: + dh_auto_configure -- -DCMAKE_BUILD_TYPE=RelWithDebInfo -DINSTALL_USER_UDEV_RULES=OFF + |