mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-19 00:08:32 +01:00
evolution: 3.42.3 → 3.43.2
https://gitlab.gnome.org/GNOME/evolution/-/compare/3.42.3...3.43.2
This commit is contained in:
parent
d2552f2cb6
commit
15eadc4cdd
2 changed files with 394 additions and 3 deletions
|
@ -0,0 +1,379 @@
|
|||
From b90091b403c10266e56b2724c8d7f9749fa60807 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Tojnar <jtojnar@gmail.com>
|
||||
Date: Sat, 19 Feb 2022 01:52:52 +0100
|
||||
Subject: [PATCH] M!102 - Port to libgweather4
|
||||
|
||||
Adds support for linking against gweather4 (pass -DWITH_GWEATHER4=ON).
|
||||
|
||||
Closes https://gitlab.gnome.org/GNOME/evolution/-/merge_requests/102
|
||||
---
|
||||
CMakeLists.txt | 10 ++-
|
||||
config.h.in | 3 +
|
||||
.../e-weather-location-entry.c | 80 +++++++++++++++++--
|
||||
.../evolution-cal-config-weather.c | 41 +++++++++-
|
||||
4 files changed, 123 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 7247d65f16..1ba2165b4d 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -92,6 +92,7 @@ set(geocode_glib_minimum_version 3.10)
|
||||
set(gladeui_minimum_version 3.10.0)
|
||||
set(gnome_autoar_minimum_version 0.1.1)
|
||||
set(gweather_minimum_version 3.10)
|
||||
+set(gweather4_minimum_version 3.91.0)
|
||||
set(libcanberra_gtk_minimum_version 0.25)
|
||||
set(libnotify_minimum_version 0.7)
|
||||
set(libunity_minimum_version 7.1.4)
|
||||
@@ -668,7 +669,14 @@ endif(ENABLE_TEXT_HIGHLIGHT)
|
||||
add_printable_option(ENABLE_WEATHER "Enable weather calendars" ON)
|
||||
|
||||
if(ENABLE_WEATHER)
|
||||
- pkg_check_modules_for_option(ENABLE_WEATHER "weather calendar" GWEATHER gweather-3.0>=${gweather_minimum_version})
|
||||
+ add_printable_variable(WITH_GWEATHER4 "Use GWeather 4 instead of 3" OFF)
|
||||
+
|
||||
+ if(WITH_GWEATHER4)
|
||||
+ pkg_check_modules_for_option(ENABLE_WEATHER "weather calendar" GWEATHER gweather4>=${gweather4_minimum_version})
|
||||
+ else(WITH_GWEATHER4)
|
||||
+ pkg_check_modules_for_option(ENABLE_WEATHER "weather calendar" GWEATHER gweather-3.0>=${gweather_minimum_version})
|
||||
+ endif(WITH_GWEATHER4)
|
||||
+
|
||||
pkg_check_modules_for_option(ENABLE_WEATHER "weather calendar" GEO geocode-glib-1.0>=${geocode_glib_minimum_version})
|
||||
endif(ENABLE_WEATHER)
|
||||
|
||||
diff --git a/config.h.in b/config.h.in
|
||||
index 881641355a..2b520a96bd 100644
|
||||
--- a/config.h.in
|
||||
+++ b/config.h.in
|
||||
@@ -93,6 +93,9 @@
|
||||
/* When defined GSpell usage is enabled */
|
||||
#cmakedefine HAVE_GSPELL 1
|
||||
|
||||
+/* Defined when linking against gweather4. Cannot just use GWEATHER_CHECK_VERSION because 40.0 made the versions non-monotonic. */
|
||||
+#cmakedefine WITH_GWEATHER4 1
|
||||
+
|
||||
/* Source code highlighting utility */
|
||||
#cmakedefine HIGHLIGHT_COMMAND "@HIGHLIGHT_COMMAND@"
|
||||
|
||||
diff --git a/src/modules/cal-config-weather/e-weather-location-entry.c b/src/modules/cal-config-weather/e-weather-location-entry.c
|
||||
index f4fb48c403..f4ff276633 100644
|
||||
--- a/src/modules/cal-config-weather/e-weather-location-entry.c
|
||||
+++ b/src/modules/cal-config-weather/e-weather-location-entry.c
|
||||
@@ -125,9 +125,17 @@ finalize (GObject *object)
|
||||
priv = entry->priv;
|
||||
|
||||
if (priv->location)
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_unref (priv->location);
|
||||
+ #else
|
||||
gweather_location_unref (priv->location);
|
||||
+ #endif
|
||||
if (priv->top)
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_unref (priv->top);
|
||||
+ #else
|
||||
gweather_location_unref (priv->top);
|
||||
+ #endif
|
||||
if (priv->model)
|
||||
g_object_unref (priv->model);
|
||||
|
||||
@@ -214,11 +222,15 @@ e_weather_location_entry_class_init (EWeatherLocationEntryClass *location_entry_
|
||||
|
||||
g_object_class_install_property (
|
||||
object_class, PROP_TOP,
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_param_spec_object ("top",
|
||||
+ #else
|
||||
g_param_spec_boxed ("top",
|
||||
- "Top Location",
|
||||
- "The GWeatherLocation whose children will be used to fill in the entry",
|
||||
- GWEATHER_TYPE_LOCATION,
|
||||
- G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
|
||||
+ #endif
|
||||
+ "Top Location",
|
||||
+ "The GWeatherLocation whose children will be used to fill in the entry",
|
||||
+ GWEATHER_TYPE_LOCATION,
|
||||
+ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
|
||||
|
||||
g_object_class_install_property (
|
||||
object_class, PROP_SHOW_NAMED_TIMEZONES,
|
||||
@@ -230,11 +242,15 @@ e_weather_location_entry_class_init (EWeatherLocationEntryClass *location_entry_
|
||||
|
||||
g_object_class_install_property (
|
||||
object_class, PROP_LOCATION,
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_param_spec_object ("location",
|
||||
+ #else
|
||||
g_param_spec_boxed ("location",
|
||||
- "Location",
|
||||
- "The selected GWeatherLocation",
|
||||
- GWEATHER_TYPE_LOCATION,
|
||||
- G_PARAM_READWRITE));
|
||||
+ #endif
|
||||
+ "Location",
|
||||
+ "The selected GWeatherLocation",
|
||||
+ GWEATHER_TYPE_LOCATION,
|
||||
+ G_PARAM_READWRITE));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -247,14 +263,22 @@ set_property (GObject *object,
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_TOP:
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ entry->priv->top = g_value_dup_object (value);
|
||||
+ #else
|
||||
entry->priv->top = g_value_dup_boxed (value);
|
||||
+ #endif
|
||||
break;
|
||||
case PROP_SHOW_NAMED_TIMEZONES:
|
||||
entry->priv->show_named_timezones = g_value_get_boolean (value);
|
||||
break;
|
||||
case PROP_LOCATION:
|
||||
e_weather_location_entry_set_location (E_WEATHER_LOCATION_ENTRY (object),
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_value_get_object (value));
|
||||
+ #else
|
||||
g_value_get_boxed (value));
|
||||
+ #endif
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
@@ -275,7 +299,11 @@ get_property (GObject *object,
|
||||
g_value_set_boolean (value, entry->priv->show_named_timezones);
|
||||
break;
|
||||
case PROP_LOCATION:
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_value_set_object (value, entry->priv->location);
|
||||
+ #else
|
||||
g_value_set_boxed (value, entry->priv->location);
|
||||
+ #endif
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
@@ -321,7 +349,11 @@ set_location_internal (EWeatherLocationEntry *entry,
|
||||
priv = entry->priv;
|
||||
|
||||
if (priv->location)
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_unref (priv->location);
|
||||
+ #else
|
||||
gweather_location_unref (priv->location);
|
||||
+ #endif
|
||||
|
||||
g_return_if_fail (iter == NULL || loc == NULL);
|
||||
|
||||
@@ -334,7 +366,11 @@ set_location_internal (EWeatherLocationEntry *entry,
|
||||
priv->custom_text = FALSE;
|
||||
g_free (name);
|
||||
} else if (loc) {
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ priv->location = g_object_ref (loc);
|
||||
+ #else
|
||||
priv->location = gweather_location_ref (loc);
|
||||
+ #endif
|
||||
gtk_entry_set_text (GTK_ENTRY (entry), gweather_location_get_name (loc));
|
||||
priv->custom_text = FALSE;
|
||||
} else {
|
||||
@@ -384,11 +420,19 @@ e_weather_location_entry_set_location (EWeatherLocationEntry *entry,
|
||||
-1);
|
||||
if (gweather_location_equal (loc, cmploc)) {
|
||||
set_location_internal (entry, model, &iter, NULL);
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_unref (cmploc);
|
||||
+ #else
|
||||
gweather_location_unref (cmploc);
|
||||
+ #endif
|
||||
return;
|
||||
}
|
||||
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_unref (cmploc);
|
||||
+ #else
|
||||
gweather_location_unref (cmploc);
|
||||
+ #endif
|
||||
} while (gtk_tree_model_iter_next (model, &iter));
|
||||
|
||||
set_location_internal (entry, model, NULL, loc);
|
||||
@@ -411,7 +455,11 @@ e_weather_location_entry_get_location (EWeatherLocationEntry *entry)
|
||||
g_return_val_if_fail (E_WEATHER_IS_LOCATION_ENTRY (entry), NULL);
|
||||
|
||||
if (entry->priv->location)
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ return g_object_ref (entry->priv->location);
|
||||
+ #else
|
||||
return gweather_location_ref (entry->priv->location);
|
||||
+ #endif
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
@@ -474,14 +522,22 @@ e_weather_location_entry_set_city (EWeatherLocationEntry *entry,
|
||||
|
||||
cmpcode = gweather_location_get_code (cmploc);
|
||||
if (!cmpcode || strcmp (cmpcode, code) != 0) {
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_unref (cmploc);
|
||||
+ #else
|
||||
gweather_location_unref (cmploc);
|
||||
+ #endif
|
||||
continue;
|
||||
}
|
||||
|
||||
if (city_name) {
|
||||
cmpname = gweather_location_get_city_name (cmploc);
|
||||
if (!cmpname || strcmp (cmpname, city_name) != 0) {
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_unref (cmploc);
|
||||
+ #else
|
||||
gweather_location_unref (cmploc);
|
||||
+ #endif
|
||||
g_free (cmpname);
|
||||
continue;
|
||||
}
|
||||
@@ -489,7 +545,11 @@ e_weather_location_entry_set_city (EWeatherLocationEntry *entry,
|
||||
}
|
||||
|
||||
set_location_internal (entry, model, &iter, NULL);
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_unref (cmploc);
|
||||
+ #else
|
||||
gweather_location_unref (cmploc);
|
||||
+ #endif
|
||||
return TRUE;
|
||||
} while (gtk_tree_model_iter_next (model, &iter));
|
||||
|
||||
@@ -611,7 +671,11 @@ fill_location_entry_model (GtkListStore *store,
|
||||
break;
|
||||
}
|
||||
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_clear_object (&child);
|
||||
+ #else
|
||||
g_clear_pointer (&child, gweather_location_unref);
|
||||
+ #endif
|
||||
}
|
||||
|
||||
static gchar *
|
||||
diff --git a/src/modules/cal-config-weather/evolution-cal-config-weather.c b/src/modules/cal-config-weather/evolution-cal-config-weather.c
|
||||
index 423d6e2357..454cde5e05 100644
|
||||
--- a/src/modules/cal-config-weather/evolution-cal-config-weather.c
|
||||
+++ b/src/modules/cal-config-weather/evolution-cal-config-weather.c
|
||||
@@ -72,10 +72,18 @@ cal_config_weather_location_to_string (GBinding *binding,
|
||||
GWeatherLocation *location;
|
||||
gchar *string = NULL;
|
||||
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ location = g_value_get_object (source_value);
|
||||
+ #else
|
||||
location = g_value_get_boxed (source_value);
|
||||
+ #endif
|
||||
#if GWEATHER_CHECK_VERSION(3, 39, 0)
|
||||
if (location)
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_ref (location);
|
||||
+ #else
|
||||
gweather_location_ref (location);
|
||||
+ #endif
|
||||
#endif
|
||||
|
||||
while (location && !gweather_location_has_coords (location)) {
|
||||
@@ -83,7 +91,11 @@ cal_config_weather_location_to_string (GBinding *binding,
|
||||
GWeatherLocation *child = location;
|
||||
|
||||
location = gweather_location_get_parent (child);
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_unref (child);
|
||||
+ #else
|
||||
gweather_location_unref (child);
|
||||
+ #endif
|
||||
#else
|
||||
location = gweather_location_get_parent (location);
|
||||
#endif
|
||||
@@ -101,7 +113,9 @@ cal_config_weather_location_to_string (GBinding *binding,
|
||||
|
||||
string = g_strdup_printf ("%s/%s", lat_str, lon_str);
|
||||
|
||||
- #if GWEATHER_CHECK_VERSION(3, 39, 0)
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_unref (location);
|
||||
+ #elif GWEATHER_CHECK_VERSION(3, 39, 0)
|
||||
gweather_location_unref (location);
|
||||
#endif
|
||||
}
|
||||
@@ -134,7 +148,11 @@ cal_config_weather_find_location_by_coords (GWeatherLocation *start,
|
||||
gweather_location_get_coords (location, &lat, &lon);
|
||||
|
||||
if (lat == latitude && lon == longitude) {
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_ref (location);
|
||||
+ #else
|
||||
gweather_location_ref (location);
|
||||
+ #endif
|
||||
return location;
|
||||
}
|
||||
}
|
||||
@@ -145,7 +163,11 @@ cal_config_weather_find_location_by_coords (GWeatherLocation *start,
|
||||
|
||||
result = cal_config_weather_find_location_by_coords (child, latitude, longitude);
|
||||
if (result) {
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_unref (child);
|
||||
+ #else
|
||||
gweather_location_unref (child);
|
||||
+ #endif
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -154,7 +176,11 @@ cal_config_weather_find_location_by_coords (GWeatherLocation *start,
|
||||
for (ii = 0; children[ii]; ii++) {
|
||||
location = cal_config_weather_find_location_by_coords (children[ii], latitude, longitude);
|
||||
if (location) {
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_ref (location);
|
||||
+ #else
|
||||
gweather_location_ref (location);
|
||||
+ #endif
|
||||
return location;
|
||||
}
|
||||
}
|
||||
@@ -194,7 +220,11 @@ cal_config_weather_string_to_location (GBinding *binding,
|
||||
|
||||
match = cal_config_weather_find_location_by_coords (world, latitude, longitude);
|
||||
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_value_take_object (target_value, match);
|
||||
+ #else
|
||||
g_value_take_boxed (target_value, match);
|
||||
+ #endif
|
||||
|
||||
g_strfreev (tokens);
|
||||
|
||||
@@ -320,8 +350,13 @@ cal_config_weather_insert_widgets (ESourceConfigBackend *backend,
|
||||
G_BINDING_SYNC_CREATE,
|
||||
cal_config_weather_string_to_location,
|
||||
cal_config_weather_location_to_string,
|
||||
+ #ifdef WITH_GWEATHER4
|
||||
+ g_object_ref (world),
|
||||
+ g_object_unref);
|
||||
+ #else
|
||||
gweather_location_ref (world),
|
||||
(GDestroyNotify) gweather_location_unref);
|
||||
+ #endif
|
||||
|
||||
e_binding_bind_property (
|
||||
extension, "units",
|
||||
@@ -329,7 +364,9 @@ cal_config_weather_insert_widgets (ESourceConfigBackend *backend,
|
||||
G_BINDING_BIDIRECTIONAL |
|
||||
G_BINDING_SYNC_CREATE);
|
||||
|
||||
-#if GWEATHER_CHECK_VERSION(3, 39, 0)
|
||||
+#ifdef WITH_GWEATHER4
|
||||
+ g_object_unref (world);
|
||||
+#elif GWEATHER_CHECK_VERSION(3, 39, 0)
|
||||
gweather_location_unref (world);
|
||||
#endif
|
||||
}
|
||||
--
|
||||
2.35.1
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
{ lib, stdenv
|
||||
{ lib
|
||||
, stdenv
|
||||
, cmake
|
||||
, ninja
|
||||
, intltool
|
||||
|
@ -33,6 +34,8 @@
|
|||
, nspr
|
||||
, icu
|
||||
, libcanberra-gtk3
|
||||
, geocode-glib
|
||||
, cmark
|
||||
, bogofilter
|
||||
, gst_all_1
|
||||
, procps
|
||||
|
@ -43,13 +46,19 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "evolution";
|
||||
version = "3.42.4";
|
||||
version = "3.43.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/evolution/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "+oprem1GsinbXfIv3nZCVFIjV/4b7NexjlNt/piJCmU=";
|
||||
sha256 = "nBAQtBOGT5fE4VB96MWaNR9LMXT3DSIiig+dXjmz3pg=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fix build with gweather4
|
||||
# https://gitlab.gnome.org/GNOME/evolution/-/merge_requests/102
|
||||
./0001-M-102-Port-to-libgweather4.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
intltool
|
||||
|
@ -78,6 +87,8 @@ stdenv.mkDerivation rec {
|
|||
highlight
|
||||
icu
|
||||
libcanberra-gtk3
|
||||
geocode-glib
|
||||
cmark
|
||||
libgdata
|
||||
libgweather
|
||||
libical
|
||||
|
@ -107,6 +118,7 @@ stdenv.mkDerivation rec {
|
|||
"-DWITH_SA_LEARN=${spamassassin}/bin/sa-learn"
|
||||
"-DWITH_BOGOFILTER=${bogofilter}/bin/bogofilter"
|
||||
"-DWITH_OPENLDAP=${openldap}"
|
||||
"-DWITH_GWEATHER4=ON"
|
||||
];
|
||||
|
||||
requiredSystemFeatures = [
|
||||
|
|
Loading…
Reference in a new issue