commit:     9e05aaacaa41045d2f7b08efe61899a0087e699b
Author:     Bernard Cafarelli <voyageur <AT> gentoo <DOT> org>
AuthorDate: Wed Jul  7 19:16:04 2021 +0000
Commit:     Bernard Cafarelli <voyageur <AT> gentoo <DOT> org>
CommitDate: Wed Jul  7 19:16:17 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9e05aaac

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 <AT> gentoo.org>

 .../files/nextcloud-client-3.2.3-webengine.patch   | 419 +++++++++++++++++++++
 net-misc/nextcloud-client/metadata.xml             |   1 +
 .../nextcloud-client-3.2.3-r1.ebuild               |  94 +++++
 3 files changed, 514 insertions(+)

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 00000000000..8152528f30c
--- /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 ea54627aff8..588dc46f7e6 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 00000000000..f5a364e114c
--- /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
+}

Reply via email to