diff options
author | 2025-01-20 13:08:26 +0000 | |
---|---|---|
committer | 2025-02-10 21:41:50 +0100 | |
commit | 5184a59aa626c6bda8eee053f633354595687596 (patch) | |
tree | d5de7caa18e5939078f30bdde2c2dae0768afd9f /media-sound/mixxx | |
parent | app-office/scribus: Fix build w/ >=pp-text/poppler-25.02.0 (diff) | |
download | gentoo-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.patch | 115 | ||||
-rw-r--r-- | media-sound/mixxx/files/mixxx-9999-docs.patch | 28 | ||||
-rw-r--r-- | media-sound/mixxx/metadata.xml | 6 | ||||
-rw-r--r-- | media-sound/mixxx/mixxx-9999.ebuild | 159 |
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() { |