summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Holthuis <jan.holthuis@ruhr-uni-bochum.de>2020-12-12 03:13:11 +0100
committerGitHub <noreply@github.com>2020-12-12 03:13:11 +0100
commit1505f63763a8c7b349d589644f16fc425b2469ad (patch)
treefe0376002c3b0de629185757ddb66807ac94df53
parent18f698dffece85b0897c62f65020704ef2c2aeef (diff)
parent8a6e2b23d63eaf8de6e2061aa920b60bea34841d (diff)
Merge pull request #3426 from daschuer/debian_ppa
CPack Debian PPA Build
-rw-r--r--.github/workflows/build.yml5
-rw-r--r--CHANGELOG.md2
-rw-r--r--CMakeLists.txt101
-rw-r--r--build/debian/compat1
-rw-r--r--build/debian/control127
-rw-r--r--build/debian/dirs1
-rw-r--r--build/debian/menu7
-rw-r--r--build/debian/mixxx-test.install2
-rw-r--r--build/debian/mixxx.desktop12
-rw-r--r--build/debian/mixxx.docs2
-rw-r--r--build/debian/mixxx.install4
-rwxr-xr-xbuild/debian/rules69
-rw-r--r--build/debian/watch6
-rw-r--r--packaging/CPackConfig.cmake16
-rw-r--r--packaging/CPackDebUploadPPA.cmake116
-rw-r--r--packaging/CPackPackageDescription.txt7
-rw-r--r--packaging/debian/changelog (renamed from build/debian/changelog)10
-rw-r--r--packaging/debian/compat1
-rw-r--r--packaging/debian/control.in71
-rw-r--r--packaging/debian/copyright (renamed from build/debian/copyright)0
-rw-r--r--packaging/debian/mixxx.docs1
-rw-r--r--packaging/debian/mixxx.sgml (renamed from build/debian/mixxx.sgml)2
-rwxr-xr-xpackaging/debian/rules18
-rw-r--r--packaging/debian/source/format1
-rw-r--r--packaging/debian/watch3
-rw-r--r--res/linux/mixxx-usb-uaccess.rules2
-rw-r--r--res/linux/mixxx.appdata.xml20
-rwxr-xr-xtools/ubuntu_buildenv.sh10
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
+