aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog12
-rw-r--r--debian/control3
-rw-r--r--debian/patches/fix-timezones.patch168
-rw-r--r--debian/patches/series1
-rwxr-xr-xdebian/rules1
5 files changed, 183 insertions, 2 deletions
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 <mterry@ubuntu.com> 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