summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Cafarelli <voyageur@gentoo.org>2021-07-07 21:16:04 +0200
committerBernard Cafarelli <voyageur@gentoo.org>2021-07-07 21:16:17 +0200
commit9e05aaacaa41045d2f7b08efe61899a0087e699b (patch)
tree44f6fb53abc1254bba1c6e002fae927d7991f2f3 /net-misc
parentdev-lang/ruby: add 2.6.8, 2.7.4, 3.0.2 (diff)
downloadgentoo-9e05aaacaa41045d2f7b08efe61899a0087e699b.tar.gz
gentoo-9e05aaacaa41045d2f7b08efe61899a0087e699b.tar.bz2
gentoo-9e05aaacaa41045d2f7b08efe61899a0087e699b.zip
net-misc/nextcloud-client: make qtwebengine optional
This large dependency is not needed for most current authentications Also updated many build options (doc, dolphin and nautilus integration) Closes: https://bugs.gentoo.org/800863 Package-Manager: Portage-3.0.20, Repoman-3.0.3 Signed-off-by: Bernard Cafarelli <voyageur@gentoo.org>
Diffstat (limited to 'net-misc')
-rw-r--r--net-misc/nextcloud-client/files/nextcloud-client-3.2.3-webengine.patch419
-rw-r--r--net-misc/nextcloud-client/metadata.xml1
-rw-r--r--net-misc/nextcloud-client/nextcloud-client-3.2.3-r1.ebuild94
3 files changed, 514 insertions, 0 deletions
diff --git a/net-misc/nextcloud-client/files/nextcloud-client-3.2.3-webengine.patch b/net-misc/nextcloud-client/files/nextcloud-client-3.2.3-webengine.patch
new file mode 100644
index 000000000000..8152528f30cb
--- /dev/null
+++ b/net-misc/nextcloud-client/files/nextcloud-client-3.2.3-webengine.patch
@@ -0,0 +1,419 @@
+diff -Naur desktop-3.2.3.orig/src/CMakeLists.txt desktop-3.2.3/src/CMakeLists.txt
+--- desktop-3.2.3.orig/src/CMakeLists.txt 2021-06-24 12:04:33.000000000 +0200
++++ desktop-3.2.3/src/CMakeLists.txt 2021-07-07 20:26:40.620839467 +0200
+@@ -4,7 +4,13 @@
+
+ set(synclib_NAME ${APPLICATION_EXECUTABLE}sync)
+
+-find_package(Qt5 5.12 COMPONENTS Core Network Xml Concurrent WebEngineWidgets WebEngine REQUIRED)
++find_package(Qt5 5.12 COMPONENTS Core Network Xml Concurrent REQUIRED)
++find_package(Qt5 5.12 COMPONENTS WebEngineWidgets WebEngine)
++
++if(Qt5WebEngine_FOUND AND Qt5WebEngineWidgets_FOUND)
++ add_compile_definitions(WITH_WEBENGINE=1)
++endif()
++
+ get_target_property (QT_QMAKE_EXECUTABLE Qt5::qmake IMPORTED_LOCATION)
+ message(STATUS "Using Qt ${Qt5Core_VERSION} (${QT_QMAKE_EXECUTABLE})")
+
+diff -Naur desktop-3.2.3.orig/src/gui/CMakeLists.txt desktop-3.2.3/src/gui/CMakeLists.txt
+--- desktop-3.2.3.orig/src/gui/CMakeLists.txt 2021-06-24 12:04:33.000000000 +0200
++++ desktop-3.2.3/src/gui/CMakeLists.txt 2021-07-07 20:26:40.620839467 +0200
+@@ -128,12 +128,17 @@
+ wizard/owncloudwizardcommon.cpp
+ wizard/owncloudwizard.cpp
+ wizard/owncloudwizardresultpage.cpp
+- wizard/webviewpage.cpp
+- wizard/webview.cpp
+ wizard/slideshow.cpp
+ wizard/welcomepage.cpp
+ wizard/linklabel.cpp
+-)
++ )
++
++if (Qt5WebEngine_FOUND AND Qt5WebEngineWidgets_FOUND)
++ list(APPEND client_SRCS
++ wizard/webviewpage.cpp
++ wizard/webview.cpp
++ )
++endif()
+
+ IF(BUILD_UPDATER)
+ set(updater_SRCS
+@@ -339,9 +344,12 @@
+ Qt5::Qml
+ Qt5::Quick
+ Qt5::QuickControls2
+- Qt5::WebEngineWidgets
+ ${synclib_NAME}
+-)
++ )
++
++if(Qt5WebEngine_FOUND AND Qt5WebEngineWidgets_FOUND)
++ target_link_libraries(nextcloudCore PUBLIC Qt5::WebEngineWidgets)
++endif()
+
+ set_target_properties(nextcloudCore
+ PROPERTIES
+diff -Naur desktop-3.2.3.orig/src/gui/creds/webflowcredentials.cpp desktop-3.2.3/src/gui/creds/webflowcredentials.cpp
+--- desktop-3.2.3.orig/src/gui/creds/webflowcredentials.cpp 2021-06-24 12:04:33.000000000 +0200
++++ desktop-3.2.3/src/gui/creds/webflowcredentials.cpp 2021-07-07 20:26:40.618839464 +0200
+@@ -16,7 +16,9 @@
+ #include "account.h"
+ #include "configfile.h"
+ #include "theme.h"
++#ifdef WITH_WEBENGINE
+ #include "wizard/webview.h"
++#endif // WITH_WEBENGINE
+ #include "webflowcredentialsdialog.h"
+
+ using namespace QKeychain;
+@@ -144,8 +146,12 @@
+ // Do a DetermineAuthTypeJob to make sure that the server is still using Flow2
+ auto job = new DetermineAuthTypeJob(_account->sharedFromThis(), this);
+ connect(job, &DetermineAuthTypeJob::authType, [this](DetermineAuthTypeJob::AuthType type) {
+- // LoginFlowV2 > WebViewFlow > OAuth > Shib > Basic
++ // LoginFlowV2 > WebViewFlow > OAuth > Shib > Basic
++#ifdef WITH_WEBENGINE
+ bool useFlow2 = (type != DetermineAuthTypeJob::WebViewFlow);
++#else // WITH_WEBENGINE
++ bool useFlow2 = true;
++#endif // WITH_WEBENGINE
+
+ _askDialog = new WebFlowCredentialsDialog(_account, useFlow2);
+
+diff -Naur desktop-3.2.3.orig/src/gui/creds/webflowcredentialsdialog.cpp desktop-3.2.3/src/gui/creds/webflowcredentialsdialog.cpp
+--- desktop-3.2.3.orig/src/gui/creds/webflowcredentialsdialog.cpp 2021-06-24 12:04:33.000000000 +0200
++++ desktop-3.2.3/src/gui/creds/webflowcredentialsdialog.cpp 2021-07-07 20:26:40.618839464 +0200
+@@ -8,16 +8,20 @@
+ #include "owncloudgui.h"
+ #include "headerbanner.h"
+ #include "wizard/owncloudwizardcommon.h"
++#ifdef WITH_WEBENGINE
+ #include "wizard/webview.h"
++#endif // WITH_WEBENGINE
+ #include "wizard/flow2authwidget.h"
+
+ namespace OCC {
+
+ WebFlowCredentialsDialog::WebFlowCredentialsDialog(Account *account, bool useFlow2, QWidget *parent)
+- : QDialog(parent),
+- _useFlow2(useFlow2),
+- _flow2AuthWidget(nullptr),
+- _webView(nullptr)
++ : QDialog(parent)
++ , _useFlow2(useFlow2)
++ , _flow2AuthWidget(nullptr)
++#ifdef WITH_WEBENGINE
++ , _webView(nullptr)
++#endif // WITH_WEBENGINE
+ {
+ setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
+
+@@ -49,10 +53,12 @@
+
+ _flow2AuthWidget->startAuth(account);
+ } else {
++#ifdef WITH_WEBENGINE
+ _webView = new WebView();
+ _containerLayout->addWidget(_webView);
+
+ connect(_webView, &WebView::urlCatched, this, &WebFlowCredentialsDialog::urlCatched);
++#endif // WITH_WEBENGINE
+ }
+
+ auto app = static_cast<Application *>(qApp);
+@@ -73,12 +79,14 @@
+ void WebFlowCredentialsDialog::closeEvent(QCloseEvent* e) {
+ Q_UNUSED(e)
+
++#ifdef WITH_WEBENGINE
+ if (_webView) {
+ // Force calling WebView::~WebView() earlier so that _profile and _page are
+ // deleted in the correct order.
+ _webView->deleteLater();
+ _webView = nullptr;
+ }
++#endif // WITH_WEBENGINE
+
+ if (_flow2AuthWidget) {
+ _flow2AuthWidget->resetAuth();
+@@ -89,9 +97,14 @@
+ emit onClose();
+ }
+
+-void WebFlowCredentialsDialog::setUrl(const QUrl &url) {
++void WebFlowCredentialsDialog::setUrl(const QUrl &url)
++{
++#ifdef WITH_WEBENGINE
+ if (_webView)
+ _webView->setUrl(url);
++#else // WITH_WEBENGINE
++ Q_UNUSED(url);
++#endif // WITH_WEBENGINE
+ }
+
+ void WebFlowCredentialsDialog::setInfo(const QString &msg) {
+diff -Naur desktop-3.2.3.orig/src/gui/creds/webflowcredentialsdialog.h desktop-3.2.3/src/gui/creds/webflowcredentialsdialog.h
+--- desktop-3.2.3.orig/src/gui/creds/webflowcredentialsdialog.h 2021-06-24 12:04:33.000000000 +0200
++++ desktop-3.2.3/src/gui/creds/webflowcredentialsdialog.h 2021-07-07 20:26:40.618839464 +0200
+@@ -13,7 +13,9 @@
+ namespace OCC {
+
+ class HeaderBanner;
++#ifdef WITH_WEBENGINE
+ class WebView;
++#endif // WITH_WEBENGINE
+ class Flow2AuthWidget;
+
+ class WebFlowCredentialsDialog : public QDialog
+@@ -50,7 +52,9 @@
+ bool _useFlow2;
+
+ Flow2AuthWidget *_flow2AuthWidget;
++#ifdef WITH_WEBENGINE
+ WebView *_webView;
++#endif // WITH_WEBENGINE
+
+ QLabel *_errorLabel;
+ QLabel *_infoLabel;
+diff -Naur desktop-3.2.3.orig/src/gui/wizard/owncloudsetuppage.cpp desktop-3.2.3/src/gui/wizard/owncloudsetuppage.cpp
+--- desktop-3.2.3.orig/src/gui/wizard/owncloudsetuppage.cpp 2021-06-24 12:04:33.000000000 +0200
++++ desktop-3.2.3/src/gui/wizard/owncloudsetuppage.cpp 2021-07-07 20:26:40.619839465 +0200
+@@ -119,21 +119,6 @@
+ _ui.leUrl->setPalette(leUrlPalette);
+ }
+
+-#ifdef WITH_PROVIDERS
+-void OwncloudSetupPage::slotLogin()
+-{
+- _ocWizard->setRegistration(false);
+-}
+-void OwncloudSetupPage::slotGotoProviderList()
+-{
+- _ocWizard->setRegistration(true);
+- _ocWizard->setAuthType(DetermineAuthTypeJob::AuthType::WebViewFlow);
+- _authTypeKnown = true;
+- _checking = false;
+- emit completeChanged();
+-}
+-#endif
+-
+ // slot hit from textChanged of the url entry field.
+ void OwncloudSetupPage::slotUrlChanged(const QString &url)
+ {
+@@ -228,8 +213,10 @@
+ return WizardCommon::Page_OAuthCreds;
+ case DetermineAuthTypeJob::LoginFlowV2:
+ return WizardCommon::Page_Flow2AuthCreds;
++#ifdef WITH_WEBENGINE
+ case DetermineAuthTypeJob::WebViewFlow:
+ return WizardCommon::Page_WebView;
++#endif // WITH_WEBENGINE
+ }
+ return WizardCommon::Page_HttpCreds;
+ }
+diff -Naur desktop-3.2.3.orig/src/gui/wizard/owncloudsetuppage.h desktop-3.2.3/src/gui/wizard/owncloudsetuppage.h
+--- desktop-3.2.3.orig/src/gui/wizard/owncloudsetuppage.h 2021-06-24 12:04:33.000000000 +0200
++++ desktop-3.2.3/src/gui/wizard/owncloudsetuppage.h 2021-07-07 20:26:40.617839462 +0200
+@@ -67,10 +67,6 @@
+ protected slots:
+ void slotUrlChanged(const QString &);
+ void slotUrlEditFinished();
+-#ifdef WITH_PROVIDERS
+- void slotLogin();
+- void slotGotoProviderList();
+-#endif
+
+ void setupCustomization();
+
+diff -Naur desktop-3.2.3.orig/src/gui/wizard/owncloudwizardcommon.h desktop-3.2.3/src/gui/wizard/owncloudwizardcommon.h
+--- desktop-3.2.3.orig/src/gui/wizard/owncloudwizardcommon.h 2021-06-24 12:04:33.000000000 +0200
++++ desktop-3.2.3/src/gui/wizard/owncloudwizardcommon.h 2021-07-07 20:26:40.619839465 +0200
+@@ -46,7 +46,9 @@
+ Page_HttpCreds,
+ Page_OAuthCreds,
+ Page_Flow2AuthCreds,
++#ifdef WITH_WEBENGINE
+ Page_WebView,
++#endif // WITH_WEBENGINE
+ Page_AdvancedSetup,
+ Page_Result
+ };
+diff -Naur desktop-3.2.3.orig/src/gui/wizard/owncloudwizard.cpp desktop-3.2.3/src/gui/wizard/owncloudwizard.cpp
+--- desktop-3.2.3.orig/src/gui/wizard/owncloudwizard.cpp 2021-06-24 12:04:33.000000000 +0200
++++ desktop-3.2.3/src/gui/wizard/owncloudwizard.cpp 2021-07-07 20:26:40.619839465 +0200
+@@ -54,7 +54,11 @@
+ , _flow2CredsPage(new Flow2AuthCredsPage)
+ , _advancedSetupPage(new OwncloudAdvancedSetupPage(this))
+ , _resultPage(new OwncloudWizardResultPage)
++#ifdef WITH_WEBENGINE
+ , _webViewPage(new WebViewPage(this))
++#else // WITH_WEBENGINE
++ , _webViewPage(nullptr)
++#endif // WITH_WEBENGINE
+ {
+ setObjectName("owncloudWizard");
+
+@@ -66,7 +70,9 @@
+ setPage(WizardCommon::Page_Flow2AuthCreds, _flow2CredsPage);
+ setPage(WizardCommon::Page_AdvancedSetup, _advancedSetupPage);
+ setPage(WizardCommon::Page_Result, _resultPage);
++#ifdef WITH_WEBENGINE
+ setPage(WizardCommon::Page_WebView, _webViewPage);
++#endif // WITH_WEBENGINE
+
+ connect(this, &QDialog::finished, this, &OwncloudWizard::basicSetupFinished);
+
+@@ -78,7 +84,9 @@
+ connect(_httpCredsPage, &OwncloudHttpCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
+ connect(_browserCredsPage, &OwncloudOAuthCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
+ connect(_flow2CredsPage, &Flow2AuthCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
++#ifdef WITH_WEBENGINE
+ connect(_webViewPage, &WebViewPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
++#endif // WITH_WEBENGINE
+ connect(_advancedSetupPage, &OwncloudAdvancedSetupPage::createLocalAndRemoteFolders,
+ this, &OwncloudWizard::createLocalAndRemoteFolders);
+ connect(this, &QWizard::customButtonClicked, this, &OwncloudWizard::skipFolderConfiguration);
+@@ -230,9 +238,11 @@
+ _flow2CredsPage->setConnected();
+ break;
+
++#ifdef WITH_WEBENGINE
+ case WizardCommon::Page_WebView:
+ _webViewPage->setConnected();
+ break;
++#endif // WITH_WEBENGINE
+
+ case WizardCommon::Page_AdvancedSetup:
+ _advancedSetupPage->directoriesCreated();
+@@ -256,8 +266,10 @@
+ _credentialsPage = _browserCredsPage;
+ } else if (type == DetermineAuthTypeJob::LoginFlowV2) {
+ _credentialsPage = _flow2CredsPage;
++#ifdef WITH_WEBENGINE
+ } else if (type == DetermineAuthTypeJob::WebViewFlow) {
+ _credentialsPage = _webViewPage;
++#endif // WITH_WEBENGINE
+ } else { // try Basic auth even for "Unknown"
+ _credentialsPage = _httpCredsPage;
+ }
+@@ -281,7 +293,11 @@
+ button(QWizard::NextButton)->setHidden(true);
+ // Need to set it from here, otherwise it has no effect
+ _welcomePage->setLoginButtonDefault();
+- } else if (id == WizardCommon::Page_WebView || id == WizardCommon::Page_Flow2AuthCreds) {
++ } else if (
++#ifdef WITH_WEBENGINE
++ id == WizardCommon::Page_WebView ||
++#endif // WITH_WEBENGINE
++ id == WizardCommon::Page_Flow2AuthCreds) {
+ setButtonLayout({ QWizard::Stretch, QWizard::BackButton });
+ } else if (id == WizardCommon::Page_AdvancedSetup) {
+ setButtonLayout({ QWizard::Stretch, QWizard::CustomButton1, QWizard::BackButton, QWizard::NextButton });
+diff -Naur desktop-3.2.3.orig/src/gui/wizard/owncloudwizard.h desktop-3.2.3/src/gui/wizard/owncloudwizard.h
+--- desktop-3.2.3.orig/src/gui/wizard/owncloudwizard.h 2021-06-24 12:04:33.000000000 +0200
++++ desktop-3.2.3/src/gui/wizard/owncloudwizard.h 2021-07-07 20:26:40.619839465 +0200
+@@ -128,7 +128,7 @@
+ OwncloudAdvancedSetupPage *_advancedSetupPage;
+ OwncloudWizardResultPage *_resultPage;
+ AbstractCredentialsWizardPage *_credentialsPage = nullptr;
+- WebViewPage *_webViewPage;
++ WebViewPage *_webViewPage = nullptr;
+
+ QStringList _setupLog;
+
+diff -Naur desktop-3.2.3.orig/src/gui/wizard/welcomepage.cpp desktop-3.2.3/src/gui/wizard/welcomepage.cpp
+--- desktop-3.2.3.orig/src/gui/wizard/welcomepage.cpp 2021-06-24 12:04:33.000000000 +0200
++++ desktop-3.2.3/src/gui/wizard/welcomepage.cpp 2021-07-07 20:26:40.620839467 +0200
+@@ -13,6 +13,7 @@
+ */
+
+ #include "welcomepage.h"
++#include "guiutility.h"
+ #include "theme.h"
+ #include "wizard/owncloudwizard.h"
+ #include "wizard/slideshow.h"
+@@ -94,11 +95,18 @@
+
+ void WelcomePage::setupCreateAccountButton()
+ {
++#ifdef WITH_WEBENGINE
+ connect(_ui->createAccountButton, &QPushButton::clicked, this, [this](bool /*checked*/) {
+ _ocWizard->setRegistration(true);
+ _nextPage = WizardCommon::Page_WebView;
+ _ocWizard->next();
+ });
++#else // WITH_WEBENGINE
++ connect(_ui->createAccountButton, &QPushButton::clicked, this, [this](bool /*checked*/) {
++ _ocWizard->setRegistration(true);
++ Utility::openBrowser(QStringLiteral("https://nextcloud.com/register"));
++ });
++#endif // WITH_WEBENGINE
+ }
+
+ void WelcomePage::setupHostYourOwnServerLabel()
+diff -Naur desktop-3.2.3.orig/src/libsync/networkjobs.cpp desktop-3.2.3/src/libsync/networkjobs.cpp
+--- desktop-3.2.3.orig/src/libsync/networkjobs.cpp 2021-06-24 12:04:33.000000000 +0200
++++ desktop-3.2.3/src/libsync/networkjobs.cpp 2021-07-07 20:26:40.619839465 +0200
+@@ -30,6 +30,7 @@
+ #include <QCoreApplication>
+ #include <QJsonDocument>
+ #include <QJsonObject>
++#include <qloggingcategory.h>
+ #ifndef TOKEN_AUTH_ONLY
+ #include <QPainter>
+ #include <QPainterPath>
+@@ -958,7 +959,11 @@
+ auto flow = gs.toObject().value("desktoplogin");
+ if (flow != QJsonValue::Undefined) {
+ if (flow.toInt() == 1) {
++#ifdef WITH_WEBENGINE
+ _resultOldFlow = WebViewFlow;
++#else // WITH_WEBENGINE
++ qCWarning(lcDetermineAuthTypeJob) << "Server does only support flow1, but this client was compiled without support for flow1";
++#endif // WITH_WEBENGINE
+ }
+ }
+ }
+@@ -985,20 +990,24 @@
+
+ auto result = _resultPropfind;
+
++#ifdef WITH_WEBENGINE
+ // WebViewFlow > OAuth > Basic
+ if (_account->serverVersionInt() >= Account::makeServerVersion(12, 0, 0)) {
+ result = WebViewFlow;
+ }
++#endif // WITH_WEBENGINE
+
+ // LoginFlowV2 > WebViewFlow > OAuth > Basic
+ if (_account->serverVersionInt() >= Account::makeServerVersion(16, 0, 0)) {
+ result = LoginFlowV2;
+ }
+
++#ifdef WITH_WEBENGINE
+ // If we determined that we need the webview flow (GS for example) then we switch to that
+ if (_resultOldFlow == WebViewFlow) {
+ result = WebViewFlow;
+ }
++#endif // WITH_WEBENGINE
+
+ // If we determined that a simple get gave us an authentication required error
+ // then the server enforces basic auth and we got no choice but to use this
+diff -Naur desktop-3.2.3.orig/src/libsync/networkjobs.h desktop-3.2.3/src/libsync/networkjobs.h
+--- desktop-3.2.3.orig/src/libsync/networkjobs.h 2021-06-24 12:04:33.000000000 +0200
++++ desktop-3.2.3/src/libsync/networkjobs.h 2021-07-07 20:26:40.619839465 +0200
+@@ -444,9 +444,11 @@
+ public:
+ enum AuthType {
+ NoAuthType, // used only before we got a chance to probe the server
++#ifdef WITH_WEBENGINE
++ WebViewFlow,
++#endif // WITH_WEBENGINE
+ Basic, // also the catch-all fallback for backwards compatibility reasons
+ OAuth,
+- WebViewFlow,
+ LoginFlowV2
+ };
+ Q_ENUM(AuthType)
diff --git a/net-misc/nextcloud-client/metadata.xml b/net-misc/nextcloud-client/metadata.xml
index ea54627aff84..588dc46f7e60 100644
--- a/net-misc/nextcloud-client/metadata.xml
+++ b/net-misc/nextcloud-client/metadata.xml
@@ -8,6 +8,7 @@
<use>
<flag name="dolphin">Install the <pkg>kde-apps/dolphin</pkg> extension</flag>
<flag name="nautilus">Install the <pkg>gnome-base/nautilus</pkg> extension</flag>
+ <flag name="webengine">Enable old Flow1 login using <pkg>dev-qt/qtwebengine</pkg></flag>
</use>
<upstream>
<remote-id type="github">nextcloud/desktop</remote-id>
diff --git a/net-misc/nextcloud-client/nextcloud-client-3.2.3-r1.ebuild b/net-misc/nextcloud-client/nextcloud-client-3.2.3-r1.ebuild
new file mode 100644
index 000000000000..f5a364e114c6
--- /dev/null
+++ b/net-misc/nextcloud-client/nextcloud-client-3.2.3-r1.ebuild
@@ -0,0 +1,94 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cmake xdg
+
+DESCRIPTION="Desktop Syncing Client for Nextcloud"
+HOMEPAGE="https://github.com/nextcloud/desktop"
+SRC_URI="https://github.com/nextcloud/desktop/archive/v${PV/_/-}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="CC-BY-3.0 GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="doc dolphin nautilus test webengine"
+RESTRICT="!test? ( test )"
+
+COMMON_DEPEND=">=dev-db/sqlite-3.34:3
+ >=dev-libs/openssl-1.1.0:0=
+ dev-libs/qtkeychain[qt5(+)]
+ dev-qt/qtcore:5
+ dev-qt/qtdbus:5
+ dev-qt/qtdeclarative:5
+ dev-qt/qtgui:5
+ dev-qt/qtnetwork:5[ssl]
+ dev-qt/qtquickcontrols2:5
+ dev-qt/qtsvg:5
+ dev-qt/qtwebsockets:5
+ dev-qt/qtwidgets:5
+ sys-libs/zlib
+ dolphin? (
+ kde-frameworks/kcoreaddons:5
+ kde-frameworks/kio:5
+ )
+ nautilus? ( dev-python/nautilus-python )
+ webengine? ( dev-qt/qtwebengine:5[widgets] )"
+
+DEPEND="${COMMON_DEPEND}
+ dev-qt/linguist-tools:5
+ dev-qt/qtconcurrent:5
+ dev-qt/qtxml:5
+ doc? (
+ dev-python/sphinx
+ dev-tex/latexmk
+ dev-texlive/texlive-latexextra
+ virtual/latex-base
+ )
+ dolphin? ( kde-frameworks/extra-cmake-modules )
+ test? (
+ dev-util/cmocka
+ dev-qt/qttest:5
+ )"
+
+RDEPEND="${COMMON_DEPEND}"
+
+PATCHES=( "${FILESDIR}"/${P}-inkscape.patch
+ "${FILESDIR}"/${P}-webengine.patch
+ )
+
+S="${WORKDIR}/desktop-${PV/_/-}"
+
+src_prepare() {
+ # Keep tests in ${T}
+ sed -i -e "s#\"/tmp#\"${T}#g" test/test*.cpp || die
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc
+ -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/${PF}
+ -DBUILD_UPDATER=OFF
+ -DCMAKE_DISABLE_FIND_PACKAGE_Libcloudproviders=ON
+ $(cmake_use_find_package doc Sphinx)
+ $(cmake_use_find_package doc PdfLatex)
+ $(cmake_use_find_package webengine Qt5WebEngine)
+ $(cmake_use_find_package webengine Qt5WebEngineWidgets)
+ -DBUILD_SHELL_INTEGRATION_DOLPHIN=$(usex dolphin)
+ -DBUILD_SHELL_INTEGRATION_NAUTILUS=$(usex nautilus)
+ -DUNIT_TESTING=$(usex test)
+ )
+
+ cmake_src_configure
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ if ! use doc ; then
+ elog "Documentation and man pages not installed"
+ elog "Enable doc USE-flag to generate them"
+ fi
+}