Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock Control: block -1 by 1029206
Please unblock package evolution-data-server. Note that this has to happen together with #1029206: either both packages migrate or none will. [ Reason ] The new upstream stable branch of WebKitGTK has replaced the 5.0 version of the API (for GTK4 users) with version 6.0. The older API was experimental but it was nevertheless used by a few packages, which need to switch to the new API. In Debian this affects three packages: evolution-data-server, gnome-builder (#1033290) and gnome-initial-setup (#1033249). [ Impact ] Future security updates of WebKitGTK won't provide the 5.0 API so it won't be possible to provide them if these packages don't switch to the 6.0 API. [ Tests ] Tested manually with a test case provided by the upstream developer of evolution-data-server. [ Risks ] >From this package's point of view the risks are small because we're only doing the switch to the new WebKit API, which already happened upstream. I don't think this functionality is even used in practice by any current desktop app, since both evolution and gnome-online-accounts have their own gtk3-based oauth2 wizards. [ Checklist ] [x] all changes are documented in the d/changelog [x] I reviewed all changes and I approve them [x] attach debdiff against the package in testing unblock evolution-data-server/3.46.4-2
diff -Nru evolution-data-server-3.46.4/debian/changelog evolution-data-server-3.46.4/debian/changelog --- evolution-data-server-3.46.4/debian/changelog 2023-02-10 13:07:22.000000000 +0100 +++ evolution-data-server-3.46.4/debian/changelog 2023-03-16 01:41:30.000000000 +0100 @@ -1,3 +1,10 @@ +evolution-data-server (3.46.4-2) unstable; urgency=medium + + * Cherry-pick build fixes for latest webkitgtk + * Build against webkitgtk 6.0 instead of 5.0 + + -- Jeremy Bicha <jbi...@ubuntu.com> Wed, 15 Mar 2023 20:41:30 -0400 + evolution-data-server (3.46.4-1) unstable; urgency=medium * New upstream release diff -Nru evolution-data-server-3.46.4/debian/control evolution-data-server-3.46.4/debian/control --- evolution-data-server-3.46.4/debian/control 2023-02-10 13:07:22.000000000 +0100 +++ evolution-data-server-3.46.4/debian/control 2023-03-16 01:41:30.000000000 +0100 @@ -35,7 +35,7 @@ libsoup-3.0-dev (>= 3.1.1), libsqlite3-dev (>= 3.7.17), libwebkit2gtk-4.1-dev [!ia64 !kfreebsd-any], - libwebkit2gtk-5.0-dev [!ia64 !kfreebsd-any], + libwebkitgtk-6.0-dev [!ia64 !kfreebsd-any], libxml2-dev (>= 2.0.0), gtk-doc-tools (>= 1.14), gperf, diff -Nru evolution-data-server-3.46.4/debian/control.in evolution-data-server-3.46.4/debian/control.in --- evolution-data-server-3.46.4/debian/control.in 2023-02-10 13:07:22.000000000 +0100 +++ evolution-data-server-3.46.4/debian/control.in 2023-03-16 01:41:30.000000000 +0100 @@ -31,7 +31,7 @@ libsoup-3.0-dev (>= 3.1.1), libsqlite3-dev (>= 3.7.17), libwebkit2gtk-4.1-dev [!ia64 !kfreebsd-any], - libwebkit2gtk-5.0-dev [!ia64 !kfreebsd-any], + libwebkitgtk-6.0-dev [!ia64 !kfreebsd-any], libxml2-dev (>= 2.0.0), gtk-doc-tools (>= 1.14), gperf, diff -Nru evolution-data-server-3.46.4/debian/patches/M-107-Use-webkitgtk-6.0-API-version.patch evolution-data-server-3.46.4/debian/patches/M-107-Use-webkitgtk-6.0-API-version.patch --- evolution-data-server-3.46.4/debian/patches/M-107-Use-webkitgtk-6.0-API-version.patch 1970-01-01 01:00:00.000000000 +0100 +++ evolution-data-server-3.46.4/debian/patches/M-107-Use-webkitgtk-6.0-API-version.patch 2023-03-16 01:41:30.000000000 +0100 @@ -0,0 +1,26 @@ +From: Michael Catanzaro <mcatanz...@gnome.org> +Date: Tue, 15 Nov 2022 08:58:38 +0000 +Subject: M!107 - Use webkitgtk-6.0 API version + +In WebKitGTK 2.39.1, the GTK 4 API version has been renamed from webkit2gtk-5.0 to webkitgtk-6.0. + +Closes https://gitlab.gnome.org/GNOME/evolution-data-server/-/merge_requests/107 + +(cherry picked from commit cdb16f26f63f5093479a43cab32012845bcf33ed) +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0eaa9b2..b99beb6 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -424,7 +424,7 @@ if(ENABLE_GTK4) + + if(ENABLE_OAUTH2_WEBKITGTK4) + pkg_check_modules_for_option(ENABLE_OAUTH2_WEBKITGTK4 "WebKitGTK gtk4 for built-in OAuth2 authentications" OAUTH2_WEBKITGTK4 +- webkit2gtk-5.0>=${webkit2gtk4_minimum_version} ++ webkitgtk-6.0>=${webkit2gtk4_minimum_version} + ) + endif(ENABLE_OAUTH2_WEBKITGTK4) + endif(ENABLE_GTK4) diff -Nru evolution-data-server-3.46.4/debian/patches/M-108-Try-harder-to-support-webkitgtk-6.0.patch evolution-data-server-3.46.4/debian/patches/M-108-Try-harder-to-support-webkitgtk-6.0.patch --- evolution-data-server-3.46.4/debian/patches/M-108-Try-harder-to-support-webkitgtk-6.0.patch 1970-01-01 01:00:00.000000000 +0100 +++ evolution-data-server-3.46.4/debian/patches/M-108-Try-harder-to-support-webkitgtk-6.0.patch 2023-03-16 01:41:30.000000000 +0100 @@ -0,0 +1,42 @@ +From: Michael Catanzaro <mcatanz...@gnome.org> +Date: Mon, 21 Nov 2022 17:49:29 +0000 +Subject: M!108 - Try harder to support webkitgtk-6.0 + +The cdb16f26f63f5093479a43cab32012845bcf33ed attempted to handle WebKitGTK +API changes, but I forgot the header file name changed as well. + +Closes https://gitlab.gnome.org/GNOME/evolution-data-server/-/merge_requests/108 + +(cherry picked from commit 8d29b0bded2e4e3700ce08e9db2eaeac4400528a) +--- + src/libedataserverui/e-credentials-prompter-impl-oauth2.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c +index 289d0c6..56483ac 100644 +--- a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c ++++ b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c +@@ -32,21 +32,19 @@ + #if GTK_CHECK_VERSION(4, 0, 0) + #ifdef ENABLE_OAUTH2_WEBKITGTK4 + #define WITH_WEBKITGTK 1 ++#include <webkit/webkit.h> + #else + #undef WITH_WEBKITGTK + #endif + #else + #ifdef ENABLE_OAUTH2_WEBKITGTK + #define WITH_WEBKITGTK 1 ++#include <webkit2/webkit2.h> + #else + #undef WITH_WEBKITGTK + #endif + #endif + +-#ifdef WITH_WEBKITGTK +-#include <webkit2/webkit2.h> +-#endif /* WITH_WEBKITGTK */ +- + struct _ECredentialsPrompterImplOAuth2Private { + GMutex property_lock; + diff -Nru evolution-data-server-3.46.4/debian/patches/M-112-Update-for-removal-of-WebKitGTK-sandbox-API.patch evolution-data-server-3.46.4/debian/patches/M-112-Update-for-removal-of-WebKitGTK-sandbox-API.patch --- evolution-data-server-3.46.4/debian/patches/M-112-Update-for-removal-of-WebKitGTK-sandbox-API.patch 1970-01-01 01:00:00.000000000 +0100 +++ evolution-data-server-3.46.4/debian/patches/M-112-Update-for-removal-of-WebKitGTK-sandbox-API.patch 2023-03-16 01:41:30.000000000 +0100 @@ -0,0 +1,26 @@ +From: Michael Catanzaro <mcatanz...@redhat.com> +Date: Thu, 19 Jan 2023 20:12:04 -0600 +Subject: M!112 - Update for removal of WebKitGTK sandbox API + +WebKitGTK 2.39.5 contains an ABI break. The sandbox is now mandatory, so +the function to enable/disable it has been removed. + +(cherry picked from commit 6f4d38537ec2192d7066a7ba145ca7ab0f607e56) +--- + src/libedataserverui/e-credentials-prompter-impl-oauth2.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c +index 530c28a..40e7f8f 100644 +--- a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c ++++ b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c +@@ -1139,7 +1139,9 @@ e_credentials_prompter_impl_oauth2_show_dialog (ECredentialsPrompterImplOAuth2 * + NULL); + + web_context = webkit_web_context_new (); ++#if !WEBKIT_CHECK_VERSION(2, 39, 5) + webkit_web_context_set_sandbox_enabled (web_context, TRUE); ++#endif + credentials_prompter_impl_oauth2_set_proxy (web_context, e_credentials_prompter_get_registry (prompter), prompter_oauth2->priv->auth_source); + + widget = g_object_new (WEBKIT_TYPE_WEB_VIEW, diff -Nru evolution-data-server-3.46.4/debian/patches/M-113-Don-t-accidentally-disable-sandbox-for-GTK-3-users.patch evolution-data-server-3.46.4/debian/patches/M-113-Don-t-accidentally-disable-sandbox-for-GTK-3-users.patch --- evolution-data-server-3.46.4/debian/patches/M-113-Don-t-accidentally-disable-sandbox-for-GTK-3-users.patch 1970-01-01 01:00:00.000000000 +0100 +++ evolution-data-server-3.46.4/debian/patches/M-113-Don-t-accidentally-disable-sandbox-for-GTK-3-users.patch 2023-03-16 01:41:30.000000000 +0100 @@ -0,0 +1,26 @@ +From: Michael Catanzaro <mcatanz...@redhat.com> +Date: Fri, 20 Jan 2023 15:27:45 -0600 +Subject: M!113 - Don't accidentally disable sandbox for GTK 3 users + +In !112 I removed the sandbox enable call because it's gone in the GTK 4 +API where the sandbox is now mandatory. But this code is built for GTK 3 +as well, so where the call is still required. + +(cherry picked from commit 9317117ce9d7eba6265642803266cdd1f0d0ee98) +--- + src/libedataserverui/e-credentials-prompter-impl-oauth2.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c +index 40e7f8f..41e476a 100644 +--- a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c ++++ b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c +@@ -1139,7 +1139,7 @@ e_credentials_prompter_impl_oauth2_show_dialog (ECredentialsPrompterImplOAuth2 * + NULL); + + web_context = webkit_web_context_new (); +-#if !WEBKIT_CHECK_VERSION(2, 39, 5) ++#if !GTK_CHECK_VERSION(4, 0, 0) || !WEBKIT_CHECK_VERSION(2, 39, 5) + webkit_web_context_set_sandbox_enabled (web_context, TRUE); + #endif + credentials_prompter_impl_oauth2_set_proxy (web_context, e_credentials_prompter_get_registry (prompter), prompter_oauth2->priv->auth_source); diff -Nru evolution-data-server-3.46.4/debian/patches/M-114-OAuth2-stop-trying-to-disable-WebKit-plugins.patch evolution-data-server-3.46.4/debian/patches/M-114-OAuth2-stop-trying-to-disable-WebKit-plugins.patch --- evolution-data-server-3.46.4/debian/patches/M-114-OAuth2-stop-trying-to-disable-WebKit-plugins.patch 1970-01-01 01:00:00.000000000 +0100 +++ evolution-data-server-3.46.4/debian/patches/M-114-OAuth2-stop-trying-to-disable-WebKit-plugins.patch 2023-03-16 01:41:30.000000000 +0100 @@ -0,0 +1,24 @@ +From: Michael Catanzaro <mcatanz...@redhat.com> +Date: Wed, 1 Feb 2023 13:36:21 -0600 +Subject: M!114 - OAuth2: stop trying to disable WebKit plugins + +WebKitGTK removed support for plugins in 2.32, but evolution-data-server +already requires 2.34 at least. This property is gone in 2.39.5. + +(cherry picked from commit 816deda308279c3e5a8a816ae2d94542c9084555) +--- + src/libedataserverui/e-credentials-prompter-impl-oauth2.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c +index 56483ac..530c28a 100644 +--- a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c ++++ b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c +@@ -1134,7 +1134,6 @@ e_credentials_prompter_impl_oauth2_show_dialog (ECredentialsPrompterImplOAuth2 * + "enable-html5-local-storage", FALSE, + "enable-offline-web-application-cache", FALSE, + "enable-page-cache", FALSE, +- "enable-plugins", FALSE, + "media-playback-allows-inline", FALSE, + "hardware-acceleration-policy", WEBKIT_HARDWARE_ACCELERATION_POLICY_NEVER, + NULL); diff -Nru evolution-data-server-3.46.4/debian/patches/M-114-OAuth2-use-WebKitNetworkSession-to-manage-proxy-set.patch evolution-data-server-3.46.4/debian/patches/M-114-OAuth2-use-WebKitNetworkSession-to-manage-proxy-set.patch --- evolution-data-server-3.46.4/debian/patches/M-114-OAuth2-use-WebKitNetworkSession-to-manage-proxy-set.patch 1970-01-01 01:00:00.000000000 +0100 +++ evolution-data-server-3.46.4/debian/patches/M-114-OAuth2-use-WebKitNetworkSession-to-manage-proxy-set.patch 2023-03-16 01:41:30.000000000 +0100 @@ -0,0 +1,118 @@ +From: Michael Catanzaro <mcatanz...@redhat.com> +Date: Wed, 1 Feb 2023 13:46:15 -0600 +Subject: M!114 - OAuth2: use WebKitNetworkSession to manage proxy settings + +With WebKitGTK 2.39.6, network proxy settings moved from +WebKitWebsiteDataManager to WebKitNetworkSession. + +(cherry picked from commit 02703b28d798931afccebf79c842b54625a8dcd0) +--- + .../e-credentials-prompter-impl-oauth2.c | 40 +++++++++++++++++++--- + 1 file changed, 36 insertions(+), 4 deletions(-) + +diff --git a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c +index 41e476a..5504475 100644 +--- a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c ++++ b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c +@@ -617,7 +617,12 @@ credentials_prompter_impl_oauth2_sanitize_host (gchar *host) + } + + static void +-credentials_prompter_impl_oauth2_set_proxy (WebKitWebContext *web_context, ++credentials_prompter_impl_oauth2_set_proxy ( ++#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6) ++ WebKitNetworkSession *network_session, ++#else ++ WebKitWebsiteDataManager *data_manager, ++#endif + ESourceRegistry *registry, + ESource *auth_source) + { +@@ -642,7 +647,6 @@ credentials_prompter_impl_oauth2_set_proxy (WebKitWebContext *web_context, + + if (proxy_source && e_source_has_extension (proxy_source, E_SOURCE_EXTENSION_PROXY)) { + ESourceProxy *proxy; +- WebKitWebsiteDataManager *data_manager; + WebKitNetworkProxySettings *proxy_settings = NULL; + GUri *guri; + gchar **ignore_hosts = NULL; +@@ -650,11 +654,14 @@ credentials_prompter_impl_oauth2_set_proxy (WebKitWebContext *web_context, + guint16 port; + + proxy = e_source_get_extension (proxy_source, E_SOURCE_EXTENSION_PROXY); +- data_manager = webkit_web_context_get_website_data_manager (web_context); + + switch (e_source_proxy_get_method (proxy)) { + case E_PROXY_METHOD_DEFAULT: ++#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6) ++ webkit_network_session_set_proxy_settings (network_session, WEBKIT_NETWORK_PROXY_MODE_DEFAULT, NULL); ++#else + webkit_website_data_manager_set_network_proxy_settings (data_manager, WEBKIT_NETWORK_PROXY_MODE_DEFAULT, NULL); ++#endif + break; + case E_PROXY_METHOD_MANUAL: + ignore_hosts = e_source_proxy_dup_ignore_hosts (proxy); +@@ -708,13 +715,21 @@ credentials_prompter_impl_oauth2_set_proxy (WebKitWebContext *web_context, + } + g_free (tmp); + ++#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6) ++ webkit_network_session_set_proxy_settings (network_session, WEBKIT_NETWORK_PROXY_MODE_CUSTOM, proxy_settings); ++#else + webkit_website_data_manager_set_network_proxy_settings (data_manager, WEBKIT_NETWORK_PROXY_MODE_CUSTOM, proxy_settings); ++#endif + break; + case E_PROXY_METHOD_AUTO: + /* not supported by WebKitGTK */ + break; + case E_PROXY_METHOD_NONE: ++#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6) ++ webkit_network_session_set_proxy_settings (network_session, WEBKIT_NETWORK_PROXY_MODE_NO_PROXY, proxy_settings); ++#else + webkit_website_data_manager_set_network_proxy_settings (data_manager, WEBKIT_NETWORK_PROXY_MODE_NO_PROXY, NULL); ++#endif + break; + } + +@@ -828,6 +843,11 @@ e_credentials_prompter_impl_oauth2_show_dialog (ECredentialsPrompterImplOAuth2 * + GtkWidget *progress_bar; + WebKitSettings *webkit_settings; + WebKitWebContext *web_context; ++#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6) ++ WebKitNetworkSession *network_session; ++#else ++ WebKitWebsiteDataManager *data_manager; ++#endif + #endif /* WITH_WEBKITGTK */ + gchar *title, *uri; + GString *info_markup; +@@ -1142,9 +1162,18 @@ e_credentials_prompter_impl_oauth2_show_dialog (ECredentialsPrompterImplOAuth2 * + #if !GTK_CHECK_VERSION(4, 0, 0) || !WEBKIT_CHECK_VERSION(2, 39, 5) + webkit_web_context_set_sandbox_enabled (web_context, TRUE); + #endif +- credentials_prompter_impl_oauth2_set_proxy (web_context, e_credentials_prompter_get_registry (prompter), prompter_oauth2->priv->auth_source); ++#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6) ++ network_session = webkit_network_session_new (NULL, NULL); ++ credentials_prompter_impl_oauth2_set_proxy (network_session, e_credentials_prompter_get_registry (prompter), prompter_oauth2->priv->auth_source); ++#else ++ data_manager = webkit_web_context_get_website_data_manager (web_context); ++ credentials_prompter_impl_oauth2_set_proxy (data_manager, e_credentials_prompter_get_registry (prompter), prompter_oauth2->priv->auth_source); ++#endif + + widget = g_object_new (WEBKIT_TYPE_WEB_VIEW, ++#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6) ++ "network-session", network_session, ++#endif + "settings", webkit_settings, + "web-context", web_context, + NULL); +@@ -1160,6 +1189,9 @@ e_credentials_prompter_impl_oauth2_show_dialog (ECredentialsPrompterImplOAuth2 * + gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scrolled_window), widget); + #else + gtk_container_add (GTK_CONTAINER (scrolled_window), widget); ++#endif ++#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6) ++ g_object_unref (network_session); + #endif + g_object_unref (webkit_settings); + g_object_unref (web_context); diff -Nru evolution-data-server-3.46.4/debian/patches/series evolution-data-server-3.46.4/debian/patches/series --- evolution-data-server-3.46.4/debian/patches/series 2023-02-10 13:07:22.000000000 +0100 +++ evolution-data-server-3.46.4/debian/patches/series 2023-03-16 01:41:30.000000000 +0100 @@ -1,2 +1,8 @@ 01-noinst-libedbus-private.patch ubuntu_gettext_domain.patch +M-107-Use-webkitgtk-6.0-API-version.patch +M-108-Try-harder-to-support-webkitgtk-6.0.patch +M-112-Update-for-removal-of-WebKitGTK-sandbox-API.patch +M-113-Don-t-accidentally-disable-sandbox-for-GTK-3-users.patch +M-114-OAuth2-stop-trying-to-disable-WebKit-plugins.patch +M-114-OAuth2-use-WebKitNetworkSession-to-manage-proxy-set.patch