summaryrefslogtreecommitdiff
path: root/net-libs
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2023-12-07 23:40:27 +0100
committerSam James <sam@gentoo.org>2023-12-17 12:04:13 +0000
commiteaad91afdff64a54994e5011bcaa40953df453cb (patch)
tree98bc83583a3ce77add65603cbb3a8702d4574a93 /net-libs
parente9cace638f598a1ca8254c28d0b47a22de92658d (diff)
downloadkde-eaad91afdff64a54994e5011bcaa40953df453cb.tar.gz
kde-eaad91afdff64a54994e5011bcaa40953df453cb.tar.bz2
kde-eaad91afdff64a54994e5011bcaa40953df453cb.zip
net-libs/signon-ui: add 9999 w/ IUSE qt6 [WIP]
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org> Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'net-libs')
-rw-r--r--net-libs/signon-ui/files/signon-ui-0.15_p20171022-disable-tests.patch24
-rw-r--r--net-libs/signon-ui/files/signon-ui-0.15_p20171022-drop-fno-rtti.patch28
-rw-r--r--net-libs/signon-ui/files/signon-ui-0.15_p20171022-fix-username-field-reading.patch127
-rw-r--r--net-libs/signon-ui/files/signon-ui-0.15_p20171022-webengine-cachedir-path.patch25
-rw-r--r--net-libs/signon-ui/metadata.xml11
-rw-r--r--net-libs/signon-ui/signon-ui-9999.ebuild80
6 files changed, 295 insertions, 0 deletions
diff --git a/net-libs/signon-ui/files/signon-ui-0.15_p20171022-disable-tests.patch b/net-libs/signon-ui/files/signon-ui-0.15_p20171022-disable-tests.patch
new file mode 100644
index 00000000000..dc818cd1526
--- /dev/null
+++ b/net-libs/signon-ui/files/signon-ui-0.15_p20171022-disable-tests.patch
@@ -0,0 +1,24 @@
+From 468e47402334ce1a0eee9ce30c2e55951877d668 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <asturm@gentoo.org>
+Date: Sun, 25 Oct 2020 00:11:12 +0200
+Subject: [PATCH] Disable unit tests
+
+---
+ tests/tests.pro | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/tests/tests.pro b/tests/tests.pro
+index 6b37001..c711f56 100644
+--- a/tests/tests.pro
++++ b/tests/tests.pro
+@@ -1,7 +1,5 @@
+ TEMPLATE = subdirs
+ CONFIG += ordered
+-SUBDIRS = \
+- unit
+
+ CONFIG(medium-tests) {
+ SUBDIRS += functional
+--
+2.29.1
+
diff --git a/net-libs/signon-ui/files/signon-ui-0.15_p20171022-drop-fno-rtti.patch b/net-libs/signon-ui/files/signon-ui-0.15_p20171022-drop-fno-rtti.patch
new file mode 100644
index 00000000000..5360fd5b1ec
--- /dev/null
+++ b/net-libs/signon-ui/files/signon-ui-0.15_p20171022-drop-fno-rtti.patch
@@ -0,0 +1,28 @@
+From 4546eeb26b79975259819795466320fa53676801 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <asturm@gentoo.org>
+Date: Sun, 25 Oct 2020 00:06:03 +0200
+Subject: [PATCH] Don't use -fno-rtti
+
+---
+ common-project-config.pri | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/common-project-config.pri b/common-project-config.pri
+index 3206471..c05522f 100644
+--- a/common-project-config.pri
++++ b/common-project-config.pri
+@@ -4,10 +4,7 @@
+
+ CONFIG += link_pkgconfig
+
+-# we don't like warnings...
+-QMAKE_CXXFLAGS -= -Werror -Wno-write-strings
+-# Disable RTTI
+-QMAKE_CXXFLAGS += -fno-exceptions -fno-rtti
++QMAKE_CXXFLAGS += -fno-exceptions
+
+ TOP_SRC_DIR = $$PWD
+ TOP_BUILD_DIR = $${TOP_SRC_DIR}/$(BUILD_DIR)
+--
+2.29.1
+
diff --git a/net-libs/signon-ui/files/signon-ui-0.15_p20171022-fix-username-field-reading.patch b/net-libs/signon-ui/files/signon-ui-0.15_p20171022-fix-username-field-reading.patch
new file mode 100644
index 00000000000..accc8d92d91
--- /dev/null
+++ b/net-libs/signon-ui/files/signon-ui-0.15_p20171022-fix-username-field-reading.patch
@@ -0,0 +1,127 @@
+From 90890e7d27c544e3557bed2f6624614141db0fc4 Mon Sep 17 00:00:00 2001
+From: Fabian Vogt <fabian@ritter-vogt.de>
+Date: Sat, 29 Sep 2018 15:34:43 +0200
+Subject: [PATCH] Reintroduce the username field reading with webkit-options.d
+
+Use WebChannel to spy on the input fields.
+Use the old UserAgent to make sure the selectors match.
+---
+ src/browser-request.cpp | 11 +++++++++++
+ src/qml/WebView.qml | 36 ++++++++++++++++++++++++++++++++++++
+ 2 files changed, 47 insertions(+)
+
+diff --git a/src/browser-request.cpp b/src/browser-request.cpp
+index 1895d59..e58f302 100644
+--- a/src/browser-request.cpp
++++ b/src/browser-request.cpp
+@@ -31,6 +31,7 @@
+ #include <QStandardPaths>
+ #include <QTimer>
+ #include <SignOn/uisessiondata_priv.h>
++#include <QSettings>
+
+ using namespace SignOnUi;
+ using namespace SignOnUi::QQuick;
+@@ -43,8 +44,10 @@ class BrowserRequestPrivate: public QObject
+ Q_DECLARE_PUBLIC(BrowserRequest)
+ Q_PROPERTY(QUrl pageComponentUrl READ pageComponentUrl CONSTANT)
+ Q_PROPERTY(QUrl currentUrl READ currentUrl WRITE setCurrentUrl)
++ Q_PROPERTY(QString username MEMBER m_username)
+ Q_PROPERTY(QUrl startUrl READ startUrl CONSTANT)
+ Q_PROPERTY(QUrl finalUrl READ finalUrl CONSTANT)
++ Q_PROPERTY(QString usernameSelector READ usernameSelector CONSTANT)
+
+ public:
+ BrowserRequestPrivate(BrowserRequest *request);
+@@ -58,6 +61,7 @@ public:
+ QUrl startUrl() const { return m_startUrl; }
+ QUrl finalUrl() const { return m_finalUrl; }
+ QUrl responseUrl() const { return m_responseUrl; }
++ QString usernameSelector() const { return m_settings->value("UsernameField").toString(); }
+
+ public Q_SLOTS:
+ void cancel();
+@@ -77,6 +81,8 @@ private:
+ QUrl m_startUrl;
+ QUrl m_finalUrl;
+ QUrl m_responseUrl;
++ QString m_username;
++ QSettings *m_settings;
+ QTimer m_failTimer;
+ mutable BrowserRequest *q_ptr;
+ };
+@@ -116,6 +122,9 @@ void BrowserRequestPrivate::start()
+
+ m_finalUrl = params.value(SSOUI_KEY_FINALURL).toString();
+ m_startUrl = params.value(SSOUI_KEY_OPENURL).toString();
++
++ m_settings = new QSettings("signon-ui/webkit-options.d/" + m_startUrl.host(), QString(), this);
++
+ buildDialog(params);
+
+ QObject::connect(m_dialog, SIGNAL(finished(int)),
+@@ -231,6 +240,8 @@ void BrowserRequestPrivate::onFinished()
+ QVariantMap reply;
+ QUrl url = m_responseUrl.isEmpty() ? m_currentUrl : m_responseUrl;
+ reply[SSOUI_KEY_URLRESPONSE] = url.toString();
++ if (!m_username.isEmpty())
++ reply[SSOUI_KEY_USERNAME] = m_username;
+
+ m_dialog->close();
+
+diff --git a/src/qml/WebView.qml b/src/qml/WebView.qml
+index 33462b8..3af0239 100644
+--- a/src/qml/WebView.qml
++++ b/src/qml/WebView.qml
+@@ -1,4 +1,5 @@
+ import QtQuick 2.0
++import QtWebChannel 1.0
+ import QtWebEngine 1.1
+
+ WebEngineView {
+@@ -25,8 +26,43 @@ WebEngineView {
+ profile: WebEngineProfile {
+ cachePath: rootDir
+ persistentStoragePath: rootDir
++ // For compatibility with the webkit-options.d values
++ httpUserAgent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Safari/537.21"
+ }
+
++ QtObject {
++ id: commProxy
++ WebChannel.id: "comm"
++ property string username: ""
++ property string selector: signonRequest.usernameSelector
++ onUsernameChanged: signonRequest.username = username
++ }
++
++ WebChannel {
++ id: chan
++ registeredObjects: [commProxy]
++ }
++ webChannel: chan
++
++ WebEngineScript {
++ id: qwebchannel
++ injectionPoint: WebEngineScript.DocumentCreation
++ sourceUrl: "qrc:/qtwebchannel/qwebchannel.js"
++ worldId: WebEngineScript.MainWorld
++ }
++
++ WebEngineScript {
++ id: commScript
++ injectionPoint: WebEngineScript.DocumentReady
++ sourceCode: "new QWebChannel(window.qt.webChannelTransport, function(channel) {" +
++ " var elem = document.querySelector(channel.objects.comm.selector);" +
++ " elem.addEventListener('keyup', function() { channel.objects.comm.username = elem.value; });" +
++ "});"
++ worldId: WebEngineScript.MainWorld
++ }
++
++ userScripts: [qwebchannel, commScript]
++
+ ProgressBar {
+ anchors.top: parent.top
+ anchors.left: parent.left
+--
+2.18.0
diff --git a/net-libs/signon-ui/files/signon-ui-0.15_p20171022-webengine-cachedir-path.patch b/net-libs/signon-ui/files/signon-ui-0.15_p20171022-webengine-cachedir-path.patch
new file mode 100644
index 00000000000..3a056484acd
--- /dev/null
+++ b/net-libs/signon-ui/files/signon-ui-0.15_p20171022-webengine-cachedir-path.patch
@@ -0,0 +1,25 @@
+From e155e6e70ce7a6c52837688b570e8020faac5496 Mon Sep 17 00:00:00 2001
+From: Fabian Vogt <fabian@ritter-vogt.de>
+Date: Sat, 8 Sep 2018 18:58:42 +0200
+Subject: [PATCH] Fix WebEngine cache directory path
+
+Otherwise the URL is treated as a path, which results in a folder "file:" in ~.
+---
+ src/browser-request.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/browser-request.cpp b/src/browser-request.cpp
+index 146bec8..1895d59 100644
+--- a/src/browser-request.cpp
++++ b/src/browser-request.cpp
+@@ -132,7 +132,7 @@ void BrowserRequestPrivate::start()
+
+ m_dialog->rootContext()->setContextProperty("request", this);
+ m_dialog->rootContext()->setContextProperty("rootDir",
+- QUrl::fromLocalFile(rootDir.absolutePath()));
++ rootDir.absolutePath());
+ m_dialog->setSource(webview);
+ }
+
+--
+2.18.0
diff --git a/net-libs/signon-ui/metadata.xml b/net-libs/signon-ui/metadata.xml
new file mode 100644
index 00000000000..634eccaeb0b
--- /dev/null
+++ b/net-libs/signon-ui/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>kde@gentoo.org</email>
+ <name>Gentoo KDE Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="gitlab">accounts-sso/signon-ui</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/net-libs/signon-ui/signon-ui-9999.ebuild b/net-libs/signon-ui/signon-ui-9999.ebuild
new file mode 100644
index 00000000000..3c0432cd205
--- /dev/null
+++ b/net-libs/signon-ui/signon-ui-9999.ebuild
@@ -0,0 +1,80 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit qmake-utils
+
+if [[ ${PV} = *9999* ]] ; then
+ EGIT_REPO_URI="https://gitlab.com/accounts-sso/signon-ui.git/"
+ inherit git-r3
+else
+ COMMIT=4368bb77d9d1abc2978af514225ba4a42c29a646
+ SRC_URI="https://gitlab.com/accounts-sso/${PN}/-/archive/${COMMIT}/${PN}-${COMMIT}.tar.bz2 -> ${P}.tar.bz2"
+ S="${WORKDIR}/${PN}-${COMMIT}"
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+fi
+
+DESCRIPTION="Online accounts signon UI"
+HOMEPAGE="https://gitlab.com/accounts-sso/signon-ui"
+
+LICENSE="GPL-2 GPL-3"
+SLOT="0"
+IUSE="qt6 test"
+
+RESTRICT="test"
+
+COMMON_DEPEND="
+ dev-libs/glib:2
+ !qt6? (
+ dev-qt/qtcore:5
+ dev-qt/qtdbus:5
+ dev-qt/qtdeclarative:5
+ dev-qt/qtgui:5
+ dev-qt/qtnetwork:5[ssl]
+ dev-qt/qtwebengine:5
+ dev-qt/qtwidgets:5
+ >=net-libs/accounts-qt-1.16-r1[qt5]
+ >=net-libs/signond-8.61-r1[qt5]
+ )
+ qt6? (
+ dev-qt/qtbase:6[dbus,gui,network,ssl,widgets]
+ dev-qt/qtdeclarative:6
+ dev-qt/qtwebengine:6
+ >=net-libs/accounts-qt-1.16-r1[qt6]
+ >=net-libs/signond-8.61-r1[qt6]
+ )
+ net-libs/libproxy
+ x11-libs/libnotify
+"
+RDEPEND="${COMMON_DEPEND}
+ !qt6? ( dev-qt/qtwebchannel:5 )
+ qt6? ( dev-qt/qtwebchannel:6 )
+"
+DEPEND="${COMMON_DEPEND}
+ test? (
+ !qt6? ( dev-qt/qttest:5 )
+ qt6? ( dev-qt/qtbase:6[test] )
+ )
+"
+
+PATCHES=(
+ # thanks to openSUSE
+ "${FILESDIR}/${PN}-0.15_p20171022-webengine-cachedir-path.patch"
+ "${FILESDIR}/${PN}-0.15_p20171022-fix-username-field-reading.patch"
+ # downstream
+ "${FILESDIR}/${PN}-0.15_p20171022-drop-fno-rtti.patch"
+ "${FILESDIR}/${PN}-0.15_p20171022-disable-tests.patch"
+)
+
+src_configure() {
+ if use qt6; then
+ eqmake6 PREFIX="${EPREFIX}"/usr
+ else
+ eqmake5 PREFIX="${EPREFIX}"/usr
+ fi
+}
+
+src_install() {
+ emake INSTALL_ROOT="${D}" install
+}