author | Antonio Rojas
<arojas@archlinux.org> 2018-08-24 07:08:05 UTC |
committer | Antonio Rojas
<arojas@archlinux.org> 2018-08-24 07:08:05 UTC |
parent | b11b721de24689e279538b420090d22173fc16f0 |
PKGBUILD | +8 | -24 |
systembus-usage.patch | +0 | -79 |
diff --git a/PKGBUILD b/PKGBUILD index 6c69727..fce1461 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,51 +1,35 @@ # $Id: PKGBUILD 102633 2010-12-09 08:40:59Z andrea $ -# Maintainer: Andrea Scarpino <andrea@archlinux.org> +# Maintainer: Antonio Rojas <arojas@archlinux.org> +# Contributor: Andrea Scarpino <andrea@archlinux.org> # Contributor: Pierre Schmitz <pierre@archlinux.de> pkgbase=polkit-qt -pkgname=(polkit-qt4 polkit-qt5) +pkgname=(polkit-qt5) pkgver=0.112.0+git20180107 pkgrel=1 pkgdesc='A library that allows developers to access PolicyKit API with a nice Qt-style API' arch=(x86_64) url='https://www.kde.org/' license=(LGPL) -makedepends=(cmake polkit qt4 qt5-base git) +depends=(polkit qt5-base) +makedepends=(cmake git) #source=("http://download.kde.org/stable/apps/KDE4.x/admin/${pkgbase}-1-${pkgver}.tar.bz2") source=("git+https://anongit.kde.org/polkit-qt-1.git#commit=cbecf60ac7b5c17cf37503d6675bf5542efbab29") sha256sums=('SKIP') prepare() { - mkdir build{,-qt5} + mkdir -p build } build() { cd build - cmake ../${pkgbase}-1 \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DLIB_DESTINATION=/usr/lib \ - -DUSE_QT4=ON - make - - cd ../build-qt5 - cmake ../${pkgbase}-1 \ - -DCMAKE_BUILD_TYPE=Release \ + cmake ../$pkgbase-1 \ -DCMAKE_INSTALL_PREFIX=/usr \ -DLIB_DESTINATION=/usr/lib make } -package_polkit-qt4() { - depends=(polkit qt4) - - cd build - make DESTDIR="$pkgdir" install -} - package_polkit-qt5() { - depends=(polkit qt5-base) - - cd build-qt5 + cd build make DESTDIR="$pkgdir" install } diff --git a/systembus-usage.patch b/systembus-usage.patch deleted file mode 100644 index 0fd0fa5..0000000 --- a/systembus-usage.patch +++ /dev/null @@ -1,79 +0,0 @@ -commit 88c6e9334c8440721189ef7d020fa94d47f30f8b -Author: Harald Sitter <sitter@kde.org> -Date: Fri Aug 1 16:34:03 2014 +0200 - - do not use global static systembus instance - - global static destruction order cannot be controlled and we need our bus - to disconnect from the consolekit signals, so use our own bus instance - to connect to systembus signals - - REVIEW: 119545 - -diff --git a/core/polkitqt1-authority.cpp b/core/polkitqt1-authority.cpp -index dd014cf..f25354d 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,7 +233,7 @@ 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); -+ msg = m_systemBus->call(msg); - if (!msg.arguments().isEmpty()) { - // this method returns a list with present seats - QList<QString> seats; -@@ -256,8 +270,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)