commit:     e8596650f8f8d78459fdd3ec99a4f6dd554c8795
Author:     Karol Herbst <git <AT> karolherbst <DOT> de>
AuthorDate: Wed Nov 19 22:35:56 2014 +0000
Commit:     Michael Palimaka <kensington <AT> gentoo <DOT> org>
CommitDate: Mon Dec  1 12:38:28 2014 +0000
URL:        http://sources.gentoo.org/gitweb/?p=proj/kde.git;a=commit;h=e8596650

[net-libs/signond] added

---
 net-libs/signond/files/signond-8.56-to-8.57.patch | 275 ++++++++++++++++++++++
 net-libs/signond/metadata.xml                     |   5 +
 net-libs/signond/signond-8.57.ebuild              |  44 ++++
 profiles/package.mask/signond                     |   1 +
 4 files changed, 325 insertions(+)

diff --git a/net-libs/signond/files/signond-8.56-to-8.57.patch 
b/net-libs/signond/files/signond-8.56-to-8.57.patch
new file mode 100644
index 0000000..23c7d25
--- /dev/null
+++ b/net-libs/signond/files/signond-8.56-to-8.57.patch
@@ -0,0 +1,275 @@
+diff --git a/common-project-config.pri b/common-project-config.pri
+index 545f1c6..505baa9 100644
+--- a/common-project-config.pri
++++ b/common-project-config.pri
+@@ -36,9 +36,11 @@ DEFINES += NO_SIGNON_USER
+ # Qt4/Qt5 common checks
+ greaterThan(QT_MAJOR_VERSION, 4) {
+     LIBSIGNON = libsignon-qt5
++    CMAKE_BASENAME = SignOnQt5
+     LIBQTCORE = Qt5Core
+ } else {
+     LIBSIGNON = libsignon-qt
++    CMAKE_BASENAME = SignOnQt
+     LIBQTCORE = QtCore
+ }
+ 
+@@ -84,7 +86,7 @@ isEmpty( LIBDIR ) {
+ }
+ 
+ isEmpty ( CMAKE_CONFIG_PATH ) {
+-    CMAKE_CONFIG_PATH = $${INSTALL_LIBDIR}/cmake/SignOnQt/
++    CMAKE_CONFIG_PATH = $${INSTALL_LIBDIR}/cmake/$${CMAKE_BASENAME}
+     message("====")
+     message("==== NOTE: To override the cmake module installation path run: 
`qmake CMAKE_CONFIG_PATH=/custom/path'")
+     message("==== (current installation path is `$${CMAKE_CONFIG_PATH}')")
+diff --git a/common-vars.pri b/common-vars.pri
+index d91831d..c2b8ef3 100644
+--- a/common-vars.pri
++++ b/common-vars.pri
+@@ -14,7 +14,7 @@ PROJECT_NAME = signon
+ # Project version
+ # remember to update debian/* files if you changes this
+ #-----------------------------------------------------------------------------
+-PROJECT_VERSION = 8.56
++PROJECT_VERSION = 8.57
+ 
+ #-----------------------------------------------------------------------------
+ # Library version
+diff --git a/lib/SignOn/SignOnQt5Config.cmake.in 
b/lib/SignOn/SignOnQt5Config.cmake.in
+new file mode 100644
+index 0000000..523fffb
+--- /dev/null
++++ b/lib/SignOn/SignOnQt5Config.cmake.in
+@@ -0,0 +1,7 @@
++#  SIGNONQT_INCLUDE_DIRS - The libsignon-qt include directories
++#  SIGNONQT_LIBRARIES - The libraries needed to use libsignon-qt
++#  SIGNONQT_LIBRARIES_STATIC - The static version of libsignon-qt
++
++set(SIGNONQT_LIBRARIES $${INSTALL_LIBDIR}/lib$${TARGET}.so)
++set(SIGNONQT_LIBRARIES_STATIC $${INSTALL_LIBDIR}/lib$${TARGET}.a)
++set(SIGNONQT_INCLUDE_DIRS $${INSTALL_PREFIX}/include/$${TARGET})
+\ No newline at end of file
+diff --git a/lib/SignOn/SignOnQt5ConfigVersion.cmake.in 
b/lib/SignOn/SignOnQt5ConfigVersion.cmake.in
+new file mode 100644
+index 0000000..d086b47
+--- /dev/null
++++ b/lib/SignOn/SignOnQt5ConfigVersion.cmake.in
+@@ -0,0 +1,10 @@
++set(PACKAGE_VERSION $${PROJECT_VERSION})
++
++if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" )
++   set(PACKAGE_VERSION_COMPATIBLE FALSE)
++else("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" )
++   set(PACKAGE_VERSION_COMPATIBLE TRUE)
++   if( "${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}")
++      set(PACKAGE_VERSION_EXACT TRUE)
++   endif( "${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}")
++endif("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" )
+\ No newline at end of file
+diff --git a/lib/SignOn/connection-manager.cpp 
b/lib/SignOn/connection-manager.cpp
+index 62b7dd7..d08edb6 100644
+--- a/lib/SignOn/connection-manager.cpp
++++ b/lib/SignOn/connection-manager.cpp
+@@ -103,7 +103,7 @@ ConnectionManager::setupSocketConnection()
+     if (!connection.isConnected()) {
+         QDBusError error = connection.lastError();
+         QString name = error.name();
+-        BLAME() << "p2p error:" << error << error.type();
++        TRACE() << "p2p error:" << error << error.type();
+         if (name == QLatin1String("org.freedesktop.DBus.Error.FileNotFound") 
&&
+             m_serviceStatus != ServiceActivated) {
+             return SocketConnectionNoService;
+diff --git a/lib/SignOn/libsignon-qt.pri b/lib/SignOn/libsignon-qt.pri
+index 7f6a0dc..0356509 100644
+--- a/lib/SignOn/libsignon-qt.pri
++++ b/lib/SignOn/libsignon-qt.pri
+@@ -73,10 +73,10 @@ pkgconfig.files = lib$${TARGET}.pc
+ include($${TOP_SRC_DIR}/common-pkgconfig.pri)
+ INSTALLS += pkgconfig
+ 
+-QMAKE_SUBSTITUTES += SignOnQtConfig.cmake.in \
+-    SignOnQtConfigVersion.cmake.in
+-cmake_modules.files = SignOnQtConfig.cmake \
+-    SignOnQtConfigVersion.cmake
++QMAKE_SUBSTITUTES += $${CMAKE_BASENAME}Config.cmake.in \
++    $${CMAKE_BASENAME}ConfigVersion.cmake.in
++cmake_modules.files = $${CMAKE_BASENAME}Config.cmake \
++    $${CMAKE_BASENAME}ConfigVersion.cmake
+ cmake_modules.path = $${CMAKE_CONFIG_PATH}
+ 
+-INSTALLS += cmake_modules
+\ No newline at end of file
++INSTALLS += cmake_modules
+diff --git a/lib/plugins/signon-plugins-common/SignOn/blobiohandler.cpp 
b/lib/plugins/signon-plugins-common/SignOn/blobiohandler.cpp
+index a1022cc..bb00e7d 100644
+--- a/lib/plugins/signon-plugins-common/SignOn/blobiohandler.cpp
++++ b/lib/plugins/signon-plugins-common/SignOn/blobiohandler.cpp
+@@ -137,8 +137,9 @@ QVariantMap expandDBusArgumentValue(const QVariant &value, 
bool *success)
+     // first, convert the QDBusArgument to a map
+     QDBusArgument dbusValue = value.value<QDBusArgument>();
+     QVariantMap converted;
+-    if (dbusValue.currentType() == QDBusArgument::MapType) {
+-        //Assume that all maps are a{sv}
++    if (dbusValue.currentType() == QDBusArgument::MapType &&
++        // We only care about a{sv}
++        dbusValue.currentSignature() == "a{sv}") {
+         converted = qdbus_cast<QVariantMap>(dbusValue);
+     } else {
+         *success = false;
+@@ -152,7 +153,7 @@ QVariantMap expandDBusArgumentValue(const QVariant &value, 
bool *success)
+     for (i = converted.constBegin(); i != converted.constEnd(); ++i) {
+         if (qstrcmp(i.value().typeName(), "QDBusArgument") == 0) {
+             QVariantMap convertedValue = expandDBusArgumentValue(i.value(), 
success);
+-            if (success == false) {
++            if (*success == false) {
+                 //bail out to prevent error in serialization
+                 return QVariantMap();
+             }
+diff --git a/lib/plugins/signon-plugins.pro b/lib/plugins/signon-plugins.pro
+index 5a96a4f..bca4975 100644
+--- a/lib/plugins/signon-plugins.pro
++++ b/lib/plugins/signon-plugins.pro
+@@ -5,8 +5,6 @@ include( ../../common-project-config.pri )
+ include($${TOP_SRC_DIR}/common-installs-config.pri)
+ include($${TOP_SRC_DIR}/common-vars.pri)
+ 
+-CONFIG += static
+-
+ HEADERS = \
+     SignOn/authpluginif.h \
+     SignOn/uisessiondata.h \
+diff --git a/src/remotepluginprocess/remotepluginprocess.pro 
b/src/remotepluginprocess/remotepluginprocess.pro
+index d2112f5..fa7aabb 100644
+--- a/src/remotepluginprocess/remotepluginprocess.pro
++++ b/src/remotepluginprocess/remotepluginprocess.pro
+@@ -32,9 +32,12 @@ system(pkg-config --exists libproxy-1.0) {
+ }
+ 
+ QMAKE_LIBDIR += \
+-    $${TOP_BUILD_DIR}/lib/plugins/signon-plugins-common
++    $${TOP_BUILD_DIR}/lib/plugins/signon-plugins-common \
++    $${TOP_BUILD_DIR}/lib/plugins
+ 
+-LIBS += -lsignon-plugins-common
++LIBS += \
++    -lsignon-plugins-common \
++    -lsignon-plugins
+ 
+ QMAKE_CXXFLAGS += -fno-exceptions \
+                   -fno-rtti
+diff --git a/src/signond/credentialsdb.cpp b/src/signond/credentialsdb.cpp
+index a33667d..ea1e398 100644
+--- a/src/signond/credentialsdb.cpp
++++ b/src/signond/credentialsdb.cpp
+@@ -1432,6 +1432,8 @@ quint32 CredentialsDB::updateCredentials(const 
SignonIdentityInfo &info)
+         }
+     }
+ 
++    Q_EMIT credentialsUpdated(id);
++
+     return id;
+ }
+ 
+diff --git a/src/signond/credentialsdb.h b/src/signond/credentialsdb.h
+index 5e6e7ac..cc22b03 100644
+--- a/src/signond/credentialsdb.h
++++ b/src/signond/credentialsdb.h
+@@ -134,6 +134,9 @@ public:
+     QStringList references(const quint32 id,
+                            const QString &token = QString());
+ 
++Q_SIGNALS:
++    void credentialsUpdated(quint32 id);
++
+ private:
+     SignOn::AbstractSecretsStorage *secretsStorage;
+     SecretsCache *m_secretsCache;
+diff --git a/src/signond/signonidentity.cpp b/src/signond/signonidentity.cpp
+index 958fb42..074273f 100644
+--- a/src/signond/signonidentity.cpp
++++ b/src/signond/signonidentity.cpp
+@@ -103,6 +103,12 @@ SignonIdentity::SignonIdentity(quint32 id, int timeout,
+                                      SIGNON_UI_DAEMON_OBJECTPATH,
+                                      QDBusConnection::sessionBus(),
+                                      this);
++
++    /* Watch for credential updates happening outside of this object (this can
++     * happen on request of authentication plugins) */
++    CredentialsDB *db = CredentialsAccessManager::instance()->credentialsDB();
++    QObject::connect(db, SIGNAL(credentialsUpdated(quint32)),
++                     this, SLOT(onCredentialsUpdated(quint32)));
+ }
+ 
+ SignonIdentity::~SignonIdentity()
+@@ -434,6 +440,22 @@ void 
SignonIdentity::signOutCompleted(QDBusPendingCallWatcher *call)
+     context->connection().send(reply);
+ }
+ 
++void SignonIdentity::onCredentialsUpdated(quint32 id)
++{
++    if (id != m_id) return;
++
++    TRACE() << m_id;
++
++    /* Clear the cached information about the identity; some of it might not 
be
++     * valid anymore */
++    if (m_pInfo) {
++        delete m_pInfo;
++        m_pInfo = NULL;
++    }
++
++    emit infoUpdated((int)SignOn::IdentityDataUpdated);
++}
++
+ quint32 SignonIdentity::store(const QVariantMap &info)
+ {
+     keepInUse();
+diff --git a/src/signond/signonidentity.h b/src/signond/signonidentity.h
+index 88c7199..c87367e 100644
+--- a/src/signond/signonidentity.h
++++ b/src/signond/signonidentity.h
+@@ -85,6 +85,7 @@ Q_SIGNALS:
+ private Q_SLOTS:
+     void removeCompleted(QDBusPendingCallWatcher *call);
+     void signOutCompleted(QDBusPendingCallWatcher *call);
++    void onCredentialsUpdated(quint32 id);
+ 
+ private:
+     SignonIdentity(quint32 id, int timeout, SignonDaemon *parent);
+diff --git a/tests/run-with-signond.sh b/tests/run-with-signond.sh
+index 7f0705e..3af5eaf 100755
+--- a/tests/run-with-signond.sh
++++ b/tests/run-with-signond.sh
+@@ -12,7 +12,7 @@ export SSO_DAEMON_TIMEOUT=5
+ export SSO_IDENTITY_TIMEOUT=5
+ export SSO_AUTHSESSION_TIMEOUT=5
+ export PATH="${BUILDDIR}/src/remotepluginprocess:$PATH"
+-export 
LD_LIBRARY_PATH="${BUILDDIR}/lib/plugins/signon-plugins-common":"${BUILDDIR}/lib/signond/SignOn":"$LD_LIBRARY_PATH"
++export 
LD_LIBRARY_PATH="${BUILDDIR}/lib/plugins":"${BUILDDIR}/lib/plugins/signon-plugins-common":"${BUILDDIR}/lib/signond/SignOn":"$LD_LIBRARY_PATH"
+ export 
XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR:-/tmp/runtime-$(whoami)}/signon-tests"
+ mkdir -p "$XDG_RUNTIME_DIR"
+ 
+diff --git a/tests/signond-tests/databasetest.cpp 
b/tests/signond-tests/databasetest.cpp
+index c6ec5b2..5276d6f 100644
+--- a/tests/signond-tests/databasetest.cpp
++++ b/tests/signond-tests/databasetest.cpp
+@@ -348,7 +348,17 @@ void TestDatabase::updateCredentialsTest()
+     QCOMPARE(retInfo.userName(), updateInfo.userName());
+     QCOMPARE(retInfo.password(), updateInfo.password());
+     QCOMPARE(retInfo.storePassword(), updateInfo.storePassword());
+-    QCOMPARE(retInfo.methods(), updateInfo.methods());
++
++    /* The sorting of the method's mechanisms might vary, so we cannot just
++     * compare the whole method map as a whole. */
++    QCOMPARE(retInfo.methods().keys().toSet(),
++             updateInfo.methods().keys().toSet());
++    QMapIterator<QString, QStringList> it(retInfo.methods());
++    while (it.hasNext()) {
++        it.next();
++        QCOMPARE(it.value().toSet(), umethods.value(it.key()).toSet());
++    }
++
+     QCOMPARE(retInfo.realms().toSet(), updateInfo.realms().toSet());
+     QCOMPARE(retInfo.accessControlList().toSet(),
+              updateInfo.accessControlList().toSet());

diff --git a/net-libs/signond/metadata.xml b/net-libs/signond/metadata.xml
new file mode 100644
index 0000000..a23f444
--- /dev/null
+++ b/net-libs/signond/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <herd>kde</herd>
+</pkgmetadata>

diff --git a/net-libs/signond/signond-8.57.ebuild 
b/net-libs/signond/signond-8.57.ebuild
new file mode 100644
index 0000000..192285b
--- /dev/null
+++ b/net-libs/signond/signond-8.57.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=5
+
+inherit qmake-utils
+
+SRC_URI="https://accounts-sso.googlecode.com/files/signon-8.56.tar.bz2";
+SLOT="0"
+DESCRIPTION="Signon daemon for libaccounts-glib"
+HOMEPAGE="https://01.org/gsso/";
+
+KEYWORDS="~amd64 ~x86"
+LICENSE="LGPL-2.1"
+IUSE="test"
+
+# libproxy[kde] results to segfaults
+DEPEND="
+       dev-qt/qtcore:5
+       dev-qt/qtdbus:5
+       dev-qt/qtgui:5
+       dev-qt/qtnetwork:5
+       dev-qt/qtsql:5
+       net-libs/libproxy[-kde]
+"
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/signon-8.56"
+
+src_prepare() {
+       epatch "${FILESDIR}"/${PN}-8.56-to-8.57.patch
+       if use !test; then
+               sed -i -e '/^SUBDIRS/s/tests//' signon.pro || die "couldn't 
disable tests"
+       fi
+}
+
+src_configure() {
+       eqmake5
+}
+
+src_install() {
+       emake INSTALL_ROOT="${D}" install
+}

diff --git a/profiles/package.mask/signond b/profiles/package.mask/signond
index 32fcdcb..0f04144 100644
--- a/profiles/package.mask/signond
+++ b/profiles/package.mask/signond
@@ -1 +1,2 @@
 net-libs/accounts-qt
+net-libs/signond

Reply via email to