commit:     2edede5d416650df9c28628d57246a6233d1051e
Author:     Nicolas PARLANT <nicolas.parlant <AT> parhuet <DOT> fr>
AuthorDate: Fri Dec 20 10:01:50 2024 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat Feb  8 08:17:39 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2edede5d

media-sound/cantata: add 3.3.0, qt6 fork

switch to gh-fork nullobsi as initial CDrummond is archived

plocales removed

patches :
* use KF6::solid instead of 'lite-vendored' (so unkeyword ~ppc)
* fix cdparanoia detection

useflags :
* rm cdio. As upstream, use cdda for cdioparanoia with cdparanoia as fallback
* add +taglib as it's required for almost all other useflags

mentions :
* taglib-2.0 is required by upstream, but package may still be built
  with taglib-1.13. Nonetheless, I don't see the real issue as
  there is no obstacle to taglib2's stabilization.
* libvlc has been removed from useflags in the past. I didn’t add it as
  an alternative of qtmultimedia for playing stream.
* breeze or oxygen icons are not strictly required. removed from rdep.

Bug: https://bugs.gentoo.org/927073
Signed-off-by: Nicolas PARLANT <nicolas.parlant <AT> parhuet.fr>
Closes: https://github.com/gentoo/gentoo/pull/40475
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 media-sound/cantata/Manifest                       |   1 +
 media-sound/cantata/cantata-3.3.0.ebuild           | 105 ++++++++++
 .../cantata/files/cantata-3.3.0-cdparanoia.patch   |  29 +++
 .../cantata/files/cantata-3.3.0-rm-vendor.patch    | 217 +++++++++++++++++++++
 media-sound/cantata/metadata.xml                   |   4 +-
 5 files changed, 354 insertions(+), 2 deletions(-)

diff --git a/media-sound/cantata/Manifest b/media-sound/cantata/Manifest
index b546787031ac..4000e6fa53d0 100644
--- a/media-sound/cantata/Manifest
+++ b/media-sound/cantata/Manifest
@@ -1 +1,2 @@
 DIST cantata-2.5.0.tar.bz2 2487031 BLAKE2B 
ad77987aae205695393a4fc782dc442a467ca392ce60251efdc68d12d29b3d2f24270f462a0dbfe0c375905f9356b8c649ff139021629ba58fd7de80819fdba0
 SHA512 
42f28321d01e0bc3a315030066b738dead8f8f8caed8c1115729a3d370d68d9d845f00576fc81ddba694bba6a4ae57c3f7de714b2e39874458548c3e5bb8b2d2
+DIST cantata-3.3.0.tar.gz 4783803 BLAKE2B 
78995492080cacf4d5f01e923a71edb2208baa9238d269679f6ea0112cf06066295bbeb40b18439bcd45fea8079ea6c52422f5515ed6f0c1511f7942f3b96f15
 SHA512 
ec011a2e544a882c68a808d27752457e4702f20b0ed66124dcc10586c8f5cc975690a4fc7368abc2747fd4f603f19b787a45f5a664f3ace8bcc9f1f86369253e

