diff options
author | Andreas Sturmlechner <andreas.sturmlechner@gmail.com> | 2016-10-22 23:09:00 +0200 |
---|---|---|
committer | Michael Palimaka <kensington@gentoo.org> | 2016-11-06 02:42:50 +1100 |
commit | 54401847549e3a5ad53811646e63b69327a57376 (patch) | |
tree | d4db21c72d5d4987310fb61e5f482b5cf648ac85 /media-sound | |
parent | app-admin/qtpass: Version bump to 1.1.5 and add 9999 (diff) | |
download | gentoo-54401847549e3a5ad53811646e63b69327a57376.tar.gz gentoo-54401847549e3a5ad53811646e63b69327a57376.tar.bz2 gentoo-54401847549e3a5ad53811646e63b69327a57376.zip |
media-sound/cantata: Drop USE=kde,qt5 and simplify ebuild
Add fixes for MPRIS and >=Plasma-5.7
X not used with Qt5 - upstream commit c934ae9ed5b8aeb3d8ff6a6b108b3cfe4fb30dea
Package-Manager: portage-2.3.0
Diffstat (limited to 'media-sound')
4 files changed, 280 insertions, 0 deletions
diff --git a/media-sound/cantata/cantata-2.0.1-r1.ebuild b/media-sound/cantata/cantata-2.0.1-r1.ebuild new file mode 100644 index 000000000000..b04563d7d4f4 --- /dev/null +++ b/media-sound/cantata/cantata-2.0.1-r1.ebuild @@ -0,0 +1,120 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 + +PLOCALES="cs de en_GB es fr hu ko pl ru zh_CN" +inherit cmake-utils gnome2-utils l10n qmake-utils xdg + +DESCRIPTION="Featureful and configurable Qt client for the music player daemon (MPD)" +HOMEPAGE="https://github.com/CDrummond/cantata" +SRC_URI="https://github.com/CDrummond/cantata/releases/download/v${PV}/${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="4" +KEYWORDS="~amd64 ~x86" +IUSE="cdda cddb http-server mtp musicbrainz replaygain taglib udisks" +REQUIRED_USE=" + cdda? ( udisks || ( cddb musicbrainz ) ) + cddb? ( cdda taglib ) + mtp? ( taglib udisks ) + musicbrainz? ( cdda taglib ) + replaygain? ( taglib ) +" + +RDEPEND=" + dev-db/sqlite:3 + dev-qt/qtconcurrent:5 + dev-qt/qtcore:5 + dev-qt/qtdbus:5 + dev-qt/qtgui:5 + dev-qt/qtnetwork:5 + dev-qt/qtsql:5 + dev-qt/qtsvg:5 + dev-qt/qtwidgets:5 + dev-qt/qtxml:5 + sys-libs/zlib + || ( kde-frameworks/breeze-icons:5 kde-frameworks/oxygen-icons:* ) + cdda? ( media-sound/cdparanoia ) + cddb? ( media-libs/libcddb ) + mtp? ( media-libs/libmtp ) + musicbrainz? ( media-libs/musicbrainz:5 ) + replaygain? ( + media-libs/libebur128 + media-sound/mpg123 + virtual/ffmpeg + ) + taglib? ( + media-libs/taglib[asf(+),mp4(+)] + media-libs/taglib-extras + udisks? ( sys-fs/udisks:2 ) + ) +" +DEPEND="${RDEPEND} + dev-qt/linguist-tools:5 +" + +# cantata has no tests +RESTRICT="test" + +PATCHES=( + "${FILESDIR}/${P}-mpris-true.patch" + "${FILESDIR}/${P}-mpris-plasma57.patch" + "${FILESDIR}/${P}-qt5-no-X11.patch" +) + +src_prepare() { + cmake-utils_src_prepare + + # Unbundle 3rd party libs + rm -rf 3rdparty/qtsingleapplication/ || die + rm -rf 3rdparty/libebur128/ || die + # qjson ebuild does not support Qt5 yet + rm -rf 3rdparty/qjson/ || die + + l10n_find_plocales_changes 'po' '' '.po' +} + +src_configure() { + local langs="$(l10n_get_locales)" + + local mycmakeargs=( + -DCANTATA_TRANSLATIONS="${langs// /;}" + -DENABLE_CDPARANOIA=$(usex cdda) + -DENABLE_CDDB=$(usex cddb) + -DENABLE_HTTP_SERVER=$(usex http-server) + -DENABLE_MTP=$(usex mtp) + -DENABLE_MUSICBRAINZ=$(usex musicbrainz) + -DENABLE_QT5=ON + -DLCONVERT_EXECUTABLE="$(qt5_get_bindir)/lconvert" + -DLRELEASE_EXECUTABLE="$(qt5_get_bindir)/lrelease" + -DENABLE_FFMPEG=$(usex replaygain) + -DENABLE_MPG123=$(usex replaygain) + -DENABLE_TAGLIB=$(usex taglib) + -DENABLE_TAGLIB_EXTRAS=$(usex taglib) + -DENABLE_DEVICES_SUPPORT=$(usex udisks) + -DENABLE_HTTP_STREAM_PLAYBACK=OFF + -DENABLE_REMOTE_DEVICES=OFF + -DENABLE_UDISKS2=ON + -DUSE_SYSTEM_MENU_ICON=OFF + ) +# -DENABLE_KDE=$(usex kde) # not yet ported to KF5 + + cmake-utils_src_configure +} + +pkg_preinst() { + gnome2_icon_savelist + xdg_pkg_preinst +} + +pkg_postinst() { + gnome2_icon_cache_update + xdg_pkg_postinst +} + +pkg_postrm() { + gnome2_icon_cache_update + xdg_pkg_postrm +} diff --git a/media-sound/cantata/files/cantata-2.0.1-mpris-plasma57.patch b/media-sound/cantata/files/cantata-2.0.1-mpris-plasma57.patch new file mode 100644 index 000000000000..3965b425a938 --- /dev/null +++ b/media-sound/cantata/files/cantata-2.0.1-mpris-plasma57.patch @@ -0,0 +1,46 @@ +Work-around KDE 5.7 MPRIS issues. + +diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp +index cc2b532..37eec9e 100644 +--- a/gui/mainwindow.cpp ++++ b/gui/mainwindow.cpp +@@ -1410,8 +1410,8 @@ void MainWindow::setRating() + } + } + +-void MainWindow::readSettings() +-{ ++void MainWindow::initMpris() ++{ + #ifdef QT_QTDBUS_FOUND + if (Settings::self()->mpris()) { + if (!mpris) { +@@ -1424,6 +1424,16 @@ void MainWindow::readSettings() + mpris=0; + } + CurrentCover::self()->setEnabled(mpris || Settings::self()->showPopups() || 0!=Settings::self()->playQueueBackground() || Settings::self()->showCoverWidget()); ++ #endif ++} ++ ++void MainWindow::readSettings() ++{ ++ #ifdef QT_QTDBUS_FOUND ++ // It appears as if the KDE MPRIS code does not like the MPRIS interface to be setup before the window is visible. ++ // to work-around this, initMpris in the next event loop iteration. ++ // See #863 ++ QTimer::singleShot(0, this, SLOT(initMpris())); + #else + CurrentCover::self()->setEnabled(Settings::self()->showPopups() || 0!=Settings::self()->playQueueBackground() || Settings::self()->showCoverWidget()); + #endif +diff --git a/gui/mainwindow.h b/gui/mainwindow.h +index 6d6e960..aa3a80a 100644 +--- a/gui/mainwindow.h ++++ b/gui/mainwindow.h +@@ -268,6 +268,7 @@ public Q_SLOTS: + private Q_SLOTS: + void toggleContext(); + void toggleMenubar(); ++ void initMpris(); + + private: + int prevPage; diff --git a/media-sound/cantata/files/cantata-2.0.1-mpris-true.patch b/media-sound/cantata/files/cantata-2.0.1-mpris-true.patch new file mode 100644 index 000000000000..c32f745b82f7 --- /dev/null +++ b/media-sound/cantata/files/cantata-2.0.1-mpris-true.patch @@ -0,0 +1,100 @@ +Always return true for MPRIS CanPlay, CanPause, etc. + +diff --git a/dbus/mpris.cpp b/dbus/mpris.cpp +index 4736d19..45a539a 100644 +--- a/dbus/mpris.cpp ++++ b/dbus/mpris.cpp +@@ -65,6 +65,31 @@ Mpris::~Mpris() + QDBusConnection::sessionBus().unregisterService("org.mpris.MediaPlayer2.cantata"); + } + ++void Mpris::Pause() ++{ ++ if (MPDState_Playing==MPDStatus::self()->state()) { ++ StdActions::self()->playPauseTrackAction->trigger(); ++ } ++} ++ ++void Mpris::Play() ++{ ++ MPDStatus * const status = MPDStatus::self(); ++ if (status->playlistLength() && MPDState_Playing!=status->state()) { ++ StdActions::self()->playPauseTrackAction->trigger(); ++ } ++} ++ ++QString Mpris::PlaybackStatus() const ++{ ++ switch(MPDStatus::self()->state()) { ++ case MPDState_Playing: return QLatin1String("Playing"); ++ case MPDState_Paused: return QLatin1String("Paused"); ++ default: ++ case MPDState_Stopped: return QLatin1String("Stopped"); ++ } ++} ++ + qlonglong Mpris::Position() const + { + // Cant use MPDStatus, as we dont poll for track position, but use a timer instead! +diff --git a/dbus/mpris.h b/dbus/mpris.h +index 64a4fbe..a1578b9 100644 +--- a/dbus/mpris.h ++++ b/dbus/mpris.h +@@ -71,37 +71,15 @@ class Mpris : public QObject + // org.mpris.MediaPlayer2.Player + void Next() { StdActions::self()->nextTrackAction->trigger(); } + void Previous() { StdActions::self()->prevTrackAction->trigger(); } +- void Pause() { +- if (MPDState_Playing==MPDStatus::self()->state()) { +- StdActions::self()->playPauseTrackAction->trigger(); +- } +- } +- ++ void Pause(); + void PlayPause() { StdActions::self()->playPauseTrackAction->trigger(); } + void Stop() { StdActions::self()->stopPlaybackAction->trigger(); } + void StopAfterCurrent() { StdActions::self()->stopAfterCurrentTrackAction->trigger(); } +- +- void Play() { +- MPDStatus * const status = MPDStatus::self(); +- +- if (status->playlistLength() && MPDState_Playing!=status->state()) { +- StdActions::self()->playPauseTrackAction->trigger(); +- } +- } +- ++ void Play(); + void Seek(qlonglong pos) { emit setSeekId(-1, pos/1000000); } + void SetPosition(const QDBusObjectPath &, qlonglong pos) {emit setSeekId(-1, pos/1000000); } + void OpenUri(const QString &) { } +- +- QString PlaybackStatus() { +- switch(MPDStatus::self()->state()) { +- case MPDState_Playing: return QLatin1String("Playing"); +- case MPDState_Paused: return QLatin1String("Paused"); +- default: +- case MPDState_Stopped: return QLatin1String("Stopped"); +- } +- } +- ++ QString PlaybackStatus() const; + QString LoopStatus() { return MPDStatus::self()->repeat() ? QLatin1String("Playlist") : QLatin1String("None"); } + void SetLoopStatus(const QString &s) { emit setRepeat(QLatin1String("None")!=s); } + QVariantMap Metadata() const; +@@ -115,11 +93,11 @@ class Mpris : public QObject + double MinimumRate() const { return 1.0; } + double MaximumRate() const { return 1.0; } + bool CanControl() const { return true; } +- bool CanPlay() const { return MPDState_Playing!=MPDStatus::self()->state() && MPDStatus::self()->playlistLength()>0; } +- bool CanPause() const { return MPDState_Playing==MPDStatus::self()->state(); } +- bool CanSeek() const { return -1!=MPDStatus::self()->songId(); } +- bool CanGoNext() const { return MPDState_Stopped!=MPDStatus::self()->state() && MPDStatus::self()->playlistLength()>1; } +- bool CanGoPrevious() const { return MPDState_Stopped!=MPDStatus::self()->state() && MPDStatus::self()->playlistLength()>1; } ++ bool CanPlay() const { return true; } ++ bool CanPause() const { return true; } ++ bool CanSeek() const { return true; } ++ bool CanGoNext() const { return true; } ++ bool CanGoPrevious() const { return true; } + + // org.mpris.MediaPlayer2 + bool CanQuit() const { return true; } diff --git a/media-sound/cantata/files/cantata-2.0.1-qt5-no-X11.patch b/media-sound/cantata/files/cantata-2.0.1-qt5-no-X11.patch new file mode 100644 index 000000000000..de90cd684509 --- /dev/null +++ b/media-sound/cantata/files/cantata-2.0.1-qt5-no-X11.patch @@ -0,0 +1,14 @@ +diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt +index fcdaf5c..f6160f0 100644 +--- a/support/CMakeLists.txt ++++ b/support/CMakeLists.txt +@@ -89,7 +89,7 @@ if (NOT ENABLE_UBUNTU AND NOT ENABLE_WEB) + + add_library(support STATIC ${SUPPORT_MOC_SRCS} ${SUPPORT_SRCS} ${SUPPORT_UI_HDRS} ${SUPPORT_RC_SRCS}) + +- if (X11_FOUND) ++ if (NOT ENABLE_QT5 AND X11_FOUND) + target_link_libraries(support ${X11_LIBRARIES}) +- endif (X11_FOUND) ++ endif (NOT ENABLE_QT5 AND X11_FOUND) + endif (NOT ENABLE_UBUNTU AND NOT ENABLE_WEB) |