about summary refs log tree commit diff
path: root/pkgs/desktops/gnome/core/evolution-data-server
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/desktops/gnome/core/evolution-data-server')
-rw-r--r--pkgs/desktops/gnome/core/evolution-data-server/default.nix18
-rw-r--r--pkgs/desktops/gnome/core/evolution-data-server/drop-tentative-settings-constructor.patch40
-rw-r--r--pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch99
3 files changed, 133 insertions, 24 deletions
diff --git a/pkgs/desktops/gnome/core/evolution-data-server/default.nix b/pkgs/desktops/gnome/core/evolution-data-server/default.nix
index a604efb9cc59..24a2e7d50e0d 100644
--- a/pkgs/desktops/gnome/core/evolution-data-server/default.nix
+++ b/pkgs/desktops/gnome/core/evolution-data-server/default.nix
@@ -23,6 +23,7 @@
 , gperf
 , wrapGAppsHook
 , glib-networking
+, gsettings-desktop-schemas
 , pcre
 , vala
 , cmake
@@ -50,13 +51,13 @@
 
 stdenv.mkDerivation rec {
   pname = "evolution-data-server";
-  version = "3.48.4";
+  version = "3.50.2";
 
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/evolution-data-server/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "mX4/k7F++wr/zAF77oeAul+iwAnjZVG7yRoIrlUtbWA=";
+    sha256 = "XmYnA4jVDBTzsa4/oNISe5/tznUqzTk7VUUoGwH8SXA=";
   };
 
   patches = [
@@ -64,11 +65,16 @@ stdenv.mkDerivation rec {
       src = ./fix-paths.patch;
       inherit tzdata;
     })
+
+    # Avoid using wrapper function, which the hardcode gsettings
+    # patch generator cannot handle.
+    ./drop-tentative-settings-constructor.patch
   ];
 
   prePatch = ''
     substitute ${./hardcode-gsettings.patch} hardcode-gsettings.patch \
-      --subst-var-by EDS ${glib.makeSchemaPath "$out" "${pname}-${version}"}
+      --subst-var-by EDS ${glib.makeSchemaPath "$out" "${pname}-${version}"} \
+      --subst-var-by GDS ${glib.getSchemaPath gsettings-desktop-schemas}
     patches="$patches $PWD/hardcode-gsettings.patch"
   '';
 
@@ -86,6 +92,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     glib
+    libsecret
     libsoup_3
     gnome-online-accounts
     p11-kit
@@ -116,7 +123,6 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [
     db
-    libsecret
     nss
     nspr
     libical
@@ -158,9 +164,9 @@ stdenv.mkDerivation rec {
         "org.gnome.evolution-data-server.addressbook" = "EDS";
         "org.gnome.evolution-data-server.calendar" = "EDS";
         "org.gnome.evolution-data-server" = "EDS";
-
+        "org.gnome.desktop.interface" = "GDS";
       };
-      inherit src;
+      inherit src patches;
     };
     updateScript =
       let
