commit:     a6a4c43375a224af0462e0a67b5c2f033f80d260
Author:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 27 11:38:08 2018 +0000
Commit:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
CommitDate: Fri Jul 27 11:38:08 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a6a4c433

kde-plasma/plasma-pa: Don't depend on gconf anymore.

Done through backported upstream patch.

Bug: https://bugs.gentoo.org/658660
Package-Manager: Portage-2.3.43, Repoman-2.3.10

 .../files/plasma-pa-5.13.3-optional_gconf.patch    | 280 +++++++++++++++++++++
 kde-plasma/plasma-pa/plasma-pa-5.13.3-r1.ebuild    |  32 +++
 2 files changed, 312 insertions(+)

diff --git a/kde-plasma/plasma-pa/files/plasma-pa-5.13.3-optional_gconf.patch 
b/kde-plasma/plasma-pa/files/plasma-pa-5.13.3-optional_gconf.patch
new file mode 100644
index 00000000000..f14fd180c24
--- /dev/null
+++ b/kde-plasma/plasma-pa/files/plasma-pa-5.13.3-optional_gconf.patch
@@ -0,0 +1,280 @@
+From c9fae1fb3f8e8a820fd480ce227d7fabf87bd045 Mon Sep 17 00:00:00 2001
+From: David Rosca <[email protected]>
+Date: Tue, 26 Jun 2018 10:56:04 +0200
+Subject: [PATCH] Make GConf optional dependency
+
+When building without GConf, Advanded Output Configuration will be hidden in 
KCM.
+
+BUG: 386665
+FIXED-IN: 5.13.4
+
+Differential Revision: https://phabricator.kde.org/D13734
+---
+ CMakeLists.txt                           |  9 ++++--
+ config.h.cmake                           |  3 ++
+ src/CMakeLists.txt                       | 18 ++++++++----
+ src/kcm/package/contents/ui/Advanced.qml |  5 +++-
+ src/modulemanager.cpp                    | 47 ++++++++++++++++++++++++++------
+ src/modulemanager.h                      |  3 ++
+ 6 files changed, 68 insertions(+), 17 deletions(-)
+ create mode 100644 config.h.cmake
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e494ced..2505696 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -19,8 +19,11 @@ include(KDECompilerSettings NO_POLICY_SCOPE)
+ include(ECMOptionalAddSubdirectory)
+ 
+ include(FindPkgConfig)
+-pkg_check_modules(GCONF REQUIRED gconf-2.0)
+-pkg_check_modules(GOBJECT REQUIRED gobject-2.0)
++pkg_check_modules(GCONF gconf-2.0)
++pkg_check_modules(GOBJECT gobject-2.0)
++if (GCONF_FOUND AND GOBJECT_FOUND)
++    set(HAVE_GCONF TRUE)
++endif()
+ 
+ find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS
+     Core
+@@ -41,6 +44,8 @@ find_package(PulseAudio 5.0.0 REQUIRED)
+ find_package(Canberra REQUIRED)
+ find_package(GLIB2 REQUIRED)
+ 
++configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
++
+ add_subdirectory(applet)
+ add_subdirectory(src)
+ add_subdirectory(data)
+diff --git a/config.h.cmake b/config.h.cmake
+new file mode 100644
+index 0000000..1643e50
+--- /dev/null
++++ b/config.h.cmake
+@@ -0,0 +1,3 @@
++/* config.h.  Generated by cmake from config.h.cmake  */
++
++#cmakedefine01 HAVE_GCONF
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index e6cddfc..09d108c 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -1,5 +1,4 @@
+-include_directories(${PULSEAUDIO_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR}     
${GCONF_INCLUDE_DIRS}
+-    ${GOBJECT_INCLUDE_DIRS})
++include_directories(${PULSEAUDIO_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR})
+ 
+ set(cpp_SRCS
+     card.cpp
+@@ -15,7 +14,6 @@ set(cpp_SRCS
+     sink.cpp
+     sinkinput.cpp
+     modulemanager.cpp
+-    gconfitem.cpp
+     source.cpp
+     sourceoutput.cpp
+     stream.cpp
+@@ -38,6 +36,11 @@ set(qml_SRCS
+ set_property(SOURCE qml/dbus/osdService.xml APPEND PROPERTY CLASSNAME 
OsdServiceInterface)
+ qt5_add_dbus_interface(dbus_SRCS qml/dbus/osdService.xml osdservice)
+ 
++if (HAVE_GCONF)
++    include_directories(${GCONF_INCLUDE_DIRS} ${GOBJECT_INCLUDE_DIRS})
++    set(cpp_SRCS ${cpp_SRCS} gconfitem.cpp)
++endif()
++
+ add_library(plasma-volume-declarative SHARED ${dbus_SRCS} ${cpp_SRCS} 
${qml_SRCS})
+ target_link_libraries(plasma-volume-declarative
+     Qt5::Core
+@@ -47,11 +50,16 @@ target_link_libraries(plasma-volume-declarative
+     KF5::GlobalAccel
+     ${PULSEAUDIO_LIBRARY}
+     ${PULSEAUDIO_MAINLOOP_LIBRARY}
+-    ${GCONF_LDFLAGS}
+-    ${GOBJECT_LDFLAGS}
+     ${CANBERRA_LIBRARIES}
+ )
+ 
++if (HAVE_GCONF)
++    target_link_libraries(plasma-volume-declarative
++        ${GCONF_LDFLAGS}
++        ${GOBJECT_LDFLAGS}
++    )
++endif()
++
+ set(PRIVATE_QML_INSTALL_DIR ${QML_INSTALL_DIR}/org/kde/plasma/private/volume)
+ install(TARGETS plasma-volume-declarative DESTINATION 
${PRIVATE_QML_INSTALL_DIR})
+ install(FILES ${qml_SRCS} DESTINATION ${PRIVATE_QML_INSTALL_DIR})
+diff --git a/src/kcm/package/contents/ui/Advanced.qml 
b/src/kcm/package/contents/ui/Advanced.qml
+index b305cf1..0cd9eb9 100644
+--- a/src/kcm/package/contents/ui/Advanced.qml
++++ b/src/kcm/package/contents/ui/Advanced.qml
+@@ -56,6 +56,7 @@ ScrollView {
+         Header {
+             Layout.fillWidth: true
+             text: i18n("Advanced Output Configuration")
++            visible: moduleManager.settingsSupported
+         }
+ 
+         ModuleManager {
+@@ -71,6 +72,7 @@ ScrollView {
+             checked: moduleManager.combineSinks
+             onCheckedChanged: moduleManager.combineSinks = checked;
+             enabled: moduleManager.loadedModules.indexOf("module-gconf") != -1
++            visible: moduleManager.settingsSupported
+         }
+ 
+         CheckBox {
+@@ -81,6 +83,7 @@ ScrollView {
+             checked: moduleManager.switchOnConnect
+             onCheckedChanged: moduleManager.switchOnConnect = checked;
+             enabled: moduleManager.loadedModules.indexOf("module-gconf") != -1
++            visible: moduleManager.settingsSupported
+         }
+ 
+         Label {
+@@ -88,7 +91,7 @@ ScrollView {
+             enabled: false
+             font.italic: true
+             text: i18n("Requires 'module-gconf' PulseAudio module")
+-            visible: moduleManager.loadedModules.indexOf("module-gconf") == -1
++            visible: moduleManager.settingsSupported && 
moduleManager.loadedModules.indexOf("module-gconf") == -1
+         }
+     }
+ }
+diff --git a/src/modulemanager.cpp b/src/modulemanager.cpp
+index 635adc8..5245ac5 100644
+--- a/src/modulemanager.cpp
++++ b/src/modulemanager.cpp
+@@ -21,20 +21,22 @@
+ 
+ #include "modulemanager.h"
+ #include "module.h"
++#include "../config.h"
+ 
++#if HAVE_GCONF
++#include "gconfitem.h"
+ #define PA_GCONF_ROOT "/system/pulseaudio"
+ #define PA_GCONF_PATH_MODULES PA_GCONF_ROOT"/modules"
+-
+-#include "gconfitem.h"
++#endif
+ 
+ #include <QTimer>
+ 
+ namespace QPulseAudio
+ {
+ 
++#if HAVE_GCONF
+ class GConfModule : public GConfItem
+ {
+-    Q_OBJECT
+ public:
+     GConfModule(const QString &configName, const QString &moduleName, QObject 
*parent);
+     bool isEnabled() const;
+@@ -67,17 +69,21 @@ void GConfModule::setEnabled(bool enabled, const QVariant 
&args)
+     }
+     set(QStringLiteral("locked"), false);
+ }
++#endif
+ 
+ 
+ ModuleManager::ModuleManager(QObject *parent) :
+-    QObject(parent),
+-    m_combineSinks(new GConfModule(QStringLiteral("combine"), 
QStringLiteral("module-combine"), this)),
+-    m_switchOnConnect(new GConfModule(QStringLiteral("switch-on-connect"), 
QStringLiteral("module-switch-on-connect"), this)),
+-    m_deviceManager(new GConfModule(QStringLiteral("device-manager"), 
QStringLiteral("module-device-manager"), this))
++    QObject(parent)
+ {
++#if HAVE_GCONF
++    m_combineSinks = new GConfModule(QStringLiteral("combine"), 
QStringLiteral("module-combine"), this);
++    m_switchOnConnect = new GConfModule(QStringLiteral("switch-on-connect"), 
QStringLiteral("module-switch-on-connect"), this);
++    m_deviceManager = new GConfModule(QStringLiteral("device-manager"), 
QStringLiteral("module-device-manager"), this);
++
+     connect(m_combineSinks, &GConfItem::subtreeChanged, this, 
&ModuleManager::combineSinksChanged);
+     connect(m_switchOnConnect, &GConfItem::subtreeChanged, this, 
&ModuleManager::switchOnConnectChanged);
+     connect(m_deviceManager, &GConfItem::subtreeChanged, this, 
&ModuleManager::switchOnConnectChanged);
++#endif
+ 
+     QTimer *updateModulesTimer = new QTimer(this);
+     updateModulesTimer->setInterval(500);
+@@ -92,14 +98,31 @@ ModuleManager::~ModuleManager()
+ {
+ };
+ 
++bool ModuleManager::settingsSupported() const
++{
++#if HAVE_GCONF
++    return true;
++#else
++    return false;
++#endif
++}
++
+ bool ModuleManager::combineSinks() const
+ {
++#if HAVE_GCONF
+     return m_combineSinks->isEnabled();
++#else
++    return false;
++#endif
+ }
+ 
+ void ModuleManager::setCombineSinks(bool combineSinks)
+ {
++#if HAVE_GCONF
+     m_combineSinks->setEnabled(combineSinks);
++#else
++    Q_UNUSED(combineSinks)
++#endif
+ }
+ 
+ bool ModuleManager::switchOnConnect() const
+@@ -109,13 +132,21 @@ bool ModuleManager::switchOnConnect() const
+     //Note on the first run m_deviceManager will appear to be disabled even 
though it's actually running
+     //because there is no gconf entry, however m_switchOnConnect will only 
exist if set by Plasma PA
+     //hence only check this entry
++#if HAVE_GCONF
+     return m_switchOnConnect->isEnabled() ;
++#else
++    return false;
++#endif
+ }
+ 
+ void ModuleManager::setSwitchOnConnect(bool switchOnConnect)
+ {
++#if HAVE_GCONF
+     m_deviceManager->setEnabled(!switchOnConnect);
+     m_switchOnConnect->setEnabled(switchOnConnect);
++#else
++    Q_UNUSED(switchOnConnect)
++#endif
+ }
+ 
+ QStringList ModuleManager::loadedModules() const
+@@ -134,5 +165,3 @@ void ModuleManager::updateLoadedModules()
+ }
+ 
+ }
+-
+-#include "modulemanager.moc"
+diff --git a/src/modulemanager.h b/src/modulemanager.h
+index b8fcd0b..8108fe0 100644
+--- a/src/modulemanager.h
++++ b/src/modulemanager.h
+@@ -38,12 +38,15 @@ class GConfModule;
+ class ModuleManager : public QObject
+ {
+     Q_OBJECT
++    Q_PROPERTY(bool settingsSupported READ settingsSupported CONSTANT)
+     Q_PROPERTY(bool combineSinks READ combineSinks WRITE setCombineSinks 
NOTIFY combineSinksChanged)
+     Q_PROPERTY(bool switchOnConnect READ switchOnConnect WRITE 
setSwitchOnConnect NOTIFY switchOnConnectChanged)
+     Q_PROPERTY(QStringList loadedModules READ loadedModules NOTIFY 
loadedModulesChanged)
+ public:
+     ModuleManager(QObject *parent = nullptr);
+     ~ModuleManager();
++
++    bool settingsSupported() const;
+     bool combineSinks() const;
+     void setCombineSinks(bool combineSinks);
+     bool switchOnConnect() const;

diff --git a/kde-plasma/plasma-pa/plasma-pa-5.13.3-r1.ebuild 
b/kde-plasma/plasma-pa/plasma-pa-5.13.3-r1.ebuild
new file mode 100644
index 00000000000..12b95df456c
--- /dev/null
+++ b/kde-plasma/plasma-pa/plasma-pa-5.13.3-r1.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+KDE_HANDBOOK="forceoptional"
+inherit kde5
+
+DESCRIPTION="Plasma applet for audio volume management using PulseAudio"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE=""
+
+DEPEND="
+       $(add_frameworks_dep kcoreaddons)
+       $(add_frameworks_dep kdeclarative)
+       $(add_frameworks_dep kglobalaccel)
+       $(add_frameworks_dep ki18n)
+       $(add_frameworks_dep plasma)
+       $(add_qt_dep qtdbus)
+       $(add_qt_dep qtdeclarative)
+       $(add_qt_dep qtgui)
+       $(add_qt_dep qtwidgets)
+       media-libs/libcanberra
+       media-sound/pulseaudio
+"
+
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+       "${FILESDIR}/${P}-wrong-port-avail.patch"
+       "${FILESDIR}/${P}-optional_gconf.patch"
+)

Reply via email to