diff --git a/media-sound/cantata/cantata-3.3.0.ebuild 
b/media-sound/cantata/cantata-3.3.0.ebuild
new file mode 100644
index 000000000000..5d5530e4499d
--- /dev/null
+++ b/media-sound/cantata/cantata-3.3.0.ebuild
@@ -0,0 +1,105 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake xdg
+
+DESCRIPTION="Featureful and configurable Qt client for the music player daemon 
(MPD)"
+HOMEPAGE="https://github.com/nullobsi/cantata";
+SRC_URI="https://github.com/nullobsi/cantata/archive/v${PV}.tar.gz -> 
${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc64 ~x86"
+IUSE="cdda cddb http-server mtp musicbrainz replaygain streaming +taglib 
udisks zeroconf"
+REQUIRED_USE="
+       cdda? ( taglib udisks || ( cddb musicbrainz ) )
+       cddb? ( cdda taglib )
+       mtp? ( taglib udisks )
+       musicbrainz? ( cdda taglib )
+       replaygain? ( taglib )
+       udisks? ( taglib )
+"
+
+COMMON_DEPEND="
+       dev-qt/qtbase:6[dbus,gui,network,sql,sqlite,widgets,xml]
+       dev-qt/qtsvg:6
+       sys-libs/zlib
+       cdda? ( || (
+               dev-libs/libcdio-paranoia
+               media-sound/cdparanoia
+       ) )
+       cddb? ( media-libs/libcddb )
+       mtp? ( media-libs/libmtp:= )
+       musicbrainz? ( media-libs/musicbrainz:5= )
+       replaygain? (
+               media-libs/libebur128:=
+               media-sound/mpg123-base
+               media-video/ffmpeg:0=
+       )
+       streaming? ( dev-qt/qtmultimedia:6 )
+       taglib? ( >=media-libs/taglib-2:= )
+       udisks? ( kde-frameworks/solid:6 )
+       zeroconf? ( net-dns/avahi )
+"
+RDEPEND="${COMMON_DEPEND}
+       dev-lang/perl[perl_features_ithreads]
+"
+DEPEND="${COMMON_DEPEND}
+       dev-qt/qtbase:6[concurrent]
+"
+BDEPEND="
+       dev-qt/qttools:6[linguist]
+       virtual/pkgconfig
+"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-3.3.0-rm-vendor.patch
+       # https://github.com/nullobsi/cantata/pull/51.patch
+       "${FILESDIR}"/${PN}-3.3.0-cdparanoia.patch
+)
+
+src_prepare() {
+       cmake_src_prepare
+
+       # Unbundle 3rd party libs
+       # keep knotifications : 
https://github.com/nullobsi/cantata/commit/719adb5
+       rm -r 
3rdparty/{ebur128,kcategorizedview,qtsingleapplication,qxt,solid-lite} || die
+}
+
+src_configure() {
+       local mycmakeargs=(
+               # Buggy https://github.com/nullobsi/cantata/commit/18236
+               -DENABLE_CATEGORIZED_VIEW=OFF
+               -DENABLE_CDPARANOIA=$(usex cdda)
+               -DENABLE_CDDB=$(usex cddb)
+               -DENABLE_CDIOPARANOIA=$(usex cdda)
+               -DENABLE_HTTP_SERVER=$(usex http-server)
+               -DENABLE_MTP=$(usex mtp)
+               -DENABLE_MUSICBRAINZ=$(usex musicbrainz)
+               -DENABLE_FFMPEG=$(usex replaygain)
+               -DENABLE_MPG123=$(usex replaygain)
+               -DENABLE_HTTP_STREAM_PLAYBACK=$(usex streaming)
+               -DENABLE_TAGLIB=$(usex taglib)
+               -DENABLE_DEVICES_SUPPORT=$(usex udisks)
+               -DENABLE_AVAHI=$(usex zeroconf)
+               -DENABLE_REMOTE_DEVICES=OFF
+               # use solid/udisks2 instead of udisks
+               -DENABLE_UDISKS2=ON
+       )
+
+       cmake_src_configure
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+
+       has_version media-sound/mpd || \
+               elog "An instance of media-sound/mpd, local or remote, is 
required to set up Cantata."
+
+       if ! has_version app-misc/media-player-info; then
+               elog "Install app-misc/media-player-info to enable 
identification"
+               elog "and querying of portable media players"
+       fi
+}

diff --git a/media-sound/cantata/files/cantata-3.3.0-cdparanoia.patch 
b/media-sound/cantata/files/cantata-3.3.0-cdparanoia.patch
new file mode 100644
index 000000000000..a06cc79310ff
--- /dev/null
+++ b/media-sound/cantata/files/cantata-3.3.0-cdparanoia.patch
@@ -0,0 +1,29 @@
+https://github.com/nullobsi/cantata/pull/51.patch
+diff --git a/cmake/FindCDParanoia.cmake b/cmake/FindCDParanoia.cmake
+index c5eaf4a7..d145d78c 100644
+--- a/cmake/FindCDParanoia.cmake
++++ b/cmake/FindCDParanoia.cmake
+@@ -43,6 +43,8 @@ The following cache variables may also be set:
+   The directory containing ``cdda_interface.h``.
+ #]===]
+ 
++include(CheckCSourceCompiles)
++
+ # First use PKG-Config as a starting point.
+ find_package(PkgConfig)
+ if(PKG_CONFIG_FOUND)
+@@ -96,6 +98,7 @@ if(CDParanoia_FOUND)
+     )
+   endif ()
+   if(NOT TARGET CDDA::Interface)
++    add_library(CDDA::Interface UNKNOWN IMPORTED)
+     set_target_properties(CDDA::Interface PROPERTIES
+             IMPORTED_LOCATION "${CDParanoia_INTERFACE_LIBRARY}"
+             INTERFACE_COMPILE_OPTIONS "${PC_CDParanoia_CFLAGS_OTHER}"
+@@ -118,4 +121,4 @@ mark_as_advanced(
+         CDParanoia_INTERFACE_INCLUDE_DIR
+         CDParanoia_PARANOIA_LIBRARY
+         CDParanoia_INTERFACE_LIBRARY
+-)
+\ No newline at end of file
++)