diff --git a/pkgs/desktops/gnome/core/evolution-data-server/drop-tentative-settings-constructor.patch b/pkgs/desktops/gnome/core/evolution-data-server/drop-tentative-settings-constructor.patch
new file mode 100644
index 000000000000..a86d1966eb6b
--- /dev/null
+++ b/pkgs/desktops/gnome/core/evolution-data-server/drop-tentative-settings-constructor.patch
@@ -0,0 +1,40 @@
+diff --git a/src/calendar/libecal/e-reminder-watcher.c b/src/calendar/libecal/e-reminder-watcher.c
+index f1614f2..c01e8b2 100644
+--- a/src/calendar/libecal/e-reminder-watcher.c
++++ b/src/calendar/libecal/e-reminder-watcher.c
+@@ -2609,26 +2609,6 @@ e_reminder_watcher_load_clock_format (EReminderWatcher *watcher)
+ 	g_free (clock_format);
+ }
+ 
+-static GSettings*
+-e_reminder_watcher_load_settings_tentative (const gchar *schema_id)
+-{
+-	GSettings *settings;
+-	GSettingsSchemaSource *schema_source;
+-	GSettingsSchema *schema;
+-
+-	schema_source = g_settings_schema_source_get_default ();
+-	schema = g_settings_schema_source_lookup (schema_source, schema_id, TRUE);
+-
+-	if (schema == NULL) {
+-		return NULL;
+-	}
+-
+-	settings = g_settings_new (schema_id);
+-	/* only unref after g_settings_new() to avoid needless realloc */
+-	g_settings_schema_unref (schema);
+-	return settings;
+-}
+-
+ static void
+ e_reminder_watcher_init (EReminderWatcher *watcher)
+ {
+@@ -2647,7 +2627,7 @@ e_reminder_watcher_init (EReminderWatcher *watcher)
+ 	watcher->priv = e_reminder_watcher_get_instance_private (watcher);
+ 	watcher->priv->cancellable = g_cancellable_new ();
+ 	watcher->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
+-	watcher->priv->desktop_settings = e_reminder_watcher_load_settings_tentative ("org.gnome.desktop.interface");
++	watcher->priv->desktop_settings = g_settings_new ("org.gnome.desktop.interface");
+ 	if (watcher->priv->desktop_settings) {
+ 		g_signal_connect_object (
+ 			watcher->priv->desktop_settings,
diff --git a/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch b/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch
index 15a42fe4e2a6..f502e89a71bd 100644
--- a/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch
+++ b/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch
@@ -128,10 +128,10 @@ index e85a56b..59d3fe2 100644
  	g_object_unref (settings);
  
 diff --git a/src/addressbook/libedata-book/e-book-meta-backend.c b/src/addressbook/libedata-book/e-book-meta-backend.c
-index 4aaabee..dd6ce6d 100644
+index 63e1016..0492756 100644
 --- a/src/addressbook/libedata-book/e-book-meta-backend.c
 +++ b/src/addressbook/libedata-book/e-book-meta-backend.c
-@@ -143,7 +143,18 @@ ebmb_is_power_saver_enabled (void)
+@@ -144,7 +144,18 @@ ebmb_is_power_saver_enabled (void)
  	GSettings *settings;
  	gboolean enabled = FALSE;
  
@@ -175,15 +175,42 @@ index 42f3457..b4926af 100644
  	cbc->priv->notifyid = 0;
  	cbc->priv->update_alarms_id = 0;
  	cbc->priv->alarm_enabled = FALSE;
+diff --git a/src/calendar/backends/file/e-cal-backend-file.c b/src/calendar/backends/file/e-cal-backend-file.c
+index 2525856..7ecc1a8 100644
+--- a/src/calendar/backends/file/e-cal-backend-file.c
++++ b/src/calendar/backends/file/e-cal-backend-file.c
+@@ -3682,7 +3682,20 @@ e_cal_backend_file_receive_objects (ECalBackendSync *backend,
+ 			if (is_declined) {
+ 				GSettings *settings;
+ 
+-				settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
++				{
++					g_autoptr(GSettingsSchemaSource) schema_source;
++					g_autoptr(GSettingsSchema) schema;
++					schema_source = g_settings_schema_source_new_from_directory("@EDS@",
++												    g_settings_schema_source_get_default(),
++												    TRUE,
++												    NULL);
++					schema = g_settings_schema_source_lookup(schema_source,
++										 "org.gnome.evolution-data-server.calendar",
++										 FALSE);
++					settings = g_settings_new_full(schema,
++								       NULL,
++								       NULL);
++				}
+ 				can_delete = g_settings_get_boolean (settings, "delete-meeting-on-decline");
+ 				g_clear_object (&settings);
+ 			}
 diff --git a/src/calendar/libecal/e-reminder-watcher.c b/src/calendar/libecal/e-reminder-watcher.c
-index 5087de1..5c24b87 100644
+index ade0a73..d7c3e73 100644
 --- a/src/calendar/libecal/e-reminder-watcher.c
 +++ b/src/calendar/libecal/e-reminder-watcher.c
-@@ -2578,7 +2578,19 @@ e_reminder_watcher_init (EReminderWatcher *watcher)
+@@ -2626,8 +2626,33 @@ e_reminder_watcher_init (EReminderWatcher *watcher)
  
  	watcher->priv = e_reminder_watcher_get_instance_private (watcher);
  	watcher->priv->cancellable = g_cancellable_new ();
 -	watcher->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
+-	watcher->priv->desktop_settings = g_settings_new ("org.gnome.desktop.interface");
 +	{
 +		g_autoptr(GSettingsSchemaSource) schema_source;
 +		g_autoptr(GSettingsSchema) schema;
@@ -197,11 +224,25 @@ index 5087de1..5c24b87 100644
 +		watcher->priv->settings = g_settings_new_full(schema, NULL,
 +							      NULL);
 +	}
- 	watcher->priv->scheduled = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, e_reminder_watcher_free_rd_slist);
- 	watcher->priv->default_zone = e_cal_util_copy_timezone (zone);
- 	watcher->priv->timers_enabled = TRUE;
++	{
++		g_autoptr(GSettingsSchemaSource) schema_source;
++		g_autoptr(GSettingsSchema) schema;
++		schema_source = g_settings_schema_source_new_from_directory("@GDS@",
++									    g_settings_schema_source_get_default(),
++									    TRUE,
++									    NULL);
++		schema = g_settings_schema_source_lookup(schema_source,
++							 "org.gnome.desktop.interface",
++							 FALSE);
++		watcher->priv->desktop_settings = g_settings_new_full(schema,
++								      NULL,
++								      NULL);
++	}
+ 	if (watcher->priv->desktop_settings) {
+ 		g_signal_connect_object (
+ 			watcher->priv->desktop_settings,
 diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.c b/src/calendar/libedata-cal/e-cal-meta-backend.c
-index cd91f07..79ede04 100644
+index 27fa153..3679d72 100644
 --- a/src/calendar/libedata-cal/e-cal-meta-backend.c
 +++ b/src/calendar/libedata-cal/e-cal-meta-backend.c
 @@ -156,7 +156,18 @@ ecmb_is_power_saver_enabled (void)
@@ -224,11 +265,33 @@ index cd91f07..79ede04 100644
  
  	if (g_settings_get_boolean (settings, "limit-operations-in-power-saver-mode")) {
  		GPowerProfileMonitor *power_monitor;
+@@ -2633,7 +2644,20 @@ ecmb_receive_object_sync (ECalMetaBackend *meta_backend,
+ 			if (is_declined) {
+ 				GSettings *settings;
+ 
+-				settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
++				{
++					g_autoptr(GSettingsSchemaSource) schema_source;
++					g_autoptr(GSettingsSchema) schema;
++					schema_source = g_settings_schema_source_new_from_directory("@EDS@",
++												    g_settings_schema_source_get_default(),
++												    TRUE,
++												    NULL);
++					schema = g_settings_schema_source_lookup(schema_source,
++										 "org.gnome.evolution-data-server.calendar",
++										 FALSE);
++					settings = g_settings_new_full(schema,
++								       NULL,
++								       NULL);
++				}
+ 				is_declined = g_settings_get_boolean (settings, "delete-meeting-on-decline");
+ 				g_clear_object (&settings);
+ 			}
 diff --git a/src/camel/camel-cipher-context.c b/src/camel/camel-cipher-context.c
-index 8013ba7..1bba6d1 100644
+index bef9188..ce92f6c 100644
 --- a/src/camel/camel-cipher-context.c
 +++ b/src/camel/camel-cipher-context.c
-@@ -1625,7 +1625,18 @@ camel_cipher_can_load_photos (void)
+@@ -1631,7 +1631,18 @@ camel_cipher_can_load_photos (void)
  	GSettings *settings;
  	gboolean load_photos;
  
@@ -249,10 +312,10 @@ index 8013ba7..1bba6d1 100644
  	g_clear_object (&settings);
  
 diff --git a/src/camel/camel-gpg-context.c b/src/camel/camel-gpg-context.c
-index 205372e..f75a88e 100644
+index 4deae76..ebe0a1b 100644
 --- a/src/camel/camel-gpg-context.c
 +++ b/src/camel/camel-gpg-context.c
-@@ -582,7 +582,18 @@ gpg_ctx_get_executable_name (void)
+@@ -747,7 +747,18 @@ gpg_ctx_get_executable_name (void)
  		GSettings *settings;
  		gchar *path;
  
@@ -298,11 +361,11 @@ index e61160c..b6553a4 100644
  		G_CALLBACK (mi_user_headers_settings_changed_cb), NULL);
  	G_UNLOCK (mi_user_headers);
 diff --git a/src/camel/providers/imapx/camel-imapx-server.c b/src/camel/providers/imapx/camel-imapx-server.c
-index 78abb89..9f2a891 100644
+index ef34665..59f294b 100644
 --- a/src/camel/providers/imapx/camel-imapx-server.c
 +++ b/src/camel/providers/imapx/camel-imapx-server.c
-@@ -5591,7 +5591,18 @@ camel_imapx_server_skip_old_flags_update (CamelStore *store)
- 	if (!skip_old_flags_update) {
+@@ -5627,7 +5627,18 @@ camel_imapx_server_do_old_flags_update (CamelFolder *folder)
+ 	if (do_old_flags_update) {
  		GSettings *eds_settings;
  
 -		eds_settings = g_settings_new ("org.gnome.evolution-data-server");
@@ -322,10 +385,10 @@ index 78abb89..9f2a891 100644
  		if (g_settings_get_boolean (eds_settings, "limit-operations-in-power-saver-mode")) {
  			GPowerProfileMonitor *power_monitor;
 diff --git a/src/camel/providers/smtp/camel-smtp-transport.c b/src/camel/providers/smtp/camel-smtp-transport.c
-index effaf06..1b2a003 100644
+index 6556f1e..90f0a5e 100644
 --- a/src/camel/providers/smtp/camel-smtp-transport.c
 +++ b/src/camel/providers/smtp/camel-smtp-transport.c
-@@ -1462,7 +1462,18 @@ smtp_helo (CamelSmtpTransport *transport,
+@@ -1471,7 +1471,18 @@ smtp_helo (CamelSmtpTransport *transport,
  		transport->authtypes = NULL;
  	}
  
@@ -442,7 +505,7 @@ index 3bb1071..199e822 100644
  		g_object_unref (settings);
  
 diff --git a/src/libedataserver/e-oauth2-service.c b/src/libedataserver/e-oauth2-service.c
-index 7eca355..795d822 100644
+index af59b0b..0c7e75e 100644
 --- a/src/libedataserver/e-oauth2-service.c
 +++ b/src/libedataserver/e-oauth2-service.c
 @@ -94,7 +94,18 @@ eos_default_guess_can_process (EOAuth2Service *service,