Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=kde5.git;a=commitdiff;h=704fb28b3dc7dd556b3968c67ae2bb647a19d841

commit 704fb28b3dc7dd556b3968c67ae2bb647a19d841
Author: crazy <[email protected]>
Date:   Mon Feb 20 20:08:12 2017 +0100

polkit-qt5-1-0.112.0-7-x86_64
* backport stuff from git
* fixes crash in org_kde_powerdevil.. that's bc newer qt5
* we get now without the fix:
QDBusArgument: read from a write-only object and so it will try to do some NULL 
events

diff --git a/source/xlib/polkit-qt5-1/FrugalBuild 
b/source/xlib/polkit-qt5-1/FrugalBuild
index b0982bc..3d01674 100644
--- a/source/xlib/polkit-qt5-1/FrugalBuild
+++ b/source/xlib/polkit-qt5-1/FrugalBuild
@@ -3,7 +3,7 @@

pkgname=polkit-qt5-1
pkgver=0.112.0
-pkgrel=6
+pkgrel=7
pkgdesc='A library that allows developers to access Polikit API with a nice 
Qt-style API'
archs=("x86_64")
groups=('xlib')
@@ -14,10 +14,12 @@ _F_kde_no_auto_docs=1
_F_kde_no_compiletime=1
_F_kde_ext=".tar.bz2"
Finclude kf5
+source+=(master.patch)
depends=("qt5-base>=$_F_kdever_qt5" 'libgcc>=6.2.1-5' 'polkit>=0.113-9' 
'libice>=1.0.9-3' \
'libxrender>=0.9.9-5' 'libxext>=1.3.3-3' 'libuuid>=2.28.2-2')
up2date="Flasttar $_F_kde_mirror/$_F_kde_dirname"
-sha1sums=('042b8a42e88bd578c27600e9b70c4e142a39da91')
+sha1sums=('042b8a42e88bd578c27600e9b70c4e142a39da91' \
+          'eafde218af8581bebc18041de99672b565a82baa')
CXXFLAGS+=" -Wno-deprecated-declarations"