diff --git a/media-sound/cantata/files/cantata-3.3.0-rm-vendor.patch 
b/media-sound/cantata/files/cantata-3.3.0-rm-vendor.patch
new file mode 100644
index 000000000000..28f09623f38c
--- /dev/null
+++ b/media-sound/cantata/files/cantata-3.3.0-rm-vendor.patch
@@ -0,0 +1,217 @@
+diff '--color=auto' -uNr a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt   2024-12-16 12:38:42.412438061 -0000
++++ b/CMakeLists.txt   2024-12-16 12:42:48.608780120 -0000
+@@ -532,6 +532,9 @@
+ )
+ 
+ if(ENABLE_CATEGORIZED_VIEW)
++    find_package(KF6ItemViews REQUIRED)
++    ADD_COMPILE_DEFINITIONS(cantata CAT_VIEW)
++    target_link_libraries(cantata PRIVATE KF6::ItemViews)
+     target_sources(cantata PRIVATE widgets/categorizedview.cpp)
+ endif()
+ if(ENABLE_SIMPLE_MPD_SUPPORT)
+@@ -628,7 +630,8 @@
+     # Cantata still links to taglib, even if external tag reader/writer is 
used, because JamendoService uses taglib for ID3 genres.
+     target_link_libraries(cantata PRIVATE TagLib::TagLib)
+     if(ENABLE_DEVICES_SUPPORT)
+-        target_link_libraries(cantata PRIVATE solidlite)
++          find_package(KF6Solid REQUIRED)
++          target_link_libraries(cantata PRIVATE KF6::Solid)
+     endif()
+ 
+     if(FFMPEG_FOUND OR MPG123_FOUND)
+@@ -646,7 +649,6 @@
+     add_subdirectory(tags)
+ 
+     if(ENABLE_DEVICES_SUPPORT)
+-        add_subdirectory(3rdparty/solid-lite)
+         if(MTP_FOUND)
+             target_sources(cantata PRIVATE devices/mtpdevice.cpp)
+             target_link_libraries(cantata PRIVATE MTP::MTP)
+@@ -797,11 +799,6 @@
+     install(TARGETS cantata)
+ endif()
+ 
+-if(ENABLE_CATEGORIZED_VIEW)
+-    add_subdirectory(3rdparty/kcategorizedview)
+-    target_link_libraries(cantata PRIVATE kcategorizedview)
+-endif()
+-
+ if(WIN32 OR APPLE OR HAIKU)
+     add_subdirectory(3rdparty/qtsingleapplication)
+     target_link_libraries(cantata PRIVATE qtsingleapplication)
+diff '--color=auto' -uNr a/devices/audiocddevice.cpp 
b/devices/audiocddevice.cpp
+--- a/devices/audiocddevice.cpp        2024-12-16 12:38:42.416438001 -0000
++++ b/devices/audiocddevice.cpp        2024-12-16 12:39:03.128130278 -0000
+@@ -35,7 +35,7 @@
+ #include "models/musiclibraryitemsong.h"
+ #include "models/playqueuemodel.h"
+ #include "mpd-interface/mpdconnection.h"
+-#include "solid-lite/block.h"
++#include <solid/block.h>
+ #include "support/utils.h"
+ #include "widgets/icons.h"
+ #include <QDir>
+diff '--color=auto' -uNr a/devices/audiocddevice.h b/devices/audiocddevice.h
+--- a/devices/audiocddevice.h  2024-12-16 12:38:42.416438001 -0000
++++ b/devices/audiocddevice.h  2024-12-16 12:39:03.128130278 -0000
+@@ -27,7 +27,7 @@
+ #include "device.h"
+ #include "gui/covers.h"
+ #include "http/httpserver.h"
+-#include "solid-lite/opticaldrive.h"
++#include <solid/opticaldrive.h>
+ #include <QImage>
+ 
+ class CddbInterface;
+diff '--color=auto' -uNr a/devices/device.cpp b/devices/device.cpp
+--- a/devices/device.cpp       2024-12-16 12:38:42.416438001 -0000
++++ b/devices/device.cpp       2024-12-16 12:39:03.128130278 -0000
+@@ -46,11 +46,11 @@
+ #include "models/musiclibrarymodel.h"
+ #include "mpd-interface/mpdparseutils.h"
+ #include "mpd-interface/song.h"
+-#include "solid-lite/genericinterface.h"
+-#include "solid-lite/opticaldisc.h"
+-#include "solid-lite/portablemediaplayer.h"
+-#include "solid-lite/storageaccess.h"
+-#include "solid-lite/storagedrive.h"
++#include <solid/genericinterface.h>
++#include <solid/opticaldisc.h>
++#include <solid/portablemediaplayer.h>
++#include <solid/storageaccess.h>
++#include <solid/storagedrive.h>
+ #include "tags/tags.h"
+ #include "widgets/icons.h"
+ #endif// ENABLE_DEVICES_SUPPORT
+diff '--color=auto' -uNr a/devices/device.h b/devices/device.h
+--- a/devices/device.h 2024-12-16 12:38:42.416438001 -0000
++++ b/devices/device.h 2024-12-16 12:39:03.128130278 -0000
+@@ -30,7 +30,7 @@
+ #include "mpd-interface/song.h"
+ #ifdef ENABLE_DEVICES_SUPPORT
+ #include "deviceoptions.h"
+-#include "solid-lite/device.h"
++#include <solid/device.h>
+ #endif
+ 
+ class QWidget;
+diff '--color=auto' -uNr a/devices/mtpdevice.h b/devices/mtpdevice.h
+--- a/devices/mtpdevice.h      2024-12-16 12:38:42.416438001 -0000
++++ b/devices/mtpdevice.h      2024-12-16 12:39:03.128130278 -0000
+@@ -27,7 +27,7 @@
+ #include "config.h"
+ #include "fsdevice.h"
+ #include "mpd-interface/song.h"
+-#include "solid-lite/portablemediaplayer.h"
++#include <solid/portablemediaplayer.h>
+ #include <libmtp.h>
+ 
+ class MusicLibraryItemRoot;
+diff '--color=auto' -uNr a/devices/umsdevice.cpp b/devices/umsdevice.cpp
+--- a/devices/umsdevice.cpp    2024-12-16 12:38:42.420437942 -0000
++++ b/devices/umsdevice.cpp    2024-12-16 12:39:03.128130278 -0000
+@@ -25,7 +25,7 @@
+ #include "actiondialog.h"
+ #include "devicepropertiesdialog.h"
+ #include "devicepropertieswidget.h"
+-#include "solid-lite/storagedrive.h"
++#include <solid/storagedrive.h>
+ #include "support/icon.h"
+ #include "support/utils.h"
+ #include <QDir>
+diff '--color=auto' -uNr a/devices/umsdevice.h b/devices/umsdevice.h
+--- a/devices/umsdevice.h      2024-12-16 12:38:42.420437942 -0000
++++ b/devices/umsdevice.h      2024-12-16 12:39:03.128130278 -0000
+@@ -25,7 +25,7 @@
+ #define UMSDEVICE_H
+ 
+ #include "fsdevice.h"
+-#include "solid-lite/storageaccess.h"
++#include <solid/storageaccess.h>
+ 
+ class UmsDevice : public FsDevice {
+       Q_OBJECT
+diff '--color=auto' -uNr a/models/devicesmodel.cpp b/models/devicesmodel.cpp
+--- a/models/devicesmodel.cpp  2024-12-16 12:38:42.424437883 -0000
++++ b/models/devicesmodel.cpp  2024-12-16 12:39:03.128130278 -0000
+@@ -42,14 +42,14 @@
+ #if defined CDDB_FOUND || defined MusicBrainz5_FOUND
+ #include "devices/audiocddevice.h"
+ #endif
+-#include "solid-lite/device.h"
+-#include "solid-lite/deviceinterface.h"
+-#include "solid-lite/devicenotifier.h"
+-#include "solid-lite/opticaldisc.h"
+-#include "solid-lite/portablemediaplayer.h"
+-#include "solid-lite/storageaccess.h"
+-#include "solid-lite/storagedrive.h"
+-#include "solid-lite/storagevolume.h"
++#include <solid/device.h>
++#include <solid/deviceinterface.h>
++#include <solid/devicenotifier.h>
++#include <solid/opticaldisc.h>
++#include <solid/portablemediaplayer.h>
++#include <solid/storageaccess.h>
++#include <solid/storagedrive.h>
++#include <solid/storagevolume.h>
+ #include "support/globalstatic.h"
+ #include "support/utils.h"
+ #include <QMimeData>
+diff '--color=auto' -uNr a/models/mpdlibrarymodel.cpp 
b/models/mpdlibrarymodel.cpp
+--- a/models/mpdlibrarymodel.cpp       2024-12-16 12:38:42.424437883 -0000
++++ b/models/mpdlibrarymodel.cpp       2024-12-16 12:48:07.420043294 -0000
+@@ -25,7 +25,9 @@
+ #include "db/mpdlibrarydb.h"
+ #include "gui/covers.h"
+ #include "gui/settings.h"
+-#include "kcategorizedview/kcategorizedsortfilterproxymodel.h"
++#ifdef CAT_VIEW
++#include <kcategorizedsortfilterproxymodel.h>
++#endif
+ #include "roles.h"
+ #include "support/configuration.h"
+ #include "support/globalstatic.h"
+@@ -110,6 +112,7 @@
+               }
+               return v;
+       }
++      #ifdef CAT_VIEW
+       case KCategorizedSortFilterProxyModel::CategoryDisplayRole: {
+               Item* item = static_cast<Item*>(index.internalPointer());
+               if (T_Album == item->getType()) {
+@@ -125,6 +128,7 @@
+               }
+               break;
+       }
++      #endif
+       }
+       return SqlLibraryModel::data(index, role);
+ }
+diff '--color=auto' -uNr a/widgets/categorizedview.cpp 
b/widgets/categorizedview.cpp
+--- a/widgets/categorizedview.cpp      2024-12-16 12:38:42.436437705 -0000
++++ b/widgets/categorizedview.cpp      2024-12-16 12:39:03.132130217 -0000
+@@ -24,8 +24,8 @@
+ #include "categorizedview.h"
+ #include "config.h"
+ #include "icons.h"
+-#include "kcategorizedview/kcategorizedsortfilterproxymodel.h"
+-#include "kcategorizedview/kcategorydrawer.h"
++#include <kcategorizedsortfilterproxymodel.h>
++#include <kcategorydrawer.h>
+ #include "support/utils.h"
+ #include <QApplication>
+ #include <QDrag>
+diff '--color=auto' -uNr a/widgets/categorizedview.h 
b/widgets/categorizedview.h
+--- a/widgets/categorizedview.h        2024-12-16 12:38:42.436437705 -0000
++++ b/widgets/categorizedview.h        2024-12-16 12:39:03.132130217 -0000
+@@ -24,7 +24,7 @@
+ #ifndef CATEGORIZEDVIEW_H
+ #define CATEGORIZEDVIEW_H
+ 
+-#include "kcategorizedview/kcategorizedview.h"
++#include <kcategorizedview.h>
+ #include "treeview.h"
+ 
+ class QIcon;

diff --git a/media-sound/cantata/metadata.xml b/media-sound/cantata/metadata.xml
index a6c3a69db3a1..4c29857ebbda 100644
--- a/media-sound/cantata/metadata.xml
+++ b/media-sound/cantata/metadata.xml
@@ -9,9 +9,9 @@
                <flag name="cdio">Use <pkg>dev-libs/libcdio-paranoia</pkg> for 
CD support (instead of cdparanoia)</flag>
                <flag name="http-server">Enable internal HTTP server to play 
non-MPD files</flag>
                <flag name="replaygain">Enable ReplayGain support, for relative 
volume adjustments</flag>
-               <flag name="streaming">Enable playback of MPD HTTP streams 
using LibVLC (<pkg>media-video/vlc</pkg>)</flag>
+               <flag name="streaming">Enable playback of MPD HTTP streams 
using (<pkg>dev-qt/qtmultimedia</pkg>)</flag>
        </use>
        <upstream>
-               <remote-id type="github">cdrummond/cantata</remote-id>
+               <remote-id type="github">nullobsi/cantata</remote-id>
        </upstream>
 </pkgmetadata>

Reply via email to