summaryrefslogtreecommitdiff
path: root/libre/nextcloud-client
diff options
context:
space:
mode:
Diffstat (limited to 'libre/nextcloud-client')
-rw-r--r--libre/nextcloud-client/PKGBUILD99
-rw-r--r--libre/nextcloud-client/nextcloud-client-fix-build.diff13
-rw-r--r--libre/nextcloud-client/remove-qtwebengine.patch312
3 files changed, 424 insertions, 0 deletions
diff --git a/libre/nextcloud-client/PKGBUILD b/libre/nextcloud-client/PKGBUILD
new file mode 100644
index 000000000..2658a4c61
--- /dev/null
+++ b/libre/nextcloud-client/PKGBUILD
@@ -0,0 +1,99 @@
+# Maintainer (Arch): Chih-Hsuan Yen <yan12125@archlinux.org>
+# Contributor (Arch): Tyler Dence <tyzoid@archlinux32.org>
+# Contributor (Arch): Konstantin Shalygin <k0ste@k0ste.ru>
+
+# parabola changes and rationale:
+# - removed qt5-webengine dependency
+
+
+pkgname=nextcloud-client
+pkgver=2.6.1
+_commit=5adbc01ef138efd252c5c8c340f57dae0b34d8b9
+pkgrel=2
+pkgrel+=.parabola1
+pkgdesc='Nextcloud desktop client'
+pkgdesc+=', without nonfree qt5-webengine dependency'
+arch=(x86_64)
+arch+=(i686 armv7h)
+url='https://nextcloud.com/'
+license=(GPL)
+
+depends=('openssl' 'sqlite' 'qtkeychain' 'qt5-svg' 'xdg-utils')
+optdepends=(
+ 'kio: integration with Dolphin'
+ 'nemo-python: integration with Nemo'
+ 'python-nautilus: integration with Nautilus'
+ 'python2-caja: integration with Caja'
+)
+makedepends=('doxygen' 'extra-cmake-modules' 'kio' 'python-sphinx' 'qt5-tools' 'git cmocka')
+backup=(etc/Nextcloud/sync-exclude.lst)
+
+source=($pkgname::git+https://github.com/nextcloud/desktop.git?signed#commit=$_commit
+ issue1458-workaround.patch::https://github.com/yan12125/desktop/commit/7da680ef7843a52c3136916744f50d4a003bb8b5.patch
+ issue1458-2.patch::https://github.com/yan12125/desktop/commit/2b313368325dac5b8d0e69394cfcc4faaa745f75.patch
+ remove-qtwebengine.patch
+ $pkgname-fix-build.diff)
+validpgpkeys=('A26B951528EA1BA1678C7AE5D406C75CEE1A36D6') # one of keys controlled by github.com/camilasan
+sha256sums=('SKIP'
+ '07cd68f54c004175b4a09cce25830a357d0ebaafaf4e4cabfb8b0d4deeded2f3'
+ '157c87a789219a3442ca5947c48dcd1ef3898612ff32070bf8842a42bfbe857a'
+ '0e036c1f9f200aff057092f5a5848a5f496903bac51105349b87b2cf11b04958'
+ '8b257a0554ceb54a7ed320dbfa3becb97d6845338e28a8aa0a4f6239f3141645')
+
+
+prepare()
+{
+ cd $pkgname
+
+ # tmpdir for check()
+ mkdir tmpdir $pkgname/build
+
+ # Use system GNUInstallDirs.cmake so that we can benefit from
+ # https://gitlab.kitware.com/cmake/cmake/merge_requests/3735
+ rm -v cmake/modules/GNUInstallDirs.cmake
+
+ patch -Np1 -i ../issue1458-workaround.patch
+ patch -Np1 -i ../issue1458-2.patch
+
+ # https://github.com/nextcloud/desktop/pull/719
+ # "Rename owncloud tests to nextcloud" - actually breaks building of tests
+ patch -Np1 -i ../$pkgname-fix-build.diff
+
+ # Remove qt5-webengine dependency
+ patch -Np1 -i ../remove-qtwebengine.patch
+}
+
+build()
+{
+ cd $pkgname/build
+
+ # bundled breakpad in libcrashreporter-qt submodule is too old and does not build with glibc >= 2.26
+ # Upstream fix: https://github.com/google/breakpad/commit/bddcc58860f522a0d4cbaa7e9d04058caee0db9d
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DNO_SHIBBOLETH=1 \
+ -DWITH_CRASHREPORTER=OFF \
+ -DUNIT_TESTING=ON \
+ ..
+
+ make
+ # TODO: fix installation of PDF and HTML documents
+ # WIP at https://github.com/yan12125/desktop/tree/doc-install-path
+ make doc-man
+}
+
+check()
+{
+ cd $pkgname/build
+
+ # Tests fail if $TMPDIR is too small; specify an alternative for machines
+ # with a small /tmp partition.
+ TMPDIR="$srcdir/tmpdir" make test ARGS="-V"
+}
+
+package()
+{
+ cd $pkgname/build
+
+ make DESTDIR="$pkgdir" install
+}
diff --git a/libre/nextcloud-client/nextcloud-client-fix-build.diff b/libre/nextcloud-client/nextcloud-client-fix-build.diff
new file mode 100644
index 000000000..40e6f361f
--- /dev/null
+++ b/libre/nextcloud-client/nextcloud-client-fix-build.diff
@@ -0,0 +1,13 @@
+diff --git a/test/testnextcloudpropagator.cpp b/test/testnextcloudpropagator.cpp
+index 6ad1a6b37..dc2e476ad 100644
+--- a/test/testnextcloudpropagator.cpp
++++ b/test/testnextcloudpropagator.cpp
+@@ -8,7 +8,7 @@
+ #include <QDebug>
+
+ #include "propagatedownload.h"
+-#include "nextcloudpropagator_p.h"
++#include "owncloudpropagator_p.h"
+
+ using namespace OCC;
+ namespace OCC {
diff --git a/libre/nextcloud-client/remove-qtwebengine.patch b/libre/nextcloud-client/remove-qtwebengine.patch
new file mode 100644
index 000000000..b35267825
--- /dev/null
+++ b/libre/nextcloud-client/remove-qtwebengine.patch
@@ -0,0 +1,312 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index e14c97e..f6c4180 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -4,7 +4,7 @@ endif()
+
+ set(synclib_NAME ${APPLICATION_EXECUTABLE}sync)
+
+-find_package(Qt5 5.6 COMPONENTS Core Network Xml Concurrent WebEngineWidgets WebEngine REQUIRED)
++find_package(Qt5 5.6 COMPONENTS Core Network Xml Concurrent REQUIRED)
+ if (Qt5Core_VERSION VERSION_LESS 5.9.0)
+ message(STATUS "For HTTP/2 support, compile with Qt 5.9 or higher.")
+ endif()
+diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
+index e806beb..e56a811 100644
+--- a/src/gui/CMakeLists.txt
++++ b/src/gui/CMakeLists.txt
+@@ -39,11 +39,8 @@ set(client_UI_SRCS
+ wizard/owncloudconnectionmethoddialog.ui
+ wizard/owncloudhttpcredspage.ui
+ wizard/owncloudoauthcredspage.ui
+- wizard/flow2authcredspage.ui
+- wizard/flow2authwidget.ui
+ wizard/owncloudsetupnocredspage.ui
+ wizard/owncloudwizardresultpage.ui
+- wizard/webview.ui
+ )
+
+ set(client_SRCS
+@@ -107,23 +104,16 @@ set(client_SRCS
+ creds/credentialsfactory.cpp
+ creds/httpcredentialsgui.cpp
+ creds/oauth.cpp
+- creds/flow2auth.cpp
+- creds/webflowcredentials.cpp
+- creds/webflowcredentialsdialog.cpp
+ wizard/postfixlineedit.cpp
+ wizard/abstractcredswizardpage.cpp
+ wizard/owncloudadvancedsetuppage.cpp
+ wizard/owncloudconnectionmethoddialog.cpp
+ wizard/owncloudhttpcredspage.cpp
+ wizard/owncloudoauthcredspage.cpp
+- wizard/flow2authcredspage.cpp
+- wizard/flow2authwidget.cpp
+ wizard/owncloudsetuppage.cpp
+ wizard/owncloudwizardcommon.cpp
+ wizard/owncloudwizard.cpp
+ wizard/owncloudwizardresultpage.cpp
+- wizard/webviewpage.cpp
+- wizard/webview.cpp
+ wizard/slideshow.cpp
+ )
+
+@@ -306,7 +296,7 @@ else()
+ endif()
+
+ add_library(updater STATIC ${updater_SRCS})
+-target_link_libraries(updater ${synclib_NAME} Qt5::Widgets Qt5::Network Qt5::Xml Qt5::WebEngineWidgets)
++target_link_libraries(updater ${synclib_NAME} Qt5::Widgets Qt5::Network Qt5::Xml)
+ target_include_directories(updater PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
+ set_target_properties( ${APPLICATION_EXECUTABLE} PROPERTIES
+diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp
+index ca00a4e..25e6a8b 100644
+--- a/src/gui/accountmanager.cpp
++++ b/src/gui/accountmanager.cpp
+@@ -253,20 +253,6 @@ AccountPtr AccountManager::loadAccountHelper(QSettings &settings)
+ acc->setUrl(urlConfig.toUrl());
+ }
+
+- // Migrate to webflow
+- if (authType == QLatin1String("http")) {
+- authType = "webflow";
+- settings.setValue(QLatin1String(authTypeC), authType);
+-
+- foreach(QString key, settings.childKeys()) {
+- if (!key.startsWith("http_"))
+- continue;
+- auto newkey = QString::fromLatin1("webflow_").append(key.mid(5));
+- settings.setValue(newkey, settings.value((key)));
+- settings.remove(key);
+- }
+- }
+-
+ qCInfo(lcAccountManager) << "Account for" << acc->url() << "using auth type" << authType;
+
+ acc->_serverVersion = settings.value(QLatin1String(serverVersionC)).toString();
+diff --git a/src/gui/creds/credentialsfactory.cpp b/src/gui/creds/credentialsfactory.cpp
+index 6062f70..52e003b 100644
+--- a/src/gui/creds/credentialsfactory.cpp
++++ b/src/gui/creds/credentialsfactory.cpp
+@@ -21,7 +21,6 @@
+ #ifndef NO_SHIBBOLETH
+ #include "creds/shibbolethcredentials.h"
+ #endif
+-#include "creds/webflowcredentials.h"
+
+ namespace OCC {
+
+@@ -40,8 +39,6 @@ namespace CredentialsFactory {
+ } else if (type == "shibboleth") {
+ return new ShibbolethCredentials;
+ #endif
+- } else if (type == "webflow") {
+- return new WebFlowCredentials;
+ } else {
+ qCWarning(lcGuiCredentials, "Unknown credentials type: %s", qPrintable(type));
+ return new DummyCredentials;
+diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp
+index 3d20344..5785cad 100644
+--- a/src/gui/owncloudsetupwizard.cpp
++++ b/src/gui/owncloudsetupwizard.cpp
+@@ -408,7 +408,7 @@ void OwncloudSetupWizard::slotAuthError()
+ }
+
+ _ocWizard->show();
+- if (_ocWizard->currentId() == WizardCommon::Page_ShibbolethCreds || _ocWizard->currentId() == WizardCommon::Page_OAuthCreds || _ocWizard->currentId() == WizardCommon::Page_Flow2AuthCreds) {
++ if (_ocWizard->currentId() == WizardCommon::Page_ShibbolethCreds || _ocWizard->currentId() == WizardCommon::Page_OAuthCreds) {
+ _ocWizard->back();
+ }
+ _ocWizard->displayError(errorMsg, _ocWizard->currentId() == WizardCommon::Page_ServerSetup && checkDowngradeAdvised(reply));
+diff --git a/src/gui/wizard/owncloudsetuppage.cpp b/src/gui/wizard/owncloudsetuppage.cpp
+index 3a956b0..8b32b5b 100644
+--- a/src/gui/wizard/owncloudsetuppage.cpp
++++ b/src/gui/wizard/owncloudsetuppage.cpp
+@@ -143,7 +143,7 @@ void OwncloudSetupPage::slotLogin()
+ void OwncloudSetupPage::slotGotoProviderList()
+ {
+ _ocWizard->setRegistration(true);
+- _ocWizard->setAuthType(DetermineAuthTypeJob::AuthType::WebViewFlow);
++ _ocWizard->setAuthType(DetermineAuthTypeJob::AuthType::OAuth);
+ _authTypeKnown = true;
+ _checking = false;
+ emit completeChanged();
+@@ -258,12 +258,8 @@ int OwncloudSetupPage::nextId() const
+ return WizardCommon::Page_HttpCreds;
+ case DetermineAuthTypeJob::OAuth:
+ return WizardCommon::Page_OAuthCreds;
+- case DetermineAuthTypeJob::LoginFlowV2:
+- return WizardCommon::Page_Flow2AuthCreds;
+ case DetermineAuthTypeJob::Shibboleth:
+ return WizardCommon::Page_ShibbolethCreds;
+- case DetermineAuthTypeJob::WebViewFlow:
+- return WizardCommon::Page_WebView;
+ }
+ return WizardCommon::Page_HttpCreds;
+ }
+diff --git a/src/gui/wizard/owncloudwizard.cpp b/src/gui/wizard/owncloudwizard.cpp
+index e4dda0f..370302c 100644
+--- a/src/gui/wizard/owncloudwizard.cpp
++++ b/src/gui/wizard/owncloudwizard.cpp
+@@ -26,8 +26,6 @@
+ #endif
+ #include "wizard/owncloudadvancedsetuppage.h"
+ #include "wizard/owncloudwizardresultpage.h"
+-#include "wizard/webviewpage.h"
+-#include "wizard/flow2authcredspage.h"
+
+ #include "QProgressIndicator.h"
+
+@@ -46,14 +44,12 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
+ , _setupPage(new OwncloudSetupPage(this))
+ , _httpCredsPage(new OwncloudHttpCredsPage(this))
+ , _browserCredsPage(new OwncloudOAuthCredsPage)
+- , _flow2CredsPage(new Flow2AuthCredsPage)
+ #ifndef NO_SHIBBOLETH
+ , _shibbolethCredsPage(new OwncloudShibbolethCredsPage)
+ #endif
+ , _advancedSetupPage(new OwncloudAdvancedSetupPage)
+ , _resultPage(new OwncloudWizardResultPage)
+ , _credentialsPage(nullptr)
+- , _webViewPage(new WebViewPage(this))
+ , _setupLog()
+ , _registration(false)
+ {
+@@ -61,13 +57,11 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
+ setPage(WizardCommon::Page_ServerSetup, _setupPage);
+ setPage(WizardCommon::Page_HttpCreds, _httpCredsPage);
+ setPage(WizardCommon::Page_OAuthCreds, _browserCredsPage);
+- setPage(WizardCommon::Page_Flow2AuthCreds, _flow2CredsPage);
+ #ifndef NO_SHIBBOLETH
+ setPage(WizardCommon::Page_ShibbolethCreds, _shibbolethCredsPage);
+ #endif
+ setPage(WizardCommon::Page_AdvancedSetup, _advancedSetupPage);
+ setPage(WizardCommon::Page_Result, _resultPage);
+- setPage(WizardCommon::Page_WebView, _webViewPage);
+
+ connect(this, &QDialog::finished, this, &OwncloudWizard::basicSetupFinished);
+
+@@ -79,11 +73,9 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
+ connect(_setupPage, &OwncloudSetupPage::determineAuthType, this, &OwncloudWizard::determineAuthType);
+ connect(_httpCredsPage, &OwncloudHttpCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
+ connect(_browserCredsPage, &OwncloudOAuthCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
+- connect(_flow2CredsPage, &Flow2AuthCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
+ #ifndef NO_SHIBBOLETH
+ connect(_shibbolethCredsPage, &OwncloudShibbolethCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
+ #endif
+- connect(_webViewPage, &WebViewPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
+ connect(_advancedSetupPage, &OwncloudAdvancedSetupPage::createLocalAndRemoteFolders,
+ this, &OwncloudWizard::createLocalAndRemoteFolders);
+ connect(this, &QWizard::customButtonClicked, this, &OwncloudWizard::skipFolderConfiguration);
+@@ -168,20 +160,12 @@ void OwncloudWizard::successfulStep()
+ _browserCredsPage->setConnected();
+ break;
+
+- case WizardCommon::Page_Flow2AuthCreds:
+- _flow2CredsPage->setConnected();
+- break;
+-
+ #ifndef NO_SHIBBOLETH
+ case WizardCommon::Page_ShibbolethCreds:
+ _shibbolethCredsPage->setConnected();
+ break;
+ #endif
+
+- case WizardCommon::Page_WebView:
+- _webViewPage->setConnected();
+- break;
+-
+ case WizardCommon::Page_AdvancedSetup:
+ _advancedSetupPage->directoriesCreated();
+ break;
+@@ -205,10 +189,6 @@ void OwncloudWizard::setAuthType(DetermineAuthTypeJob::AuthType type)
+ #endif
+ if (type == DetermineAuthTypeJob::OAuth) {
+ _credentialsPage = _browserCredsPage;
+- } else if (type == DetermineAuthTypeJob::LoginFlowV2) {
+- _credentialsPage = _flow2CredsPage;
+- } else if (type == DetermineAuthTypeJob::WebViewFlow) {
+- _credentialsPage = _webViewPage;
+ } else { // try Basic auth even for "Unknown"
+ _credentialsPage = _httpCredsPage;
+ }
+@@ -233,7 +213,7 @@ void OwncloudWizard::slotCurrentPageChanged(int id)
+ }
+
+ setOption(QWizard::HaveCustomButton1, id == WizardCommon::Page_AdvancedSetup);
+- if (id == WizardCommon::Page_AdvancedSetup && (_credentialsPage == _browserCredsPage || _credentialsPage == _flow2CredsPage)) {
++ if (id == WizardCommon::Page_AdvancedSetup) {
+ // For OAuth, disable the back button in the Page_AdvancedSetup because we don't want
+ // to re-open the browser.
+ button(QWizard::BackButton)->setEnabled(false);
+diff --git a/src/gui/wizard/owncloudwizard.h b/src/gui/wizard/owncloudwizard.h
+index c1d290d..1e32077 100644
+--- a/src/gui/wizard/owncloudwizard.h
++++ b/src/gui/wizard/owncloudwizard.h
+@@ -39,8 +39,6 @@ class OwncloudAdvancedSetupPage;
+ class OwncloudWizardResultPage;
+ class AbstractCredentials;
+ class AbstractCredentialsWizardPage;
+-class WebViewPage;
+-class Flow2AuthCredsPage;
+
+ /**
+ * @brief The OwncloudWizard class
+@@ -105,11 +103,9 @@ private:
+ #ifndef NO_SHIBBOLETH
+ OwncloudShibbolethCredsPage *_shibbolethCredsPage;
+ #endif
+- Flow2AuthCredsPage *_flow2CredsPage;
+ OwncloudAdvancedSetupPage *_advancedSetupPage;
+ OwncloudWizardResultPage *_resultPage;
+ AbstractCredentialsWizardPage *_credentialsPage;
+- WebViewPage *_webViewPage;
+
+ QStringList _setupLog;
+
+diff --git a/src/gui/wizard/owncloudwizardcommon.h b/src/gui/wizard/owncloudwizardcommon.h
+index d1f7c08..c55ed04 100644
+--- a/src/gui/wizard/owncloudwizardcommon.h
++++ b/src/gui/wizard/owncloudwizardcommon.h
+@@ -38,8 +38,6 @@ namespace WizardCommon {
+ Page_HttpCreds,
+ Page_ShibbolethCreds,
+ Page_OAuthCreds,
+- Page_Flow2AuthCreds,
+- Page_WebView,
+ Page_AdvancedSetup,
+ Page_Result
+ };
+diff --git a/src/libsync/networkjobs.cpp b/src/libsync/networkjobs.cpp
+index c178895..eab4723 100644
+--- a/src/libsync/networkjobs.cpp
++++ b/src/libsync/networkjobs.cpp
+@@ -922,12 +922,12 @@ void DetermineAuthTypeJob::checkBothDone()
+
+ // WebViewFlow > OAuth > Shib > Basic
+ if (_account->serverVersionInt() >= Account::makeServerVersion(12, 0, 0)) {
+- result = WebViewFlow;
++ result = Basic;
+ }
+
+ // LoginFlowV2 > WebViewFlow > OAuth > Shib > Basic
+ if (_account->serverVersionInt() >= Account::makeServerVersion(16, 0, 0)) {
+- result = LoginFlowV2;
++ result = Basic;
+ }
+
+ qCInfo(lcDetermineAuthTypeJob) << "Auth type for" << _account->davUrl() << "is" << result;
+diff --git a/src/libsync/networkjobs.h b/src/libsync/networkjobs.h
+index d0829b4..925ace0 100644
+--- a/src/libsync/networkjobs.h
++++ b/src/libsync/networkjobs.h
+@@ -412,8 +412,6 @@ public:
+ Basic, // also the catch-all fallback for backwards compatibility reasons
+ OAuth,
+ Shibboleth,
+- WebViewFlow,
+- LoginFlowV2
+ };
+
+ explicit DetermineAuthTypeJob(AccountPtr account, QObject *parent = nullptr);