replaces=("polkit-qt-1")
diff --git a/source/xlib/polkit-qt5-1/master.patch 
b/source/xlib/polkit-qt5-1/master.patch
new file mode 100644
index 0000000..f7dbc49
--- /dev/null
+++ b/source/xlib/polkit-qt5-1/master.patch
@@ -0,0 +1,291 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index bb91bde..13d9dbd 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -33,9 +33,9 @@ if(USE_QT5)
+     message(STATUS "Using Qt 5")
+
+     set(REQUIRED_QT_VERSION 5.1.0)
++    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+
+     find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS Core DBus 
Widgets)
+-    add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0)
+
+     set(POLKITQT-1_PCNAME "polkit-qt5-1")
+     set(POLKITQT-1_CORE_PCNAME "polkit-qt5-core-1")
+@@ -101,6 +101,7 @@ include_directories(
+     ${CMAKE_CURRENT_SOURCE_DIR}
+     ${CMAKE_CURRENT_SOURCE_DIR}/core
+     ${CMAKE_CURRENT_SOURCE_DIR}/includes
++    ${CMAKE_CURRENT_BINARY_DIR}
+ )
+ if(NOT USE_QT5)
+     include_directories(
+@@ -113,6 +114,7 @@ set(CMAKE_REQUIRED_INCLUDES ${POLKIT_INCLUDE_DIR} 
${POLKIT_AGENT_INCLUDE_DIR})
+ set(CMAKE_REQUIRED_LIBRARIES ${POLKIT_LIBRARIES} ${POLKIT_AGENT_LIBRARY})
+ check_function_exists(polkit_agent_listener_register 
HAVE_POLKIT_AGENT_LISTENER_REGISTER)
+ check_function_exists(polkit_authority_get_sync 
HAVE_POLKIT_AUTHORITY_GET_SYNC)
++check_function_exists(polkit_system_bus_name_get_user_sync 
HAVE_POLKIT_SYSTEM_BUS_NAME_GET_USER_SYNC)
+
+ if (NOT HAVE_POLKIT_AGENT_LISTENER_REGISTER OR NOT 
HAVE_POLKIT_AUTHORITY_GET_SYNC)
+     message(STATUS "You have an older polkit-1 version: Polkit-Qt-1 will be 
built in compatibility mode")
+@@ -134,6 +136,7 @@ set(POLKITQT-1_LIBRARY_VERSION 
"${POLKITQT-1_ABI_VERSION}.${POLKITQT-1_VERSION_M
+ set(POLKITQT-1_LIB_NAMESPACE ${POLKITQT-1_CAMEL_NAME})
+
+ configure_file(polkitqt1-version.h.cmake 
${CMAKE_CURRENT_BINARY_DIR}/polkitqt1-version.h)
++configure_file(polkitqt1-config.h.cmake 
${CMAKE_CURRENT_BINARY_DIR}/polkitqt1-config.h)
+
+ install(FILES
+     gui/polkitqt1-gui-action.h
+diff --git a/agent/polkitqt1-agent-listener.cpp 
b/agent/polkitqt1-agent-listener.cpp
+index 38744ec..5efc091 100644
+--- a/agent/polkitqt1-agent-listener.cpp
++++ b/agent/polkitqt1-agent-listener.cpp
+@@ -94,7 +94,7 @@ bool Listener::registerListener(const PolkitQt1::Subject 
&subject, const QString
+     bool r = polkit_agent_register_listener(d->listener,
+ #endif
+                                             subject.subject(),
+-                                            objectPath.toAscii().data(),
++                                            objectPath.toLatin1().data(),
+ #ifndef POLKIT_QT_1_COMPATIBILITY_MODE
+                                             NULL,
+ #endif
+diff --git a/agent/polkitqtlistener.cpp b/agent/polkitqtlistener.cpp
+index dc5fdda..59f8d5d 100644
+--- a/agent/polkitqtlistener.cpp
++++ b/agent/polkitqtlistener.cpp
+@@ -59,7 +59,7 @@ static gboolean 
polkit_qt_listener_initiate_authentication_finish(PolkitAgentLis
+         GAsyncResult         *res,
+         GError              **error);
+
+-G_DEFINE_TYPE(PolkitQtListener, polkit_qt_listener, 
POLKIT_AGENT_TYPE_LISTENER);
++G_DEFINE_TYPE(PolkitQtListener, polkit_qt_listener, 
POLKIT_AGENT_TYPE_LISTENER)
+
+ static void polkit_qt_listener_init(PolkitQtListener *listener)
+ {
+diff --git a/core/polkitqt1-authority.cpp b/core/polkitqt1-authority.cpp
+index dd014cf..886fb41 100644
+--- a/core/polkitqt1-authority.cpp
++++ b/core/polkitqt1-authority.cpp
+@@ -83,7 +83,10 @@ public:
+     // Polkit will return NULL on failures, hence we use it instead of 0
+     Private(Authority *qq) : q(qq)
+             , pkAuthority(NULL)
+-            , m_hasError(false) {}
++            , m_hasError(false)
++            , m_systemBus(0)
++    {
++    }
+
+     ~Private();
+
+@@ -103,6 +106,13 @@ public:
+     bool m_hasError;
+     Authority::ErrorCode m_lastError;
+     QString m_errorDetails;
++    // Local system bus. QDBusConnection::systemBus() may only be savely used
++    // inside a QCoreApplication scope as for example destruction of connected
++    // objects need to happen before the bus disappears. Since this class 
however
++    // is a global static and systemBus() internally is a global static we
++    // cannot assure destruction order. Instead we create a local copy of the
++    // global systemBus instance so we can make life time to our needs.
++    // This prevents crashes when cleaning up the global statics.
+     QDBusConnection *m_systemBus;
+     GCancellable *m_checkAuthorizationCancellable,
+     *m_enumerateActionsCancellable,
+@@ -127,6 +137,7 @@ public:
+
+ Authority::Private::~Private()
+ {
++    delete m_systemBus;
+     g_object_unref(m_checkAuthorizationCancellable);
+     g_object_unref(m_enumerateActionsCancellable);
+     g_object_unref(m_registerAuthenticationAgentCancellable);
+@@ -170,6 +181,9 @@ void Authority::Private::init()
+
+     g_type_init();
+
++    m_systemBus = new 
QDBusConnection(QDBusConnection::connectToBus(QDBusConnection::SystemBus,
++                                                                    
QString("polkit_qt_system_bus")));
++
+     m_checkAuthorizationCancellable = g_cancellable_new();
+     m_enumerateActionsCancellable = g_cancellable_new();
+     m_registerAuthenticationAgentCancellable = g_cancellable_new();
+@@ -219,11 +233,17 @@ void Authority::Private::init()
+
+     // then we need to extract all seats from ConsoleKit
+     QDBusMessage msg = QDBusMessage::createMethodCall(consoleKitService, 
consoleKitManagerPath, consoleKitManagerInterface, "GetSeats");
+-    msg = QDBusConnection::systemBus().call(msg);
+-    if (!msg.arguments().isEmpty()) {
++    const QDBusMessage reply = m_systemBus->call(msg);
++
++    if (reply.type() != QDBusMessage::ErrorMessage && 
!reply.arguments().isEmpty()) {
+         // this method returns a list with present seats
+-        QList<QString> seats;
+-        qVariantValue<QDBusArgument> (msg.arguments()[0]) >> seats;
++        QStringList seats;
++        QVariant arg = reply.arguments()[0];
++        if (arg.type() == qMetaTypeId<QDBusArgument>()) {
++            arg.value<QDBusArgument>() >> seats;
++        } else {
++            seats = arg.toStringList();
++        }
+         // it can be multiple seats present so connect all their signals
+         Q_FOREACH(const QString &seat, seats) {
+             seatSignalsConnect(seat);
+@@ -256,8 +276,7 @@ void Authority::Private::seatSignalsConnect(const QString 
&seat)
+ void Authority::Private::dbusSignalAdd(const QString &service, const QString 
&path, const QString &interface, const QString &name)
+ {
+     // FIXME: This code seems to be nonfunctional - it needs to be fixed 
somewhere (is it Qt BUG?)
+-    QDBusConnection::systemBus().connect(service, path, interface, name,
+-                                         q, SLOT(dbusFilter(QDBusMessage)));
++    m_systemBus->connect(service, path, interface, name, q, 
SLOT(dbusFilter(QDBusMessage)));
+ }
+
+ void Authority::Private::dbusFilter(const QDBusMessage &message)
+@@ -267,7 +286,7 @@ void Authority::Private::dbusFilter(const QDBusMessage 
&message)
+
+         // TODO: Test this with the multiseat support
+         if (message.member() == "SeatAdded") {
+-            seatSignalsConnect(qVariantValue<QDBusObjectPath> 
(message.arguments()[0]).path());
++            
seatSignalsConnect(message.arguments()[0].value<QDBusObjectPath>().path());
+         }
+     }
+ }
+@@ -323,7 +342,7 @@ Authority::Result Authority::checkAuthorizationSync(const 
QString &actionId, con
+
+     pk_result = polkit_authority_check_authorization_sync(d->pkAuthority,
+                 subject.subject(),
+-                actionId.toAscii().data(),
++                actionId.toLatin1().data(),
+                 NULL,
+                 (PolkitCheckAuthorizationFlags)(int)flags,
+                 NULL,
+@@ -358,7 +377,7 @@ void Authority::checkAuthorization(const QString 
&actionId, const Subject &subje
+
+     polkit_authority_check_authorization(d->pkAuthority,
+                                          subject.subject(),
+-                                         actionId.toAscii().data(),
++                                         actionId.toLatin1().data(),
+                                          NULL,
+                                          
(PolkitCheckAuthorizationFlags)(int)flags,
+                                          d->m_checkAuthorizationCancellable,
+@@ -470,8 +489,8 @@ bool Authority::registerAuthenticationAgentSync(const 
Subject &subject, const QS
+     }
+
+     result = 
polkit_authority_register_authentication_agent_sync(d->pkAuthority,
+-             subject.subject(), locale.toAscii().data(),
+-             objectPath.toAscii().data(), NULL, &error);
++             subject.subject(), locale.toLatin1().data(),
++             objectPath.toLatin1().data(), NULL, &error);
+
+     if (error) {
+         d->setError(E_RegisterFailed, error->message);
+@@ -495,8 +514,8 @@ void Authority::registerAuthenticationAgent(const Subject 
&subject, const QStrin
+
+     polkit_authority_register_authentication_agent(d->pkAuthority,
+             subject.subject(),
+-            locale.toAscii().data(),
+-            objectPath.toAscii().data(),
++            locale.toLatin1().data(),
++            objectPath.toLatin1().data(),
+             d->m_registerAuthenticationAgentCancellable,
+             d->registerAuthenticationAgentCallback,
+             this);
+diff --git a/core/polkitqt1-subject.cpp b/core/polkitqt1-subject.cpp
+index f0d69c6..ea10828 100644
+--- a/core/polkitqt1-subject.cpp
++++ b/core/polkitqt1-subject.cpp
+@@ -19,6 +19,8 @@
+  */
+
+ #include "polkitqt1-subject.h"
++#include "polkitqt1-identity.h"
++#include "polkitqt1-config.h"
+
+ #include <QtCore/QDebug>
+ #include <polkit/polkit.h>
+@@ -180,6 +182,16 @@ void SystemBusNameSubject::setName(const QString &name)
+     polkit_system_bus_name_set_name((PolkitSystemBusName *) subject(), 
name.toUtf8().data());
+ }
+
++UnixUserIdentity SystemBusNameSubject::user()
++{
++#if HAVE_POLKIT_SYSTEM_BUS_NAME_GET_USER_SYNC
++    return 
UnixUserIdentity(polkit_system_bus_name_get_user_sync((PolkitSystemBusName *) 
subject(), NULL, NULL));
++#else
++    qWarning("Polkit is too old, returning invalid user from 
SystemBusNameSubject::user()!");
++    return UnixUserIdentity();
++#endif
++}
++
+ // ----- SystemSession
+ UnixSessionSubject::UnixSessionSubject(const QString &sessionId)
+         : Subject()
+diff --git a/core/polkitqt1-subject.h b/core/polkitqt1-subject.h
+index 4c7a22b..01323a2 100644
+--- a/core/polkitqt1-subject.h
++++ b/core/polkitqt1-subject.h
+@@ -40,6 +40,8 @@ typedef struct _PolkitSystemBusName PolkitSystemBusName;
+ namespace PolkitQt1
+ {
+
++class UnixUserIdentity;
++
+ /**
+  * \class Subject polkitqt1-subject.h Subject
+  * \author Jaroslav Reznik <[email protected]>
+@@ -208,6 +210,15 @@ public:
+     * \param name System bus name.
+     */
+     void setName(const QString &name);
++
++    /**
++     * Returns the UnixUserIdentity for this subject.
++     *
++     * \note This can be an invalid UnixUserIdentity so be sure to check 
before using it
++     *
++     * \since 0.113
++     **/
++    UnixUserIdentity user();
+ };
+
+ /**
+diff --git a/polkitqt1-config.h.cmake b/polkitqt1-config.h.cmake
+new file mode 100644
+index 0000000..fed40a9
+--- /dev/null
++++ b/polkitqt1-config.h.cmake
+@@ -0,0 +1 @@
++#cmakedefine01 HAVE_POLKIT_SYSTEM_BUS_NAME_GET_USER_SYNC
+diff --git a/test/test.cpp b/test/test.cpp
+index afb7f64..2c7db28 100644
+--- a/test/test.cpp
++++ b/test/test.cpp
+@@ -46,7 +46,7 @@ void TestAuth::test_Auth_checkAuthorization()
+     // Test if the signal was emitted
+     QCOMPARE(spy.count(), 1);
+     // Test the result
+-    result = qVariantValue<PolkitQt1::Authority::Result> (spy.takeFirst()[0]);
++    result = spy.takeFirst()[0].value<PolkitQt1::Authority::Result>();
+     QCOMPARE(result, Authority::No);
+     QVERIFY(!authority->hasError());
+     spy.clear();
+@@ -92,7 +92,7 @@ void TestAuth::test_Auth_enumerateActions()
+     Authority::instance()->enumerateActions();
+     wait();
+     QCOMPARE(spy.count(), 1);
+-    list = qVariantValue<PolkitQt1::ActionDescription::List> 
(spy.takeFirst()[0]);
++    list = spy.takeFirst()[0].value<PolkitQt1::ActionDescription::List>();
+     QVERIFY(!Authority::instance()->hasError());
+     Q_FOREACH(const ActionDescription &ad, list) {
+         if ((ad.actionId() == "org.qt.policykit.examples.kick") ||
+@@ -154,7 +154,7 @@ void TestAuth::test_Authority()
+                        "OpenSession");
+     QDBusMessage reply = QDBusConnection::systemBus().call(msg);
+     QString cookie;
+-    cookie = qVariantValue<QString> (reply.arguments()[0]);
++    cookie = reply.arguments()[0].value<QString>();
+
+
+     msg = QDBusMessage::createMethodCall("org.freedesktop.ConsoleKit",
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to