# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit cmake flag-o-matic toolchain-funcs 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" 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:3 dev-libs/hidapi dev-libs/protobuf:= 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/libglvnd[X] media-libs/libogg media-libs/libsndfile media-libs/libsoundtouch:= media-libs/libvorbis media-libs/portaudio =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-util/spirv-tools virtual/pkgconfig " PATCHES=( # Building mixxx-test target only with explicit test useflag "${FILESDIR}"/${P}-tests.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=( -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 -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)" ) 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 }