From 5e9dc5469428fe05f7e70948980a0e79d193b857 Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Tue, 28 Jun 2011 15:56:27 +0100 Subject: * debian/control: - Drop -gtk2 recommends for the gtk3 indicator * debian/rules: - Use dh-autoreconf * debian/patches/fix-timezones.patch: - Add patch to handle g-s-d DBus API change for timezones and to be more robust about querying what the current timezone is --- debian/changelog | 12 +++ debian/control | 3 +- debian/patches/fix-timezones.patch | 168 +++++++++++++++++++++++++++++++++++++ debian/patches/series | 1 + debian/rules | 1 + 5 files changed, 183 insertions(+), 2 deletions(-) create mode 100644 debian/patches/fix-timezones.patch create mode 100644 debian/patches/series diff --git a/debian/changelog b/debian/changelog index c1c6d23..07cd704 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +indicator-datetime (0.2.90-0ubuntu2) oneiric; urgency=low + + * debian/control: + - Drop -gtk2 recommends for the gtk3 indicator + * debian/rules: + - Use dh-autoreconf + * debian/patches/fix-timezones.patch: + - Add patch to handle g-s-d DBus API change for timezones and to + be more robust about querying what the current timezone is + + -- Michael Terry Tue, 28 Jun 2011 15:42:39 +0100 + indicator-datetime (0.2.90-0ubuntu1) oneiric; urgency=low [ Ted Gould ] diff --git a/debian/control b/debian/control index 83819e0..66d7e0a 100644 --- a/debian/control +++ b/debian/control @@ -36,8 +36,7 @@ Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, geoclue-ubuntu-geoip | geoclue-provider -Recommends: indicator-applet | indicator-renderer, - indicator-datetime-gtk2 +Recommends: indicator-applet | indicator-renderer Description: Simple clock A simple clock appearing in the indicator bar diff --git a/debian/patches/fix-timezones.patch b/debian/patches/fix-timezones.patch new file mode 100644 index 0000000..6e32d61 --- /dev/null +++ b/debian/patches/fix-timezones.patch @@ -0,0 +1,168 @@ +Index: indicator-datetime.ubu/src/Makefile.am +=================================================================== +--- indicator-datetime.ubu.orig/src/Makefile.am 2011-06-28 15:42:04.085059003 +0100 ++++ indicator-datetime.ubu/src/Makefile.am 2011-06-28 15:42:19.553059167 +0100 +@@ -34,6 +34,7 @@ + libdatetime_la_CFLAGS = \ + $(INDICATOR_CFLAGS) \ + -Wall -Werror \ ++ -DTIMEZONE_FILE="\"/etc/timezone\"" \ + -DG_LOG_DOMAIN=\"Indicator-Datetime\" + libdatetime_la_LIBADD = \ + $(INDICATOR_LIBS) +@@ -55,6 +56,7 @@ + -Werror \ + -I$(top_srcdir)/libmap \ + $(PREF_CFLAGS) \ ++ -DTIMEZONE_FILE="\"/etc/timezone\"" \ + -DPKGDATADIR="\"$(pkgdatadir)\"" + indicator_datetime_preferences_LDADD = \ + $(top_builddir)/libmap/libmap.la \ +Index: indicator-datetime.ubu/src/datetime-prefs.c +=================================================================== +--- indicator-datetime.ubu.orig/src/datetime-prefs.c 2011-06-28 15:42:04.129059003 +0100 ++++ indicator-datetime.ubu/src/datetime-prefs.c 2011-06-28 15:42:19.553059167 +0100 +@@ -223,10 +223,8 @@ + if (location == NULL) + return; + +- gchar * file = g_build_filename ("/usr/share/zoneinfo", location->zone, NULL); +- g_dbus_proxy_call (proxy, "SetTimezone", g_variant_new ("(s)", file), ++ g_dbus_proxy_call (proxy, "SetTimezone", g_variant_new ("(s)", location->zone), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, dbus_set_answered, "timezone"); +- g_free (file); + + sync_entry (location->zone); + } +Index: indicator-datetime.ubu/src/datetime-service.c +=================================================================== +--- indicator-datetime.ubu.orig/src/datetime-service.c 2011-06-28 15:42:04.249059005 +0100 ++++ indicator-datetime.ubu/src/datetime-service.c 2011-06-28 15:42:19.561059167 +0100 +@@ -221,29 +221,15 @@ + current_timezone = NULL; + } + +- GError * error = NULL; +- gchar * tempzone = NULL; +- if (!g_file_get_contents(TIMEZONE_FILE, &tempzone, NULL, &error)) { +- g_warning("Unable to read timezone file '" TIMEZONE_FILE "': %s", error->message); +- g_error_free(error); ++ current_timezone = read_timezone (); ++ if (current_timezone == NULL) { + return; + } + +- /* This shouldn't happen, so let's make it a big boom! */ +- g_return_if_fail(tempzone != NULL); +- +- /* Note: this really makes sense as strstrip works in place +- so we end up with something a little odd without the dup +- so we have the dup to make sure everything is as expected +- for everyone else. */ +- current_timezone = g_strdup(g_strstrip(tempzone)); +- g_free(tempzone); +- + g_debug("System timezone is: %s", current_timezone); + + check_timezone_sync(); + +- if (error != NULL) g_error_free(error); + return; + } + +@@ -276,10 +262,8 @@ + return; + } + +- gchar * file = g_build_filename ("/usr/share/zoneinfo", (char *)zone, NULL); +- g_dbus_proxy_call (proxy, "SetTimezone", g_variant_new ("(s)", file), ++ g_dbus_proxy_call (proxy, "SetTimezone", g_variant_new ("(s)", zone), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, quick_set_tz_cb, NULL); +- g_free (file); + g_free (zone); + g_object_unref (proxy); + } +Index: indicator-datetime.ubu/src/indicator-datetime.c +=================================================================== +--- indicator-datetime.ubu.orig/src/indicator-datetime.c 2011-06-28 15:42:04.293059005 +0100 ++++ indicator-datetime.ubu/src/indicator-datetime.c 2011-06-28 15:42:19.565059167 +0100 +@@ -761,11 +761,18 @@ + GTimeZone * tz, const gchar * format, + GDateTime ** datetime) + { ++ gboolean unref_tz = FALSE; ++ if (tz == NULL) { ++ gchar * zone = read_timezone (); ++ if (zone == NULL) ++ return; ++ tz = g_time_zone_new(zone); ++ unref_tz = TRUE; ++ g_free (zone); ++ } ++ + GDateTime * datetime_now; +- if (tz == NULL) +- datetime_now = g_date_time_new_now_local(); +- else +- datetime_now = g_date_time_new_now(tz); ++ datetime_now = g_date_time_new_now(tz); + + gchar * timestr; + if (format == NULL) { +@@ -793,6 +800,9 @@ + else + g_date_time_unref(datetime_now); + ++ if (unref_tz) ++ g_time_zone_unref(tz); ++ + return; + } + +Index: indicator-datetime.ubu/src/utils.c +=================================================================== +--- indicator-datetime.ubu.orig/src/utils.c 2011-06-28 15:42:04.169059004 +0100 ++++ indicator-datetime.ubu/src/utils.c 2011-06-28 15:42:19.565059167 +0100 +@@ -117,6 +117,30 @@ + return rv; + } + ++gchar * ++read_timezone () ++{ ++ GError * error = NULL; ++ gchar * tempzone = NULL; ++ if (!g_file_get_contents(TIMEZONE_FILE, &tempzone, NULL, &error)) { ++ g_warning("Unable to read timezone file '" TIMEZONE_FILE "': %s", error->message); ++ g_error_free(error); ++ return NULL; ++ } ++ ++ /* This shouldn't happen, so let's make it a big boom! */ ++ g_return_val_if_fail(tempzone != NULL, NULL); ++ ++ /* Note: this really makes sense as strstrip works in place ++ so we end up with something a little odd without the dup ++ so we have the dup to make sure everything is as expected ++ for everyone else. */ ++ gchar * rv = g_strdup(g_strstrip(tempzone)); ++ g_free(tempzone); ++ ++ return rv; ++} ++ + /* Translate msg according to the locale specified by LC_TIME */ + static char * + T_(const char *msg) +Index: indicator-datetime.ubu/src/utils.h +=================================================================== +--- indicator-datetime.ubu.orig/src/utils.h 2011-06-28 15:42:04.209059004 +0100 ++++ indicator-datetime.ubu/src/utils.h 2011-06-28 15:42:19.569059167 +0100 +@@ -30,6 +30,7 @@ + gboolean is_locale_12h (void); + void split_settings_location (const gchar * location, gchar ** zone, gchar ** name); + gchar * get_current_zone_name (const gchar * location); ++gchar * read_timezone (); + gchar * generate_format_string_full (gboolean show_day, gboolean show_date); + gchar * generate_format_string_at_time (GDateTime * time); + diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..a593ee2 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +fix-timezones.patch diff --git a/debian/rules b/debian/rules index 7950ed1..dfd669b 100755 --- a/debian/rules +++ b/debian/rules @@ -3,6 +3,7 @@ DEB_BUILDDIR = build DEB_MAKE_FLAVORS = gtk2 gtk3 +include /usr/share/cdbs/1/rules/autoreconf.mk include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/gnome.mk -- cgit v1.2.3