summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media-sound/mixxx/Manifest1
-rw-r--r--media-sound/mixxx/files/mixxx-2.5.2-fix_col_headers.patch52
-rw-r--r--media-sound/mixxx/files/mixxx-2.5.2-x11_opt.patch123
-rw-r--r--media-sound/mixxx/mixxx-2.5.2.ebuild175
4 files changed, 351 insertions, 0 deletions
diff --git a/media-sound/mixxx/Manifest b/media-sound/mixxx/Manifest
index d710bf041e2a..8d34c73e7171 100644
--- a/media-sound/mixxx/Manifest
+++ b/media-sound/mixxx/Manifest
@@ -1 +1,2 @@
DIST mixxx-2.5.1.tar.gz 39957616 BLAKE2B a1541e74753ba97aa5faf0785f987619b60e061faf21500723568eb599fd72cc03b3948a1a8012dcfeb111a2e2e20256aa39dbeb15e49355830bb94aeef7d625 SHA512 14ca19b58e5f3bb2502a3a79125c2e4f149d002ff6e89bd3bad61a6bb268cfcecaaf1ee31eac3eb39bfdcdf77bae38ea6ef0ad3cdb8df9bfb842070b642b3ffc
+DIST mixxx-2.5.2.tar.gz 40033028 BLAKE2B f9ff48c45af4092ef8fcba5220d31d80b639d06b2803573b433b307d0062d6295337cde490b50ca1d9dfcab91d34ed9a6e299ffc9e84dfa39df3c15cc40006ef SHA512 3ea8faef80c5a8b28ffd1bd6384d2b60b318da6b77dc34d1a68a626e48756e235fe854cb5a7b1bbfab1f8c2b8be2489dd238c11f072b08d0fde86618ddd55c0f
diff --git a/media-sound/mixxx/files/mixxx-2.5.2-fix_col_headers.patch b/media-sound/mixxx/files/mixxx-2.5.2-fix_col_headers.patch
new file mode 100644
index 000000000000..c9298d890549
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.5.2-fix_col_headers.patch
@@ -0,0 +1,52 @@
+https://github.com/mixxxdj/mixxx/pull/14944.patch
+From d2a59762740c4adbc8bc95685504f2ce8dbe19ad Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= <daschuer@mixxx.org>
+Date: Sun, 15 Jun 2025 12:04:40 +0200
+Subject: [PATCH] Fix colum header text asignment
+
+A regression form #13782
+---
+ src/library/columncache.cpp | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/src/library/columncache.cpp b/src/library/columncache.cpp
+index eb0dd4da589..1a40363d249 100644
+--- a/src/library/columncache.cpp
++++ b/src/library/columncache.cpp
+@@ -68,8 +68,8 @@ constexpr ColumnProperties kColumnPropertiesByEnum[] = {
+ QT_TRANSLATE_NOOP("BaseTrackTableModel", "Track #"),
+ kDefaultColumnWidth},
+ DI(ColumnCache::COLUMN_LIBRARYTABLE_FILETYPE){&LIBRARYTABLE_FILETYPE,
+- nullptr,
+- 0},
++ QT_TRANSLATE_NOOP("BaseTrackTableModel", "Type"),
++ kDefaultColumnWidth},
+ DI(ColumnCache::COLUMN_LIBRARYTABLE_COMMENT){&LIBRARYTABLE_COMMENT,
+ QT_TRANSLATE_NOOP("BaseTrackTableModel", "Comment"),
+ kDefaultColumnWidth * 6},
+@@ -110,11 +110,11 @@ constexpr ColumnProperties kColumnPropertiesByEnum[] = {
+ nullptr,
+ 0},
+ DI(ColumnCache::COLUMN_LIBRARYTABLE_TIMESPLAYED){&LIBRARYTABLE_TIMESPLAYED,
+- nullptr,
+- 0},
+- DI(ColumnCache::COLUMN_LIBRARYTABLE_PLAYED){&LIBRARYTABLE_PLAYED,
+ QT_TRANSLATE_NOOP("BaseTrackTableModel", "Played"),
+ kDefaultColumnWidth * 2},
++ DI(ColumnCache::COLUMN_LIBRARYTABLE_PLAYED){&LIBRARYTABLE_PLAYED,
++ nullptr,
++ 0},
+ DI(ColumnCache::COLUMN_LIBRARYTABLE_RATING){&LIBRARYTABLE_RATING,
+ QT_TRANSLATE_NOOP("BaseTrackTableModel", "Rating"),
+ kDefaultColumnWidth * 2},
+@@ -140,8 +140,8 @@ constexpr ColumnProperties kColumnPropertiesByEnum[] = {
+ nullptr,
+ 0},
+ DI(ColumnCache::COLUMN_LIBRARYTABLE_COVERART_TYPE){&LIBRARYTABLE_COVERART_TYPE,
+- QT_TRANSLATE_NOOP("BaseTrackTableModel", "Type"),
+- kDefaultColumnWidth},
++ nullptr,
++ 0},
+ DI(ColumnCache::COLUMN_LIBRARYTABLE_COVERART_LOCATION){&LIBRARYTABLE_COVERART_LOCATION,
+ nullptr,
+ 0},
diff --git a/media-sound/mixxx/files/mixxx-2.5.2-x11_opt.patch b/media-sound/mixxx/files/mixxx-2.5.2-x11_opt.patch
new file mode 100644
index 000000000000..70894ba34460
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.5.2-x11_opt.patch
@@ -0,0 +1,123 @@
+PR merged in main branch
+https://github.com/mixxxdj/mixxx/pull/14574.patch
+https://github.com/mixxxdj/mixxx/pull/14949.patch
+From 3d974f7c0617ccd41961484f6572ec4618571c71 Mon Sep 17 00:00:00 2001
+From: Nicolas PARLANT <nicolas.parlant@parhuet.fr>
+Date: Mon, 31 Mar 2025 13:33:13 +0000
+Subject: [PATCH] X11-less - Use FindWrapOpenGL
+
+Use FindWrapOpenGL.cmake. It allows X11-less system.
+Set link_target to OpenGL::OpenGL, GLVND-based. If not found, use
+OpenGL:GL.
+
+Furthermore, adding a __X11__ definition so that the screensaver that
+requires Xlib is now optional.
+
+Signed-off-by: Nicolas PARLANT <nicolas.parlant@parhuet.fr>
+---
+ CMakeLists.txt | 10 ++++++++--
+ src/util/screensaver.cpp | 5 +++--
+ 2 files changed, 11 insertions(+), 4 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b7a48247f97a..dc54ed5fad34 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -3187,8 +3187,8 @@ else()
+ set(CMAKE_FIND_FRAMEWORK FIRST)
+ endif()
+ set(OpenGL_GL_PREFERENCE "GLVND")
+- find_package(OpenGL REQUIRED)
+ if(EMSCRIPTEN)
++ find_package(OpenGL REQUIRED)
+ # Emscripten's FindOpenGL.cmake does not create OpenGL::GL
+ target_link_libraries(mixxx-lib PRIVATE ${OPENGL_gl_LIBRARY})
+ target_compile_definitions(mixxx-lib PUBLIC QT_OPENGL_ES_2)
+@@ -3200,7 +3200,12 @@ else()
+ PUBLIC -sMIN_WEBGL_VERSION=2 -sMAX_WEBGL_VERSION=2 -sFULL_ES2=1
+ )
+ else()
+- target_link_libraries(mixxx-lib PRIVATE OpenGL::GL)
++ find_package(WrapOpenGL REQUIRED)
++ if(OPENGL_opengl_LIBRARY)
++ target_link_libraries(mixxx-lib PRIVATE OpenGL::OpenGL)
++ else()
++ target_link_libraries(mixxx-lib PRIVATE OpenGL::GL)
++ endif()
+ endif()
+ if(UNIX AND QGLES2)
+ target_compile_definitions(mixxx-lib PUBLIC QT_OPENGL_ES_2)
+@@ -3841,6 +3846,7 @@ elseif(UNIX AND NOT APPLE AND NOT EMSCRIPTEN)
+ if(${X11_FOUND})
+ target_include_directories(mixxx-lib SYSTEM PUBLIC "${X11_INCLUDE_DIR}")
+ target_link_libraries(mixxx-lib PRIVATE "${X11_LIBRARIES}")
++ target_compile_definitions(mixxx-lib PUBLIC __X11__)
+ endif()
+ find_package(Qt${QT_VERSION_MAJOR} COMPONENTS DBus REQUIRED)
+ target_link_libraries(mixxx-lib PUBLIC Qt${QT_VERSION_MAJOR}::DBus)
+diff --git a/src/util/screensaver.cpp b/src/util/screensaver.cpp
+index 9eae4a1b4cd0..88f6e880ea56 100644
+--- a/src/util/screensaver.cpp
++++ b/src/util/screensaver.cpp
+@@ -36,7 +36,8 @@ With the help of the following source codes:
+ # include <X11/extensions/scrnsaver.h>
+ #endif
+
+-#if defined(__LINUX__) || (defined(HAVE_XSCREENSAVER_SUSPEND) && HAVE_XSCREENSAVER_SUSPEND)
++#if (defined(__LINUX__) && defined(__X11__)) || \
++ (defined(HAVE_XSCREENSAVER_SUSPEND) && HAVE_XSCREENSAVER_SUSPEND)
+ # define None XNone
+ # define Window XWindow
+ # include <X11/Xlib.h>
+@@ -146,7 +147,7 @@ void ScreenSaverHelper::uninhibitInternal()
+ s_enabled = false;
+ }
+
+-#elif defined(Q_OS_LINUX)
++#elif (defined(Q_OS_LINUX) && defined(__X11__))
+ const char *SCREENSAVERS[][4] = {
+ // org.freedesktop.ScreenSaver is the standard. should work for gnome and kde too,
+ // but I add their specific names too
+From ebeff352f22f4d1dbc35d7f7e3c2c88f1965dc4e Mon Sep 17 00:00:00 2001
+From: Nicolas PARLANT <nicolas.parlant@parhuet.fr>
+Date: Mon, 16 Jun 2025 11:00:46 +0200
+Subject: [PATCH] Don't try localeFromXkbSymbol w/o __X11__ defined
+
+Because X11/XKBlib.h is a part of libX11
+
+Signed-off-by: Nicolas PARLANT <nicolas.parlant@parhuet.fr>
+---
+ src/coreservices.cpp | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/coreservices.cpp b/src/coreservices.cpp
+index 20fb1c240c6..0837d603907 100644
+--- a/src/coreservices.cpp
++++ b/src/coreservices.cpp
+@@ -63,7 +63,7 @@
+ #include "util/sandbox.h"
+ #endif
+
+-#ifdef Q_OS_LINUX
++#if defined(Q_OS_LINUX) && defined(__X11__)
+ #include <X11/XKBlib.h>
+ #endif
+
+@@ -118,7 +118,7 @@ Bool __xErrorHandler(Display* display, XErrorEvent* event, xError* error) {
+
+ #endif
+
+-#if defined(Q_OS_LINUX)
++#if defined(Q_OS_LINUX) && defined(__X11__)
+ QLocale localeFromXkbSymbol(const QString& xkbLayout) {
+ // This maps XKB layouts to locales of keyboard mappings that are shipped with Mixxx
+ static const QMap<QString, QLocale> xkbToLocaleMap = {
+@@ -268,7 +268,7 @@ QString getCurrentXkbLayoutName() {
+ // to "ibus engine". QGuiApplication::inputMethod() does not work with GNOME and XFCE
+ // https://bugreports.qt.io/browse/QTBUG-137302
+ inline QLocale inputLocale() {
+-#if defined(Q_OS_LINUX)
++#if defined(Q_OS_LINUX) && defined(__X11__)
+ QString layoutName = getCurrentXkbLayoutName();
+ if (!layoutName.isEmpty()) {
+ qDebug() << "Keyboard Layout from XKB:" << layoutName;
diff --git a/media-sound/mixxx/mixxx-2.5.2.ebuild b/media-sound/mixxx/mixxx-2.5.2.ebuild
new file mode 100644
index 000000000000..5f426916db7f
--- /dev/null
+++ b/media-sound/mixxx/mixxx-2.5.2.ebuild
@@ -0,0 +1,175 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake dot-a udev xdg
+
+DESCRIPTION="Advanced Digital DJ tool based on Qt"
+HOMEPAGE="https://mixxx.org/"
+if [[ ${PV} == *9999 ]] ; then
+ inherit git-r3
+ if [[ ${PV} == ?.?.9999 ]] ; then
+ EGIT_BRANCH=${PV%.9999}
+ fi
+ EGIT_REPO_URI="https://github.com/mixxxdj/${PN}.git"
+else
+ SRC_URI="https://github.com/mixxxdj/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~x86"
+fi
+
+LICENSE="GPL-2"
+SLOT="0"
+# gles2-only: at least not before 2.6 for keyworded ebuild
+IUSE="aac benchmark ffmpeg keyfinder lv2 midi modplug mp3 mp4 opus"
+IUSE+=" qtkeychain rubberband shout test upower wavpack +X"
+REQUIRED_USE="
+ benchmark? ( test )
+ qtkeychain? ( shout )
+ test? ( aac ffmpeg midi mp3 opus rubberband )
+"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-db/sqlite:3
+ dev-cpp/abseil-cpp:=
+ dev-libs/hidapi
+ dev-libs/protobuf:=
+ dev-qt/qt5compat:6
+ dev-qt/qtbase:6[concurrent,dbus,-gles2-only,gui,icu,network,opengl,sql,sqlite,ssl,widgets,xml,X?]
+ dev-qt/qtdeclarative:6
+ dev-qt/qtshadertools:6
+ dev-qt/qtsvg:6
+ media-libs/chromaprint:=
+ media-libs/flac:=
+ media-libs/libebur128:=
+ media-libs/libglvnd[X?]
+ media-libs/libogg
+ media-libs/libsndfile
+ media-libs/libsoundtouch:=
+ media-libs/libvorbis
+ media-libs/portaudio
+ media-libs/taglib:=
+ media-sound/lame
+ virtual/libusb:1
+ virtual/udev
+ aac? (
+ media-libs/faad2
+ media-libs/libmp4v2
+ )
+ benchmark? (
+ dev-cpp/benchmark:=
+ dev-cpp/gtest:=
+ dev-util/google-perftools:=
+ )
+ ffmpeg? ( media-video/ffmpeg:= )
+ keyfinder? ( media-libs/libkeyfinder )
+ lv2? ( media-libs/lilv )
+ midi? ( media-libs/portmidi )
+ modplug? ( media-libs/libmodplug )
+ mp3? (
+ media-libs/libid3tag:=
+ media-libs/libmad
+ )
+ mp4? ( media-libs/libmp4v2 )
+ opus? (
+ media-libs/opus
+ media-libs/opusfile
+ )
+ qtkeychain? ( >=dev-libs/qtkeychain-0.14.2:=[qt6(+)] )
+ rubberband? ( media-libs/rubberband:= )
+ shout? ( dev-libs/openssl:= )
+ upower? (
+ dev-libs/glib:2
+ sys-power/upower:=
+ )
+ wavpack? ( media-sound/wavpack )
+ X? ( x11-libs/libX11 )
+"
+DEPEND="${RDEPEND}
+ dev-cpp/gtest
+ dev-cpp/ms-gsl
+"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ # Fix strict-aliasing violations in vendored katai_cpp_stl_runtime
+ # https://github.com/kaitai-io/kaitai_struct_cpp_stl_runtime/commit/c01f530.patch
+ "${FILESDIR}"/${PN}-2.5.0-fix-strict-aliasing-kaitai.patch
+ # Try OpenGL::OpenGL first for X11-less system
+ # Make libX11 optional. Merged in main branch.
+ "${FILESDIR}"/${PN}-2.5.2-x11_opt.patch
+ # Fix colum header text asignment. From upstream.
+ "${FILESDIR}"/${P}-fix_col_headers.patch
+)
+
+CMAKE_SKIP_TESTS=(
+ # need HID controller
+ LegacyControllerMappingValidationTest.HidMappingsValid
+ # randomly fails
+ # https://github.com/mixxxdj/mixxx/issues/12554
+ EngineBufferE2ETest
+)
+
+src_configure() {
+ # prevent ld error as package builds static libs.
+ lto-guarantee-fat
+
+ local mycmakeargs=(
+ -DBATTERY="$(usex upower)"
+ -DBROADCAST="$(usex shout)"
+ -DBUILD_SHARED_LIBS=ON
+ -DBUILD_TESTING="$(usex test)"
+ -DBUILD_BENCH="$(usex benchmark)"
+ # prevent duplicate call
+ -DCCACHE_SUPPORT=OFF
+ -DCMAKE_DISABLE_FIND_PACKAGE_X11=$(usex !X)
+ -DENGINEPRIME=OFF
+ -DFAAD="$(usex aac)"
+ -DFFMPEG="$(usex ffmpeg)"
+ -DGPERFTOOLS="$(usex benchmark)"
+ -DGPERFTOOLSPROFILER="$(usex benchmark)"
+ -DHID=ON
+ -DINSTALL_USER_UDEV_RULES=OFF
+ -DKEYFINDER="$(usex keyfinder)"
+ -DLILV="$(usex lv2)"
+ -DMAD="$(usex mp3)"
+ -DMODPLUG="$(usex modplug)"
+ -DOPTIMIZE=OFF
+ -DOPUS="$(usex opus)"
+ -DPORTMIDI="$(usex midi)"
+ # new QML-UI, experimental and not functionnal for now
+ -DQML=OFF
+ -DQTKEYCHAIN="$(usex qtkeychain)"
+ -DRUBBERBAND="$(usex rubberband)"
+ -DVINYLCONTROL=ON
+ -DWAVPACK="$(usex wavpack)"
+ )
+
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+ use benchmark && dobin "${BUILD_DIR}"/mixxx-test
+ udev_newrules "${S}"/res/linux/mixxx-usb-uaccess.rules 69-mixxx-usb-uaccess.rules
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ udev_reload
+
+ elog "Manuals are no longer part of the package."
+ elog "Please refer to https://downloads.mixxx.org/manual/ for up-to-date manuals."
+ if use benchmark; then
+ elog ""
+ elog "Launch benchmark : ${EROOT}/usr/bin/mixxx-test --benchmark"
+ elog "Launch Unittests : ${EROOT}/usr/bin/mixxx-test"
+ elog "Some test suites may not be available without source files."
+ fi
+}
+
+pkg_postrm() {
+ xdg_pkg_postrm
+ udev_reload
+}