summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas PARLANT <nicolas.parlant@parhuet.fr>2025-01-20 13:08:26 +0000
committerAndreas Sturmlechner <asturm@gentoo.org>2025-02-10 21:41:50 +0100
commit5184a59aa626c6bda8eee053f633354595687596 (patch)
treed5de7caa18e5939078f30bdde2c2dae0768afd9f /media-sound/mixxx
parentapp-office/scribus: Fix build w/ >=pp-text/poppler-25.02.0 (diff)
downloadgentoo-5184a59aa626c6bda8eee053f633354595687596.tar.gz
gentoo-5184a59aa626c6bda8eee053f633354595687596.tar.bz2
gentoo-5184a59aa626c6bda8eee053f633354595687596.zip
media-sound/mixxx: update 9999 qt6, tests
*qt6 port *eclass: add flag-o-matic/toolchain-funcs to prevent ld error with lto *deps: add dev-libs/hidapi (required even with HID=OFF) add dev-qt/qtbase:6[icu] for utf16 (test too) add dev-util/spirv-tools for qsb (bdep) add media-libs/libid3tag for mp3 support add media-sound/lame, required del sci-libs/fftw, only required with static keyfinder del virtual/opengl, redundant del media-libs/vamp-plugin-sdk is no more a dep (2.3.0) del media-libs/libshout, use internal libshout-idjc instead *deps benchmark: add dev-cpp/benchmark add dev-cpp/gtest add dev-util/gperftools *useflag: add benchmark midi modplug test upower del doc because no bdep Closes: https://bugs.gentoo.org/914764 Closes: https://bugs.gentoo.org/822357 Signed-off-by: Nicolas PARLANT <nicolas.parlant@parhuet.fr> Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'media-sound/mixxx')
-rw-r--r--media-sound/mixxx/files/mixxx-2.5.0-fix-strict-aliasing-kaitai.patch115
-rw-r--r--media-sound/mixxx/files/mixxx-9999-docs.patch28
-rw-r--r--media-sound/mixxx/metadata.xml6
-rw-r--r--media-sound/mixxx/mixxx-9999.ebuild159
4 files changed, 217 insertions, 91 deletions
diff --git a/media-sound/mixxx/files/mixxx-2.5.0-fix-strict-aliasing-kaitai.patch b/media-sound/mixxx/files/mixxx-2.5.0-fix-strict-aliasing-kaitai.patch
new file mode 100644
index 000000000000..2f06bbbb9c78
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.5.0-fix-strict-aliasing-kaitai.patch
@@ -0,0 +1,115 @@
+https://github.com/kaitai-io/kaitai_struct_cpp_stl_runtime/commit/c01f5300159a698b6e706caba21e1965d5fc94a7.patch
+diff --git a/lib/kaitai/kaitai/kaitaistream.cpp b/lib/kaitai/kaitai/kaitaistream.cpp
+index bd914c3..d3b2fcd 100644
+--- a/lib/kaitai/kaitai/kaitaistream.cpp
++++ b/lib/kaitai/kaitai/kaitaistream.cpp
+@@ -32,10 +32,57 @@
+ #include <byteswap.h>
+ #endif
+
++#include <cstring> // std::memcpy
+ #include <iostream>
+ #include <vector>
+ #include <stdexcept>
+
++#ifdef KAITAI_STREAM_H_CPP11_SUPPORT
++#include <type_traits> // std::enable_if, std::is_trivially_copyable, std::is_trivially_constructible
++
++// Taken from https://en.cppreference.com/w/cpp/numeric/bit_cast#Possible_implementation
++// (only adjusted for C++11 compatibility)
++template<class To, class From>
++typename std::enable_if<
++ sizeof(To) == sizeof(From) &&
++ std::is_trivially_copyable<From>::value &&
++ std::is_trivially_copyable<To>::value,
++ To
++>::type
++// constexpr support needs compiler magic
++static bit_cast(const From &src) noexcept
++{
++ static_assert(std::is_trivially_constructible<To>::value,
++ "This implementation additionally requires "
++ "destination type to be trivially constructible");
++
++ To dst;
++ std::memcpy(&dst, &src, sizeof(To));
++ return dst;
++}
++#else
++// The following implementation of `StaticAssert` was inspired by https://stackoverflow.com/a/6765840
++
++// empty default template
++template <bool b>
++struct StaticAssert;
++
++// template specialized on true
++template <>
++struct StaticAssert<true> {};
++
++template<class To, class From>
++To
++static bit_cast(const From &src)
++{
++ StaticAssert<sizeof(To) == sizeof(From)>();
++
++ To dst;
++ std::memcpy(&dst, &src, sizeof(To));
++ return dst;
++}
++#endif
++
+ kaitai::kstream::kstream(std::istream *io) {
+ m_io = io;
+ init();
+@@ -263,7 +310,7 @@ float kaitai::kstream::read_f4be() {
+ #if __BYTE_ORDER == __LITTLE_ENDIAN
+ t = bswap_32(t);
+ #endif
+- return reinterpret_cast<float &>(t);
++ return bit_cast<float>(t);
+ }
+
+ double kaitai::kstream::read_f8be() {
+@@ -272,7 +319,7 @@ double kaitai::kstream::read_f8be() {
+ #if __BYTE_ORDER == __LITTLE_ENDIAN
+ t = bswap_64(t);
+ #endif
+- return reinterpret_cast<double &>(t);
++ return bit_cast<double>(t);
+ }
+
+ // ........................................................................
+@@ -285,7 +332,7 @@ float kaitai::kstream::read_f4le() {
+ #if __BYTE_ORDER == __BIG_ENDIAN
+ t = bswap_32(t);
+ #endif
+- return reinterpret_cast<float &>(t);
++ return bit_cast<float>(t);
+ }
+
+ double kaitai::kstream::read_f8le() {
+@@ -294,7 +341,7 @@ double kaitai::kstream::read_f8le() {
+ #if __BYTE_ORDER == __BIG_ENDIAN
+ t = bswap_64(t);
+ #endif
+- return reinterpret_cast<double &>(t);
++ return bit_cast<double>(t);
+ }
+
+ // ========================================================================
+diff --git a/lib/kaitai/kaitai/kaitaistream.h b/lib/kaitai/kaitai/kaitaistream.h
+index c8b5a3a..d58ae8e 100644
+--- a/lib/kaitai/kaitai/kaitaistream.h
++++ b/lib/kaitai/kaitai/kaitaistream.h
+@@ -4,6 +4,11 @@
+ // Kaitai Struct runtime API version: x.y.z = 'xxxyyyzzz' decimal
+ #define KAITAI_STRUCT_VERSION 11000L
+
++// check for C++11 support - https://stackoverflow.com/a/40512515
++#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900)
++#define KAITAI_STREAM_H_CPP11_SUPPORT
++#endif
++
+ #include <istream>
+ #include <sstream>
+ #include <stdint.h>
diff --git a/media-sound/mixxx/files/mixxx-9999-docs.patch b/media-sound/mixxx/files/mixxx-9999-docs.patch
deleted file mode 100644
index 0ac74959df2e..000000000000
--- a/media-sound/mixxx/files/mixxx-9999-docs.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index e35d8dd4e1..798179955c 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -1504,23 +1504,6 @@ install(
- "${MIXXX_INSTALL_LICENSEDIR}"
- )
-
--# Documentation
--install(
-- FILES
-- "${CMAKE_CURRENT_SOURCE_DIR}/README.md"
-- "${CMAKE_CURRENT_SOURCE_DIR}/res/Mixxx-Keyboard-Shortcuts.pdf"
-- DESTINATION
-- "${MIXXX_INSTALL_DOCDIR}"
--)
--if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/res/Mixxx-Manual.pdf")
-- install(
-- FILES
-- "${CMAKE_CURRENT_SOURCE_DIR}/res/Mixxx-Manual.pdf"
-- DESTINATION
-- "${MIXXX_INSTALL_DOCDIR}"
-- )
--endif()
--
- # Additional Linux-only files
- if(UNIX AND NOT APPLE)
- # .desktop file for KDE/GNOME menu
diff --git a/media-sound/mixxx/metadata.xml b/media-sound/mixxx/metadata.xml
index 38deddc8020f..8b62b2d0884f 100644
--- a/media-sound/mixxx/metadata.xml
+++ b/media-sound/mixxx/metadata.xml
@@ -6,15 +6,19 @@
<name>Gentoo ProAudio Project</name>
</maintainer>
<use>
+ <flag name="benchmark">Build and install benchmark binary: mixxx-test --benchmark</flag>
<flag name="hid">Enable HID controller support</flag>
<flag name="keyfinder">Enable musical key detection support via <pkg>media-libs/libkeyfinder</pkg></flag>
- <flag name="modplug">Add libmodplug support</flag>
<flag name="lv2">Add support for Ladspa V2 via <pkg>media-libs/lilv</pkg></flag>
+ <flag name="midi">Enable MIDI support via <pkg>media-libs/portmidi</pkg></flag>
+ <flag name="modplug">Add libmodplug support</flag>
<flag name="qtkeychain">Enable Secure credential storage support via <pkg>dev-libs/qtkeychain</pkg></flag>
+ <flag name="rubberband">Enable audio pitch-shifting via <pkg>media-libs/rubberband</pkg></flag>
<flag name="shout">Enable broadcasting support via <pkg>media-libs/libshout</pkg></flag>
</use>
<upstream>
<remote-id type="sourceforge">mixxx</remote-id>
<remote-id type="github">mixxxdj/mixxx</remote-id>
+ <doc>https://downloads.mixxx.org/manual/</doc>
</upstream>
</pkgmetadata>
diff --git a/media-sound/mixxx/mixxx-9999.ebuild b/media-sound/mixxx/mixxx-9999.ebuild
index cf915aaeb49f..f443853c094a 100644
--- a/media-sound/mixxx/mixxx-9999.ebuild
+++ b/media-sound/mixxx/mixxx-9999.ebuild
@@ -3,7 +3,7 @@
EAPI=8
-inherit cmake xdg udev
+inherit cmake flag-o-matic toolchain-funcs udev xdg
DESCRIPTION="Advanced Digital DJ tool based on Qt"
HOMEPAGE="https://mixxx.org/"
@@ -14,119 +14,154 @@ if [[ ${PV} == *9999 ]] ; then
fi
EGIT_REPO_URI="https://github.com/mixxxdj/${PN}.git"
else
- SRC_URI="https://github.com/mixxxdj/${PN}/archive/release-${PV}.tar.gz -> ${P}.tar.gz"
- S="${WORKDIR}/${PN}-release-${PV}"
- KEYWORDS="~amd64 ~x86"
+ SRC_URI="https://github.com/mixxxdj/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~x86"
fi
LICENSE="GPL-2"
SLOT="0"
-IUSE="aac doc ffmpeg hid keyfinder lv2 mp3 mp4 opus qtkeychain shout wavpack"
+IUSE="aac benchmark ffmpeg keyfinder lv2 midi modplug mp3 mp4 opus"
+IUSE+=" qtkeychain rubberband shout test upower wavpack"
+REQUIRED_USE="
+ benchmark? ( test )
+ qtkeychain? ( shout )
+ test? ( aac ffmpeg midi mp3 opus rubberband )
+"
+RESTRICT="!test? ( test )"
RDEPEND="
- dev-db/sqlite
- dev-libs/glib:2
+ dev-db/sqlite:3
+ dev-libs/hidapi
dev-libs/protobuf:=
- dev-qt/qtconcurrent:5
- dev-qt/qtcore:5
- dev-qt/qtdbus:5
- dev-qt/qtgui:5
- dev-qt/qtnetwork:5
- dev-qt/qtopengl:5
- dev-qt/qtscript:5[scripttools]
- dev-qt/qtsql:5
- dev-qt/qtsvg:5
- dev-qt/qtwidgets:5
- dev-qt/qtx11extras:5
- dev-qt/qtxml:5
- media-libs/chromaprint
+ dev-qt/qt5compat:6[qml]
+ dev-qt/qtbase:6[concurrent,dbus,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/libid3tag:=
+ media-libs/libebur128:=
+ media-libs/libglvnd[X]
media-libs/libogg
media-libs/libsndfile
- media-libs/libsoundtouch
+ media-libs/libsoundtouch:=
media-libs/libvorbis
media-libs/portaudio
- media-libs/portmidi
- media-libs/rubberband
<media-libs/taglib-2
- media-libs/vamp-plugin-sdk
- sci-libs/fftw:3.0=
- sys-power/upower
+ media-sound/lame
virtual/glu
virtual/libusb:1
- virtual/opengl
virtual/udev
x11-libs/libX11
aac? (
media-libs/faad2
media-libs/libmp4v2
)
+ benchmark? (
+ dev-cpp/benchmark:=
+ dev-cpp/gtest
+ dev-util/google-perftools:=
+ )
ffmpeg? ( media-video/ffmpeg:= )
- hid? ( dev-libs/hidapi )
keyfinder? ( media-libs/libkeyfinder )
lv2? ( media-libs/lilv )
- mp3? ( media-libs/libmad )
- mp4? ( media-libs/libmp4v2:= )
- opus? ( media-libs/opusfile )
- qtkeychain? ( dev-libs/qtkeychain:=[qt5(+)] )
- shout? ( >=media-libs/libshout-2.4.5 )
+ 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 )
"
DEPEND="${RDEPEND}
dev-cpp/ms-gsl
+ test? ( dev-cpp/gtest )
"
BDEPEND="
- dev-qt/qttest:5
- dev-qt/qtxmlpatterns:5
+ dev-util/spirv-tools
virtual/pkgconfig
"
PATCHES=(
- "${FILESDIR}"/${PN}-9999-docs.patch
+ # 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
+)
+
+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.
+ tc-is-lto && append-flags $(test-flags -ffat-lto-objects)
+
local mycmakeargs=(
- -DFAAD="$(usex aac on off)"
- -DFFMPEG="$(usex ffmpeg on off)"
- -DHID="$(usex hid on off)"
- -DLILV="$(usex lv2 on off)"
- -DMAD="$(usex mp3 on off)"
- -DOPTIMIZE="off"
- -DCCACHE_SUPPORT="off"
- -DOPUS="$(usex opus on off)"
- -DBROADCAST="$(usex shout on off)"
- -DVINYLCONTROL="on"
+ -DBATTERY="$(usex upower)"
+ -DBROADCAST="$(usex shout)"
+ -DBUILD_SHARED_LIBS=ON
+ -DBUILD_TESTING="$(usex test)"
+ -DBUILD_BENCH="$(usex benchmark)"
+ # prevent duplicate call
+ -DCCACHE_SUPPORT=OFF
+ -DENGINEPRIME=OFF
+ -DFAAD="$(usex aac)"
+ -DFFMPEG="$(usex ffmpeg)"
+ -DGPERFTOOLS="$(usex benchmark)"
+ -DGPERFTOOLSPROFILER="$(usex benchmark)"
+ -DHID=ON
-DINSTALL_USER_UDEV_RULES=OFF
- -DWAVPACK="$(usex wavpack on off)"
- -DQTKEYCHAIN="$(usex qtkeychain on off)"
- -DKEYFINDER="$(usex keyfinder on off)"
- -DDOWNLOAD_MANUAL=OFF
- -DBUILD_SHARED_LIBS=OFF
+ -DKEYFINDER="$(usex keyfinder)"
+ -DLILV="$(usex lv2)"
+ -DMAD="$(usex mp3)"
+ -DMODPLUG="$(usex modplug)"
+ -DOPTIMIZE=OFF
+ -DOPUS="$(usex opus)"
+ -DPORTMIDI="$(usex midi)"
+ -DQML=ON
+ -DQTKEYCHAIN="$(usex qtkeychain)"
+ -DRUBBERBAND="$(usex rubberband)"
+ -DVINYLCONTROL=ON
+ -DWAVPACK="$(usex wavpack)"
)
- if [[ ${PV} == 9999 ]] ; then
- mycmakeargs+=(
- -DENGINEPRIME="OFF"
- )
- fi
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
-
- if use doc ; then
- dodoc README res/Mixxx-Keyboard-Shortcuts.pdf
- fi
}
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() {