Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package seafile for openSUSE:Factory checked in at 2026-10-21 20:53:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/seafile (Old) and /work/SRC/openSUSE:Factory/.seafile.new.2252680 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "seafile" Wed Oct 21 20:53:34 2026 rev:25 rq:1386509 version:9.0.22 Changes: -------- --- /work/SRC/openSUSE:Factory/seafile/seafile.changes 2026-09-02 16:59:15.263075647 +0200 +++ /work/SRC/openSUSE:Factory/.seafile.new.2252680/seafile.changes 2026-10-21 20:53:55.507989674 +0200 @@ -1,0 +2,9 @@ +Tue Oct 20 12:59:02 UTC 2026 - Paolo Stivanin <[email protected]> + +- Update to 9.0.22: + * Check if build websockets on linux (#3070) + * Clear read-only attribute before deleting files on Windows (#3065) + * FileSyncError add server field (#3081) + * Update vcpkg and Windows build scripts (#3072, #3094) + +------------------------------------------------------------------- Old: ---- v9.0.21.tar.gz New: ---- v9.0.22.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ seafile.spec ++++++ --- /var/tmp/diff_new_pack.70s3tf/_old 2026-10-21 20:53:56.555034072 +0200 +++ /var/tmp/diff_new_pack.70s3tf/_new 2026-10-21 20:53:56.556034115 +0200 @@ -17,7 +17,7 @@ Name: seafile -Version: 9.0.21 +Version: 9.0.22 Release: 0 Summary: Cloud storage client License: GPL-2.0-only ++++++ v9.0.21.tar.gz -> v9.0.22.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/configure.ac new/seafile-9.0.22/configure.ac --- old/seafile-9.0.21/configure.ac 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/configure.ac 2026-10-10 05:01:50.000000000 +0200 @@ -2,7 +2,7 @@ AC_PREREQ(2.61) -AC_INIT([seafile], [9.0.21], [[email protected]]) +AC_INIT([seafile], [9.0.22], [[email protected]]) AC_CONFIG_HEADER([config.h]) AC_CONFIG_MACRO_DIR([m4]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/daemon/repo-mgr.c new/seafile-9.0.22/daemon/repo-mgr.c --- old/seafile-9.0.21/daemon/repo-mgr.c 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/daemon/repo-mgr.c 2026-10-10 05:01:50.000000000 +0200 @@ -905,6 +905,13 @@ int error_id) { int ret; + SeafRepo *repo = NULL; + const char *server = NULL; + + repo = seaf_repo_manager_get_repo (seaf->repo_mgr, repo_id); + if (repo) { + server = repo->server_url; + } pthread_mutex_lock (&seaf->repo_mgr->priv->db_lock); @@ -925,17 +932,17 @@ if (path != NULL) ret = sqlite_query_exec (seaf->repo_mgr->priv->db, "INSERT INTO FileSyncError " - "(repo_id, repo_name, path, err_id, timestamp) " - "VALUES (?, ?, ?, ?, ?)", - 5, "string", repo_id, "string", repo_name, + "(server, repo_id, repo_name, path, err_id, timestamp) " + "VALUES (?, ?, ?, ?, ?, ?)", + 6, "string", server, "string", repo_id, "string", repo_name, "string", path, "int", error_id, "int64", (gint64)time(NULL)); else ret = sqlite_query_exec (seaf->repo_mgr->priv->db, "INSERT INTO FileSyncError " - "(repo_id, repo_name, err_id, timestamp) " - "VALUES (?, ?, ?, ?)", - 4, "string", repo_id, "string", repo_name, + "(server, repo_id, repo_name, err_id, timestamp) " + "VALUES (?, ?, ?, ?, ?)", + 5, "string", server, "string", repo_id, "string", repo_name, "int", error_id, "int64", (gint64)time(NULL)); out: @@ -947,7 +954,7 @@ collect_file_sync_errors (sqlite3_stmt *stmt, void *data) { GList **pret = data; - const char *repo_id, *repo_name, *path; + const char *server, *repo_id, *repo_name, *path; int id, err_id; gint64 timestamp; SeafileFileSyncError *error; @@ -958,9 +965,11 @@ path = (const char *)sqlite3_column_text (stmt, 3); err_id = sqlite3_column_int (stmt, 4); timestamp = sqlite3_column_int64 (stmt, 5); + server = (const char *)sqlite3_column_text (stmt, 6); error = g_object_new (SEAFILE_TYPE_FILE_SYNC_ERROR, "id", id, + "server", server, "repo_id", repo_id, "repo_name", repo_name, "path", path, @@ -994,7 +1003,7 @@ pthread_mutex_lock (&mgr->priv->db_lock); sqlite_foreach_selected_row (mgr->priv->db, - "SELECT id, repo_id, repo_name, path, err_id, timestamp FROM " + "SELECT id, repo_id, repo_name, path, err_id, timestamp, server FROM " "FileSyncError ORDER BY id DESC LIMIT ? OFFSET ?", collect_file_sync_errors, &ret, 2, "int", limit, "int", offset); @@ -6217,7 +6226,7 @@ } } - if (!DeleteFileW (sub_path_w)) { + if (!win32_delete_file (sub_path_w)) { error = GetLastError(); seaf_warning ("Failed to delete file %s: %lu.\n", sub_path, error); @@ -8119,6 +8128,36 @@ return repo; } +static gboolean +get_server_cb (sqlite3_stmt *stmt, void *vdata) +{ + gboolean *has_server = vdata; + const char *column_server = (const char *)sqlite3_column_text (stmt, 1); + + if (g_strcmp0 (column_server, "server") == 0) { + *has_server = TRUE; + return FALSE; + } + + return TRUE; +} + +static int +file_sync_error_add_server (sqlite3 *db) +{ + int ret = 0; + gboolean has_server = FALSE; + const char *sql = "PRAGMA table_info(FileSyncError);"; + sqlite_foreach_selected_row (db, sql, get_server_cb, &has_server, 0); + + sql = "ALTER TABLE FileSyncError ADD COLUMN server TEXT"; + if (!has_server && sqlite_query_exec (db, sql, 0) < 0) { + ret = -1; + } + + return ret; +} + static sqlite3* open_db (SeafRepoManager *manager, const char *seaf_dir) { @@ -8212,10 +8251,12 @@ sqlite_query_exec (db, sql, 0); sql = "CREATE TABLE IF NOT EXISTS FileSyncError (" - "id INTEGER PRIMARY KEY AUTOINCREMENT, repo_id TEXT, repo_name TEXT, " + "id INTEGER PRIMARY KEY AUTOINCREMENT, server TEXT, repo_id TEXT, repo_name TEXT, " "path TEXT, err_id INTEGER, timestamp INTEGER);"; sqlite_query_exec (db, sql, 0); + file_sync_error_add_server (db); + sql = "CREATE INDEX IF NOT EXISTS FileSyncErrorIndex ON FileSyncError (repo_id, path)"; sqlite_query_exec (db, sql, 0); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/daemon/seafile-config.c new/seafile-9.0.22/daemon/seafile-config.c --- old/seafile-9.0.21/daemon/seafile-config.c 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/daemon/seafile-config.c 2026-10-10 05:01:50.000000000 +0200 @@ -117,8 +117,10 @@ session->use_http_proxy = FALSE; // Disabling proxy completes with KEY_USE_PROXY=false, // so reconnect notification server here to drop the old proxied connection. +#if defined WIN32 || defined __APPLE__ || defined COMPILE_LINUX_WS if (session->notif_mgr) seaf_notif_manager_reconnect_servers (session->notif_mgr); +#endif } } @@ -139,8 +141,10 @@ session->http_proxy_password = g_strdup(value); // The RPC caller updates proxy settings key by key and writes KEY_PROXY_PASSWORD last when proxy is enabled, // so reconnect notifications here to pick up the complete new proxy settings. +#if defined WIN32 || defined __APPLE__ || defined COMPILE_LINUX_WS if (session->notif_mgr) seaf_notif_manager_reconnect_servers (session->notif_mgr); +#endif } if (g_strcmp0(key, KEY_HIDE_WINDOWS_INCOMPATIBLE_PATH_NOTIFICATION) == 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/daemon/vc-utils.c new/seafile-9.0.22/daemon/vc-utils.c --- old/seafile-9.0.21/daemon/vc-utils.c 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/daemon/vc-utils.c 2026-10-10 05:01:50.000000000 +0200 @@ -229,7 +229,7 @@ wcscat (subpath_w, L"\\"); wcscat (subpath_w, fdata->cFileName); - if (!DeleteFileW (subpath_w)) { + if (!win32_delete_file (subpath_w)) { subpath = g_utf16_to_utf8 (subpath_w, -1, NULL, NULL, NULL); seaf_warning ("Failed to remove file %s: %lu.\n", subpath, GetLastError()); g_free (subpath); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/debian/changelog new/seafile-9.0.22/debian/changelog --- old/seafile-9.0.21/debian/changelog 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/debian/changelog 2026-10-10 05:01:50.000000000 +0200 @@ -1,3 +1,8 @@ +seafile-daemon (9.0.22) unstable; urgency=low + + * new upstream release + + -- Jonathan Xu <[email protected]> Fri, 09 Oct 2026 13:44:29 +0800 seafile-daemon (9.0.21) unstable; urgency=low * new upstream release diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/lib/repo.c new/seafile-9.0.22/lib/repo.c --- old/seafile-9.0.21/lib/repo.c 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/lib/repo.c 2026-10-10 05:01:50.000000000 +0200 @@ -161,6 +161,7 @@ enum { SEAFILE_FILE_SYNC_ERROR_0_PROPERTY, SEAFILE_FILE_SYNC_ERROR_ID_PROPERTY, + SEAFILE_FILE_SYNC_ERROR_SERVER_PROPERTY, SEAFILE_FILE_SYNC_ERROR_REPO_ID_PROPERTY, SEAFILE_FILE_SYNC_ERROR_REPO_NAME_PROPERTY, SEAFILE_FILE_SYNC_ERROR_PATH_PROPERTY, @@ -293,6 +294,7 @@ struct _SeafileFileSyncErrorPrivate { gint _id; + gchar* _server; gchar* _repo_id; gchar* _repo_name; gchar* _path; @@ -546,6 +548,9 @@ VALA_EXTERN gint seafile_file_sync_error_get_id (SeafileFileSyncError* self); VALA_EXTERN void seafile_file_sync_error_set_id (SeafileFileSyncError* self, gint value); +VALA_EXTERN const gchar* seafile_file_sync_error_get_server (SeafileFileSyncError* self); +VALA_EXTERN void seafile_file_sync_error_set_server (SeafileFileSyncError* self, + const gchar* value); VALA_EXTERN const gchar* seafile_file_sync_error_get_repo_id (SeafileFileSyncError* self); VALA_EXTERN void seafile_file_sync_error_set_repo_id (SeafileFileSyncError* self, const gchar* value); @@ -2786,6 +2791,33 @@ } const gchar* +seafile_file_sync_error_get_server (SeafileFileSyncError* self) +{ + const gchar* result; + const gchar* _tmp0_; + g_return_val_if_fail (self != NULL, NULL); + _tmp0_ = self->priv->_server; + result = _tmp0_; + return result; +} + +void +seafile_file_sync_error_set_server (SeafileFileSyncError* self, + const gchar* value) +{ + gchar* old_value; + g_return_if_fail (self != NULL); + old_value = seafile_file_sync_error_get_server (self); + if (g_strcmp0 (value, old_value) != 0) { + gchar* _tmp0_; + _tmp0_ = g_strdup (value); + _g_free0 (self->priv->_server); + self->priv->_server = _tmp0_; + g_object_notify_by_pspec ((GObject *) self, seafile_file_sync_error_properties[SEAFILE_FILE_SYNC_ERROR_SERVER_PROPERTY]); + } +} + +const gchar* seafile_file_sync_error_get_repo_id (SeafileFileSyncError* self) { const gchar* result; @@ -2920,6 +2952,7 @@ G_OBJECT_CLASS (klass)->set_property = _vala_seafile_file_sync_error_set_property; G_OBJECT_CLASS (klass)->finalize = seafile_file_sync_error_finalize; g_object_class_install_property (G_OBJECT_CLASS (klass), SEAFILE_FILE_SYNC_ERROR_ID_PROPERTY, seafile_file_sync_error_properties[SEAFILE_FILE_SYNC_ERROR_ID_PROPERTY] = g_param_spec_int ("id", "id", "id", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), SEAFILE_FILE_SYNC_ERROR_SERVER_PROPERTY, seafile_file_sync_error_properties[SEAFILE_FILE_SYNC_ERROR_SERVER_PROPERTY] = g_param_spec_string ("server", "server", "server", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), SEAFILE_FILE_SYNC_ERROR_REPO_ID_PROPERTY, seafile_file_sync_error_properties[SEAFILE_FILE_SYNC_ERROR_REPO_ID_PROPERTY] = g_param_spec_string ("repo-id", "repo-id", "repo-id", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), SEAFILE_FILE_SYNC_ERROR_REPO_NAME_PROPERTY, seafile_file_sync_error_properties[SEAFILE_FILE_SYNC_ERROR_REPO_NAME_PROPERTY] = g_param_spec_string ("repo-name", "repo-name", "repo-name", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), SEAFILE_FILE_SYNC_ERROR_PATH_PROPERTY, seafile_file_sync_error_properties[SEAFILE_FILE_SYNC_ERROR_PATH_PROPERTY] = g_param_spec_string ("path", "path", "path", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); @@ -2939,6 +2972,7 @@ { SeafileFileSyncError * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, SEAFILE_TYPE_FILE_SYNC_ERROR, SeafileFileSyncError); + _g_free0 (self->priv->_server); _g_free0 (self->priv->_repo_id); _g_free0 (self->priv->_repo_name); _g_free0 (self->priv->_path); @@ -2979,6 +3013,9 @@ case SEAFILE_FILE_SYNC_ERROR_ID_PROPERTY: g_value_set_int (value, seafile_file_sync_error_get_id (self)); break; + case SEAFILE_FILE_SYNC_ERROR_SERVER_PROPERTY: + g_value_set_string (value, seafile_file_sync_error_get_server (self)); + break; case SEAFILE_FILE_SYNC_ERROR_REPO_ID_PROPERTY: g_value_set_string (value, seafile_file_sync_error_get_repo_id (self)); break; @@ -3012,6 +3049,9 @@ case SEAFILE_FILE_SYNC_ERROR_ID_PROPERTY: seafile_file_sync_error_set_id (self, g_value_get_int (value)); break; + case SEAFILE_FILE_SYNC_ERROR_SERVER_PROPERTY: + seafile_file_sync_error_set_server (self, g_value_get_string (value)); + break; case SEAFILE_FILE_SYNC_ERROR_REPO_ID_PROPERTY: seafile_file_sync_error_set_repo_id (self, g_value_get_string (value)); break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/lib/repo.vala new/seafile-9.0.22/lib/repo.vala --- old/seafile-9.0.21/lib/repo.vala 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/lib/repo.vala 2026-10-10 05:01:50.000000000 +0200 @@ -128,6 +128,7 @@ public class FileSyncError: Object { public int id { get; set; } + public string server { get; set; } public string repo_id { get; set; } public string repo_name { get; set; } public string path { get; set; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/lib/seafile-object.h new/seafile-9.0.22/lib/seafile-object.h --- old/seafile-9.0.21/lib/seafile-object.h 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/lib/seafile-object.h 2026-10-10 05:01:50.000000000 +0200 @@ -366,6 +366,9 @@ VALA_EXTERN gint seafile_file_sync_error_get_id (SeafileFileSyncError* self); VALA_EXTERN void seafile_file_sync_error_set_id (SeafileFileSyncError* self, gint value); +VALA_EXTERN const gchar* seafile_file_sync_error_get_server (SeafileFileSyncError* self); +VALA_EXTERN void seafile_file_sync_error_set_server (SeafileFileSyncError* self, + const gchar* value); VALA_EXTERN const gchar* seafile_file_sync_error_get_repo_id (SeafileFileSyncError* self); VALA_EXTERN void seafile_file_sync_error_set_repo_id (SeafileFileSyncError* self, const gchar* value); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/lib/utils.c new/seafile-9.0.22/lib/utils.c --- old/seafile-9.0.21/lib/utils.c 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/lib/utils.c 2026-10-10 05:01:50.000000000 +0200 @@ -486,6 +486,46 @@ #endif } +#ifdef WIN32 + +/* DeleteFileW() fails with ERROR_ACCESS_DENIED on a file carrying the + * read-only attribute. Clear the attribute and retry, putting it back if the + * file still cannot be removed, so that a failure leaves nothing behind. + * + * This matters for any worktree holding read-only files. Git, for one, creates + * every loose object and pack file read-only: once another client repacks such + * a repository, the resulting deletions can never be applied here, and the + * whole directory ends up in seafile-recycle-bin instead. + * + * GetLastError() is preserved so callers can still report the original cause. + */ +gboolean +win32_delete_file (const wchar_t *wpath) +{ + DWORD error, attrs; + + if (DeleteFileW (wpath)) + return TRUE; + + error = GetLastError(); + if (error != ERROR_ACCESS_DENIED) + return FALSE; + + attrs = GetFileAttributesW (wpath); + if (attrs != INVALID_FILE_ATTRIBUTES && (attrs & FILE_ATTRIBUTE_READONLY) && + SetFileAttributesW (wpath, attrs & ~FILE_ATTRIBUTE_READONLY)) { + if (DeleteFileW (wpath)) + return TRUE; + error = GetLastError(); + SetFileAttributesW (wpath, attrs); + } + + SetLastError (error); + return FALSE; +} + +#endif /* WIN32 */ + int seaf_util_unlink (const char *path) { @@ -493,7 +533,7 @@ #ifdef WIN32 wchar_t *wpath = win32_long_path (path); - if (!DeleteFileW (wpath)) { + if (!win32_delete_file (wpath)) { ret = -1; errno = windows_error_to_errno (GetLastError()); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/lib/utils.h new/seafile-9.0.22/lib/utils.h --- old/seafile-9.0.21/lib/utils.h 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/lib/utils.h 2026-10-10 05:01:50.000000000 +0200 @@ -97,6 +97,12 @@ __time64_t file_time_to_unix_time (FILETIME *ftime); + +/* Delete a file, clearing the read-only attribute first if that is what + * blocks the deletion. Returns TRUE on success. + */ +gboolean +win32_delete_file (const wchar_t *wpath); #endif int diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/msi/Includes.wxi new/seafile-9.0.22/msi/Includes.wxi --- old/seafile-9.0.21/msi/Includes.wxi 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/msi/Includes.wxi 2026-10-10 05:01:50.000000000 +0200 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <Include Id="SeafileInclude"> - <?define CurrentSeafileVersion="9.0.21" ?> + <?define CurrentSeafileVersion="9.0.22" ?> <!-- Update Guid 不能变 --> <?define CurrentUpdateGuid="65DED1C8-A5F1-4C49-8E7E-B0A8A5A6535C" ?> @@ -174,7 +174,8 @@ <!-- <?define ProductGuid="340A1B15-1F3C-4EB7-91D5-6B210299B7D8" ?> (9.0.18) --> <!-- <?define ProductGuid="F7B60716-0AE3-4E15-BBBF-489D9FE36FDD" ?> (9.0.19) --> <!-- <?define ProductGuid="6D8AA65E-1A89-4E5A-9313-767322FDA996" ?> (9.0.20) --> - <?define ProductGuid="812B8682-0C2A-4D5D-9EC6-97E3FC222955" ?> + <!-- <?define ProductGuid="812B8682-0C2A-4D5D-9EC6-97E3FC222955" ?> (9.0.21) --> + <?define ProductGuid="3FD50E77-EB02-43E1-896E-4D8D63EB8F23" ?> <?define GuidOfCustomComponent="AD201805-3CBD-4834-9097-5D934F7E0000" ?> <?define GuidOfAutoStartComponent="AD201805-3CBD-4834-9097-5D934F7E0001" ?> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/scripts/build/build-msi-vs-cn.py new/seafile-9.0.22/scripts/build/build-msi-vs-cn.py --- old/seafile-9.0.21/scripts/build/build-msi-vs-cn.py 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/scripts/build/build-msi-vs-cn.py 2026-10-10 05:01:50.000000000 +0200 @@ -235,7 +235,7 @@ def __init__(self): Project.__init__(self) self.build_commands = [ - 'devenv "%s/libsearpc.sln" /Build "Release|x64"' %(self.projdir), + 'MSBuild.exe "%s/libsearpc.sln" /t:Build /p:Configuration=Release /p:Platform=x64' %(self.projdir), ] def after_build(self): @@ -248,8 +248,8 @@ def __init__(self): Project.__init__(self) self.build_commands = [ - 'devenv %s/seafile.sln /Build "Release|x64"' %(self.projdir), - 'devenv %s/msi/custom/seafile_custom.sln /Build "Release|x64"' %(self.projdir), + 'MSBuild.exe "%s/seafile.sln" /t:Build /p:Configuration=Release /p:Platform=x64' %(self.projdir), + 'MSBuild.exe "%s/msi/custom/seafile_custom.sln" /t:Build /p:Configuration=Release /p:Platform=x64' %(self.projdir), ] def before_build(self): @@ -281,7 +281,7 @@ def __init__(self): Project.__init__(self) self.build_commands = [ - 'devenv %s/seafile-client.sln /Build "Release|x64"' %(self.projdir) , + 'MSBuild.exe "%s/seafile-client.sln" /t:Build /p:Configuration=Release /p:Platform=x64' %(self.projdir) , ] def before_build(self): @@ -335,8 +335,8 @@ def __init__(self): Project.__init__(self) self.build_commands = [ - 'devenv %s/windows/extensions/seafile_ext.sln /Build "Release|x64"' %(self.projdir), - 'devenv %s/shellext-fix/shellext-fix.sln /Build "Release|x64"' %(self.projdir), + 'MSBuild.exe "%s/windows/extensions/seafile_ext.sln" /t:Build /p:Configuration=Release /p:Platform=x64' %(self.projdir), + 'MSBuild.exe "%s/shellext-fix/shellext-fix.sln" /t:Build /p:Configuration=Release /p:Platform=x64' %(self.projdir), ] def before_build(self): pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/scripts/build/build-msi-vs.py new/seafile-9.0.22/scripts/build/build-msi-vs.py --- old/seafile-9.0.21/scripts/build/build-msi-vs.py 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/scripts/build/build-msi-vs.py 2026-10-10 05:01:50.000000000 +0200 @@ -235,7 +235,7 @@ def __init__(self): Project.__init__(self) self.build_commands = [ - 'devenv "%s/libsearpc.sln" /Rebuild "Release|x64"' %(self.projdir), + 'MSBuild.exe "%s/libsearpc.sln" /t:Build /p:Configuration=Release /p:Platform=x64' %(self.projdir), ] def after_build(self): @@ -248,8 +248,8 @@ def __init__(self): Project.__init__(self) self.build_commands = [ - 'devenv %s/seafile.sln /Rebuild "Release|x64"' %(self.projdir), - 'devenv %s/msi/custom/seafile_custom.sln /Rebuild "Release|x64"' %(self.projdir), + 'MSBuild.exe "%s/seafile.sln" /t:Build /p:Configuration=Release /p:Platform=x64' %(self.projdir), + 'MSBuild.exe "%s/msi/custom/seafile_custom.sln" /t:Build /p:Configuration=Release /p:Platform=x64' %(self.projdir), ] def before_build(self): @@ -281,7 +281,7 @@ def __init__(self): Project.__init__(self) self.build_commands = [ - 'devenv %s/seafile-client.sln /Rebuild "Release|x64"' %(self.projdir) , + 'MSBuild.exe "%s/seafile-client.sln" /t:Build /p:Configuration=Release /p:Platform=x64' %(self.projdir) , ] def before_build(self): @@ -336,8 +336,8 @@ def __init__(self): Project.__init__(self) self.build_commands = [ - 'devenv %s/windows/extensions/seafile_ext.sln /Rebuild "Release|x64"' %(self.projdir), - 'devenv %s/shellext-fix/shellext-fix.sln /Rebuild "Release|x64"' %(self.projdir), + 'MSBuild.exe "%s/windows/extensions/seafile_ext.sln" /t:Build /p:Configuration=Release /p:Platform=x64' %(self.projdir), + 'MSBuild.exe "%s/shellext-fix/shellext-fix.sln" /t:Build /p:Configuration=Release /p:Platform=x64' %(self.projdir), ] def before_build(self): pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/seafile.vcxproj new/seafile-9.0.22/seafile.vcxproj --- old/seafile-9.0.21/seafile.vcxproj 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/seafile.vcxproj 2026-10-10 05:01:50.000000000 +0200 @@ -95,7 +95,7 @@ <WarningLevel>Level3</WarningLevel> <SDLCheck> </SDLCheck> - <PreprocessorDefinitions>WIN32;UNICODE;WIN32_LEAN_AND_MEAN;SEAFILE_CLIENT;PACKAGE_VERSION="9.0.21";%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;UNICODE;WIN32_LEAN_AND_MEAN;SEAFILE_CLIENT;PACKAGE_VERSION="9.0.22";%(PreprocessorDefinitions)</PreprocessorDefinitions> <ConformanceMode>false</ConformanceMode> <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions> <AdditionalIncludeDirectories>$(ProjectDir)..\libsearpc\lib;$(ProjectDir)common;$(ProjectDir)lib;$(ProjectDir)include;$(ProjectDir)daemon;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> @@ -113,7 +113,7 @@ <WarningLevel>Level1</WarningLevel> <SDLCheck> </SDLCheck> - <PreprocessorDefinitions>WIN32;UNICODE;WIN32_LEAN_AND_MEAN;SEAFILE_CLIENT;PACKAGE_VERSION="9.0.21";%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;UNICODE;WIN32_LEAN_AND_MEAN;SEAFILE_CLIENT;PACKAGE_VERSION="9.0.22";%(PreprocessorDefinitions)</PreprocessorDefinitions> <ConformanceMode>false</ConformanceMode> <LanguageStandard>stdcpp17</LanguageStandard> <AdditionalIncludeDirectories>$(ProjectDir)vcpkg_installed\x64-windows\x64-windows\include\glib-2.0;$(ProjectDir)vcpkg_installed\x64-windows\x64-windows\lib\glib-2.0\include;$(ProjectDir)..\libsearpc\lib;$(ProjectDir)common;$(ProjectDir)include;$(ProjectDir)daemon;$(ProjectDir)lib;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> @@ -134,7 +134,7 @@ <IntrinsicFunctions>false</IntrinsicFunctions> <SDLCheck> </SDLCheck> - <PreprocessorDefinitions>WIN32;PACKAGE_VERSION="9.0.21";WIN32_LEAN_AND_MEAN;UNICODE;SEAFILE_CLIENT;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;PACKAGE_VERSION="9.0.22";WIN32_LEAN_AND_MEAN;UNICODE;SEAFILE_CLIENT;%(PreprocessorDefinitions)</PreprocessorDefinitions> <ConformanceMode>false</ConformanceMode> <LanguageStandard>stdcpp17</LanguageStandard> <AdditionalIncludeDirectories>$(ProjectDir)..\libsearpc\lib;$(ProjectDir);$(ProjectDir)daemon;$(ProjectDir)include;$(ProjectDir)lib;$(ProjectDir)common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> @@ -161,7 +161,7 @@ <IntrinsicFunctions>false</IntrinsicFunctions> <SDLCheck> </SDLCheck> - <PreprocessorDefinitions>WIN32;PACKAGE_VERSION="9.0.21";WIN32_LEAN_AND_MEAN;UNICODE;SEAFILE_CLIENT;ENABLE_BREAKPAD;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;PACKAGE_VERSION="9.0.22";WIN32_LEAN_AND_MEAN;UNICODE;SEAFILE_CLIENT;ENABLE_BREAKPAD;%(PreprocessorDefinitions)</PreprocessorDefinitions> <ConformanceMode>false</ConformanceMode> <LanguageStandard>stdcpp17</LanguageStandard> <AdditionalIncludeDirectories>$(ProjectDir)vcpkg_installed\x64-windows\x64-windows\include\glib-2.0;$(ProjectDir)vcpkg_installed\x64-windows\x64-windows\lib\glib-2.0\include;$(ProjectDir)..\libsearpc\lib;$(ProjectDir);$(ProjectDir)common;$(ProjectDir)lib;$(ProjectDir)include;$(ProjectDir)daemon;$(ProjectDir)..\breakpad\src;$(ProjectDir)..\libwebsockets\build\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/vcpkg-configuration.json new/seafile-9.0.22/vcpkg-configuration.json --- old/seafile-9.0.21/vcpkg-configuration.json 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/vcpkg-configuration.json 2026-10-10 05:01:50.000000000 +0200 @@ -1,7 +1,7 @@ { "default-registry": { "kind": "builtin", - "baseline": "e1dfb369fc1c6e58d5850cf67c224caa955309e5" + "baseline": "9e593bb18ea69cc5095e012465dcd675a822ed0d" }, "overlay-ports": [ "./seafile-ports" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seafile-9.0.21/vcpkg.json new/seafile-9.0.22/vcpkg.json --- old/seafile-9.0.21/vcpkg.json 2026-08-07 08:17:18.000000000 +0200 +++ new/seafile-9.0.22/vcpkg.json 2026-10-10 05:01:50.000000000 +0200 @@ -1,5 +1,4 @@ { - "builtin-baseline": "e1dfb369fc1c6e58d5850cf67c224caa955309e5", "dependencies": [ "argon2", "getopt", @@ -7,7 +6,10 @@ "jansson", "libevent", "libwebsockets", - "openssl", + { + "name": "openssl", + "version>=": "3.6.3#0" + }, "pthreads", "sqlite3", "zlib", @@ -17,39 +19,5 @@ "openssl" ] } - ], - "overrides": [ - { - "name": "argon2", - "version": "20190702#1" - }, - { - "name": "openssl", - "version": "3.5.4" - }, - { - "name": "curl", - "version": "8.20.0" - }, - { - "name": "jansson", - "version": "2.12-1" - }, - { - "name": "libevent", - "version": "2.1.11-5" - }, - { - "name": "libwebsockets", - "version": "4.3.2" - }, - { - "name": "sqlite3", - "version": "3.31.1" - }, - { - "name": "zlib", - "version": "1.3.2" - } ] }
