owncloudclient: update to 2.11.1.

This commit is contained in:
Gonzalo Tornaría 2022-10-29 09:28:30 -03:00 committed by classabbyamp
parent 2118b866b3
commit a9149121fc
4 changed files with 188 additions and 130 deletions

View File

@ -0,0 +1,185 @@
From 63ae3af11673122be4178a9e4a15051b21dd2158 Mon Sep 17 00:00:00 2001
From: Hannah von Reth <hannah.vonreth@owncloud.com>
Date: Wed, 22 Jun 2022 17:14:38 +0200
Subject: [PATCH] CMake: Implement WITH_AUTO_UPDATER
Fixes: #9082
---
CMakeLists.txt | 3 +++
changelog/unreleased/9082 | 5 +++++
src/gui/CMakeLists.txt | 5 ++++-
src/gui/application.cpp | 5 +++++
src/gui/generalsettings.cpp | 11 +++++++++++
src/gui/main.cpp | 5 +++++
6 files changed, 33 insertions(+), 1 deletion(-)
create mode 100644 changelog/unreleased/9082
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 546a5cf42e5..e95689fda78 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -104,6 +104,9 @@ option(BUILD_LIBRARIES_ONLY "BUILD_LIBRARIES_ONLY" OFF)
# build the GUI component, when disabled only owncloudcmd is built
option(BUILD_GUI "BUILD_GUI" ON)
+# build the auto updater component
+option(WITH_AUTO_UPDATER "WITH_AUTO_UPDATER" ON)
+
# specify additional vfs plugins
set(VIRTUAL_FILE_SYSTEM_PLUGINS off suffix win CACHE STRING "Name of internal plugin in src/libsync/vfs or the locations of virtual file plugins")
diff --git a/changelog/unreleased/9082 b/changelog/unreleased/9082
new file mode 100644
index 00000000000..97cf81b1527
--- /dev/null
+++ b/changelog/unreleased/9082
@@ -0,0 +1,5 @@
+Enhancement: Add CMakeOption WITH_AUTO_UPDATER
+
+WITH_AUTO_UPDATER allows to build the client without the auto updater.
+
+https://github.com/owncloud/client/issues/9082
diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
index b87a444044b..733e0401fea 100644
--- a/src/gui/CMakeLists.txt
+++ b/src/gui/CMakeLists.txt
@@ -168,7 +168,10 @@ elseif(UNIX AND NOT APPLE )
guiutility_unix.cpp)
endif()
-add_subdirectory(updater)
+if(WITH_AUTO_UPDATER)
+ add_subdirectory(updater)
+ target_compile_definitions(owncloudCore PRIVATE WITH_AUTO_UPDATER)
+endif()
if(WITH_CRASHREPORTER)
diff --git a/src/gui/application.cpp b/src/gui/application.cpp
index f9cd5c07f79..f2f3eac8f83 100644
--- a/src/gui/application.cpp
+++ b/src/gui/application.cpp
@@ -36,7 +36,9 @@
#include "sharedialog.h"
#include "accountmanager.h"
#include "creds/abstractcredentials.h"
+#ifdef WITH_AUTO_UPDATER
#include "updater/ocupdater.h"
+#endif
#include "owncloudsetupwizard.h"
#include "version.h"
#include "csync_exclude.h"
@@ -370,6 +373,7 @@ Application::Application(int &argc, char **argv)
connect(&_networkConfigurationManager, &QNetworkConfigurationManager::configurationChanged,
this, &Application::slotSystemOnlineConfigurationChanged);
+#ifdef WITH_AUTO_UPDATER
// Update checks
UpdaterScheduler *updaterScheduler = new UpdaterScheduler(this);
connect(updaterScheduler, &UpdaterScheduler::updaterAnnouncement,
@@ -378,6 +382,7 @@ Application::Application(int &argc, char **argv)
});
connect(updaterScheduler, &UpdaterScheduler::requestRestart,
_folderManager.data(), &FolderMan::slotScheduleAppRestart);
+#endif
// Cleanup at Quit.
connect(this, &QCoreApplication::aboutToQuit, this, &Application::slotCleanup);
diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp
index 88fca875eac..b9f74984522 100644
--- a/src/gui/generalsettings.cpp
+++ b/src/gui/generalsettings.cpp
@@ -21,12 +21,15 @@
#include "configfile.h"
#include "theme.h"
+#ifdef WITH_AUTO_UPDATER
#include "updater/updater.h"
#include "updater/ocupdater.h"
#ifdef Q_OS_MAC
// FIXME We should unify those, but Sparkle does everything behind the scene transparently
#include "updater/sparkleupdater.h"
#endif
+#endif
+
#include "ignorelisteditor.h"
#include "config.h"
@@ -110,6 +113,7 @@ GeneralSettings::GeneralSettings(QWidget *parent)
connect(AccountManager::instance(), &AccountManager::accountAdded, this, &GeneralSettings::loadMiscSettings);
// Only our standard brandings currently support beta channel
+#ifdef WITH_AUTO_UPDATER
if (Theme::instance()->appName() != QLatin1String("testpilotcloud")) {
#ifdef Q_OS_MAC
// Because we don't have any statusString from the SparkleUpdater anyway we can hide the whole thing
@@ -122,6 +126,9 @@ GeneralSettings::GeneralSettings(QWidget *parent)
}
#endif
}
+#else
+ _ui->updaterWidget->hide();
+#endif
connect(_ui->about_pushButton, &QPushButton::clicked, this, &GeneralSettings::showAbout);
if (!Theme::instance()->aboutShowCopyright()) {
@@ -166,6 +173,7 @@ void GeneralSettings::showEvent(QShowEvent *)
void GeneralSettings::slotUpdateInfo()
{
+#ifdef WITH_AUTO_UPDATER
if (ConfigFile().skipUpdateCheck() || !Updater::instance()) {
// updater disabled on compile
_ui->updaterWidget->setVisible(false);
@@ -194,10 +202,12 @@ void GeneralSettings::slotUpdateInfo()
_ui->updateChannel->setCurrentIndex(ConfigFile().updateChannel() == "beta" ? 1 : 0);
connect(_ui->updateChannel, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
this, &GeneralSettings::slotUpdateChannelChanged, Qt::UniqueConnection);
+#endif
}
void GeneralSettings::slotUpdateChannelChanged(int index)
{
+#ifdef WITH_AUTO_UPDATER
QString channel = index == 0 ? QStringLiteral("stable") : QStringLiteral("beta");
if (channel == ConfigFile().updateChannel())
return;
@@ -239,6 +249,7 @@ void GeneralSettings::slotUpdateChannelChanged(int index)
}
});
msgBox->open();
+#endif
}
void GeneralSettings::saveMiscSettings()
diff --git a/src/gui/main.cpp b/src/gui/main.cpp
index dec162d04a3..903dc5ff36b 100644
--- a/src/gui/main.cpp
+++ b/src/gui/main.cpp
@@ -21,7 +21,9 @@
#include "resources/loadresources.h"
#include "theme.h"
+#ifdef WITH_AUTO_UPDATER
#include "updater/updater.h"
+#endif
#include <QTimer>
#include <QMessageBox>
@@ -59,6 +61,8 @@ int main(int argc, char **argv)
// TODO: 2.11 move to platform class
Utility::startShutdownWatcher();
#endif
+
+#ifdef WITH_AUTO_UPDATER
// if handleStartup returns true, main()
// needs to terminate here, e.g. because
// the updater is triggered
@@ -66,6 +70,7 @@ int main(int argc, char **argv)
if (updater && updater->handleStartup()) {
return 1;
}
+#endif
// if the application is already running, notify it.
if (app.isRunning()) {

View File

@ -1,44 +0,0 @@
From d987a7e7cb19367d708e21f9ef881afecffe35a3 Mon Sep 17 00:00:00 2001
From: Hannah von Reth <hannah.vonreth@owncloud.com>
Date: Wed, 29 Sep 2021 13:36:26 +0200
Subject: [PATCH] Fix unit test for the root user
---
test/testdownload.cpp | 4 ++++
test/testfolderman.cpp | 8 +++++---
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/test/testdownload.cpp b/test/testdownload.cpp
index b37cb807da..4af30ae72e 100644
--- a/test/testdownload.cpp
+++ b/test/testdownload.cpp
@@ -150,6 +150,10 @@ private slots:
void testMoveFailsInAConflict() {
#ifdef Q_OS_WIN
QSKIP("Not run on windows because permission on directory does not do what is expected");
+#else
+ if (getuid() == 0) {
+ QSKIP("The permissions have no effect on the root user");
+ }
#endif
// Test for https://github.com/owncloud/client/issues/7015
// We want to test the case in which the renaming of the original to the conflict file succeeds,
diff --git a/test/testfolderman.cpp b/test/testfolderman.cpp
index 8fc2cc2627..47213ed6b9 100644
--- a/test/testfolderman.cpp
+++ b/test/testfolderman.cpp
@@ -102,9 +102,11 @@ private slots:
QVERIFY(folderman->checkPathValidityForNewFolder(dirPath + "/link1/subfolder").isNull());
QVERIFY(folderman->checkPathValidityForNewFolder(dirPath + "/link2/free/subfolder").isNull());
- // Should not have the rights
- QVERIFY(!folderman->checkPathValidityForNewFolder("/").isNull());
- QVERIFY(!folderman->checkPathValidityForNewFolder("/usr/bin/somefolder").isNull());
+ if (getuid() != 0) {
+ // Should not have the rights
+ QVERIFY(!folderman->checkPathValidityForNewFolder("/").isNull());
+ QVERIFY(!folderman->checkPathValidityForNewFolder("/usr/bin/somefolder").isNull());
+ }
#endif
#ifdef Q_OS_WIN // drive-letter tests

View File

@ -1,83 +0,0 @@
Index: client-2.10.1/src/common/asserts.h
===================================================================
--- client-2.10.1.orig/src/common/asserts.h
+++ client-2.10.1/src/common/asserts.h
@@ -44,7 +44,7 @@
} else { \
}
-inline OC_REQUIRED_RESULT bool __OC_ENSURE(bool condition, const char *cond, const char *file, int line, const char *info)
+OC_REQUIRED_RESULT inline bool __OC_ENSURE(bool condition, const char *cond, const char *file, int line, const char *info)
{
if (Q_UNLIKELY(!condition)) {
OC_ASSERT_MSG("ENSURE: \"%s\" in file %s, line %d %s", cond, file, line, info);
Index: client-2.10.1/src/common/vfs.h
===================================================================
--- client-2.10.1.orig/src/common/vfs.h
+++ client-2.10.1/src/common/vfs.h
@@ -162,17 +162,17 @@ public:
virtual bool isHydrating() const = 0;
/// Create a new dehydrated placeholder. Called from PropagateDownload.
- virtual OC_REQUIRED_RESULT Result<void, QString> createPlaceholder(const SyncFileItem &item) = 0;
+ OC_REQUIRED_RESULT virtual Result<void, QString> createPlaceholder(const SyncFileItem &item) = 0;
/** Discovery hook: even unchanged files may need UPDATE_METADATA.
*
* For instance cfapi vfs wants local hydrated non-placeholder files to
* become hydrated placeholder files.
*/
- virtual OC_REQUIRED_RESULT bool needsMetadataUpdate(const SyncFileItem &item) = 0;
+ OC_REQUIRED_RESULT virtual bool needsMetadataUpdate(const SyncFileItem &item) = 0;
/// Determine whether the file at the given absolute path is a dehydrated placeholder.
- virtual OC_REQUIRED_RESULT bool isDehydratedPlaceholder(const QString &filePath) = 0;
+ OC_REQUIRED_RESULT virtual bool isDehydratedPlaceholder(const QString &filePath) = 0;
/** Similar to isDehydratedPlaceholder() but used from sync discovery.
*
@@ -181,7 +181,7 @@ public:
*
* Returning true means that type was fully determined.
*/
- virtual OC_REQUIRED_RESULT bool statTypeVirtualFile(csync_file_stat_t *stat, void *stat_data) = 0;
+ OC_REQUIRED_RESULT virtual bool statTypeVirtualFile(csync_file_stat_t *stat, void *stat_data) = 0;
/** Sets the pin state for the item at a path.
*
@@ -192,7 +192,7 @@ public:
*
* relFilePath is relative to the sync folder. Can be "" for root folder.
*/
- virtual OC_REQUIRED_RESULT bool setPinState(const QString &relFilePath, PinState state) = 0;
+ OC_REQUIRED_RESULT virtual bool setPinState(const QString &relFilePath, PinState state) = 0;
/** Returns the pin state of an item at a path.
*
@@ -203,7 +203,7 @@ public:
*
* Returns none on retrieval error.
*/
- virtual OC_REQUIRED_RESULT Optional<PinState> pinState(const QString &relFilePath) = 0;
+ OC_REQUIRED_RESULT virtual Optional<PinState> pinState(const QString &relFilePath) = 0;
/** Returns availability status of an item at a path.
*
@@ -212,7 +212,7 @@ public:
*
* folderPath is relative to the sync folder. Can be "" for root folder.
*/
- virtual OC_REQUIRED_RESULT AvailabilityResult availability(const QString &folderPath) = 0;
+ OC_REQUIRED_RESULT virtual AvailabilityResult availability(const QString &folderPath) = 0;
public slots:
/** Update in-sync state based on SyncFileStatusTracker signal.
@@ -240,7 +240,7 @@ protected:
* If the remote metadata changes, the local placeholder's metadata should possibly
* change as well.
*/
- virtual OC_REQUIRED_RESULT Result<ConvertToPlaceholderResult, QString> updateMetadata(const SyncFileItem &item, const QString &filePath, const QString &replacesFile) = 0;
+ OC_REQUIRED_RESULT virtual Result<ConvertToPlaceholderResult, QString> updateMetadata(const SyncFileItem &item, const QString &filePath, const QString &replacesFile) = 0;
/** Setup the plugin for the folder.
*

View File

@ -1,10 +1,10 @@
# Template file for 'owncloudclient'
pkgname=owncloudclient
version=2.10.1
version=2.11.1
revision=1
wrksrc=client-${version}
build_style=cmake
configure_args="-Wno-dev -DNO_SHIBBOLETH=TRUE"
configure_args="-Wno-dev -DNO_SHIBBOLETH=TRUE -DWITH_AUTO_UPDATER=OFF"
hostmakedepends="pkg-config extra-cmake-modules"
makedepends="qtkeychain-qt5-devel sqlite-devel qt5-declarative-devel
qt5-tools-devel qt5-plugin-odbc qt5-plugin-tds qt5-plugin-pgsql qt5-plugin-mysql
@ -17,7 +17,7 @@ license="GPL-2.0-or-later"
homepage="https://www.owncloud.org"
changelog="https://raw.githubusercontent.com/owncloud/client/master/CHANGELOG.md"
distfiles="https://github.com/owncloud/client/archive/v${version}.tar.gz"
checksum=cd79c46e0c13b606ec08527f9f5f35fe295d4655c12510aa6805ccb797119c49
checksum=72e13d90e4d1c71bdf863a2387f36bcccbc5b410aac2d93144fe3567056ba599
if [ "$CROSS_BUILD" ]; then
hostmakedepends+=" qt5-host-tools qt5-tools-devel"