diff -u deja-dup-7.4/debian/rules deja-dup-7.4/debian/rules --- deja-dup-7.4/debian/rules +++ deja-dup-7.4/debian/rules @@ -7,2 +7,3 @@ DEB_DESTDIR := $(CURDIR)/debian/deja-dup +DEB_DH_MAKESHLIBS_ARGS += --exclude=libnautilus-deja-dup.so diff -u deja-dup-7.4/debian/changelog deja-dup-7.4/debian/changelog --- deja-dup-7.4/debian/changelog +++ deja-dup-7.4/debian/changelog @@ -1,3 +1,16 @@ +deja-dup (7.4-0ubuntu2) jaunty; urgency=low + + * debian/control: + - Use ${misc:Depends} for -dbg package + - Use unique summary for -dbg package + - Indent bullet lists an extra time + * debian/rules: + - Exclude nautilus plugin from makeshlibs + * debian/patches/02_check_notify_caps.patch: + - Patch from upstream to work with notify-osd. LP: #334630 + + -- Michael Terry Wed, 25 Feb 2009 20:53:07 -0500 + deja-dup (7.4-0ubuntu1) jaunty; urgency=low * Initial release (LP: #324388) diff -u deja-dup-7.4/debian/control deja-dup-7.4/debian/control --- deja-dup-7.4/debian/control +++ deja-dup-7.4/debian/control @@ -33,23 +33,24 @@ . Features: - * Uses Amazon S3, an SSH server, or a local folder as a backup location - * Securely encrypts your data - * Schedules regular backups - * Integrates well into your GNOME desktop + * Uses Amazon S3, an SSH server, or a local folder as a backup location + * Securely encrypts your data + * Schedules regular backups + * Integrates well into your GNOME desktop Package: deja-dup-dbg Architecture: any -Depends: deja-dup (= ${binary:Version}) +Depends: deja-dup (= ${binary:Version}), + ${misc:Depends} Priority: extra -Description: Backup utility +Description: Déjà Dup debugging symbols Déjà Dup is a simple backup program. It hides the complexity of doing backups the 'right way' (encrypted, off-site, and regular) and uses duplicity as the backend. . Features: - * Uses Amazon S3, an SSH server, or a local folder as a backup location - * Securely encrypts your data - * Schedules regular backups - * Integrates well into your GNOME desktop + * Uses Amazon S3, an SSH server, or a local folder as a backup location + * Securely encrypts your data + * Schedules regular backups + * Integrates well into your GNOME desktop . This package contains gdb debugging symbols for the deja-dup package. only in patch2: unchanged: --- deja-dup-7.4.orig/debian/patches/02_check_notify_caps.patch +++ deja-dup-7.4/debian/patches/02_check_notify_caps.patch @@ -0,0 +1,137 @@ +diff -Nur -x '*.orig' -x '*~' deja-dup-7.4/applet/StatusIcon.c deja-dup-7.4.new/applet/StatusIcon.c +--- deja-dup-7.4/applet/StatusIcon.c 2009-01-29 15:50:09.000000000 -0500 ++++ deja-dup-7.4.new/applet/StatusIcon.c 2009-02-25 20:44:27.000000000 -0500 +@@ -41,6 +41,7 @@ + static void _status_icon_note_progress_deja_dup_operation_progress (DejaDupOperationBackup* _sender, double percent, gpointer self); + static void status_icon_start (StatusIcon* self, gboolean warn); + static void status_icon_begin_backup (StatusIcon* self); ++static gboolean status_icon_can_display_actions (StatusIcon* self); + static void _status_icon_begin_backup_notify_notification_closed (NotifyNotification* _sender, gpointer self); + static void status_icon_notify_start (StatusIcon* self); + static void _status_icon_activate_enter_gtk_status_icon_activate (StatusIcon* _sender, gpointer self); +@@ -70,6 +71,7 @@ + static GObject * status_icon_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); + static gpointer status_icon_parent_class = NULL; + static void status_icon_finalize (GObject* obj); ++static int _vala_strcmp0 (const char * str1, const char * str2); + + + +@@ -218,6 +220,32 @@ + } + + ++static gboolean status_icon_can_display_actions (StatusIcon* self) { ++ GList* caps; ++ g_return_val_if_fail (self != NULL, FALSE); ++ caps = notify_get_server_caps (); ++ { ++ GList* cap_collection; ++ GList* cap_it; ++ cap_collection = caps; ++ for (cap_it = cap_collection; cap_it != NULL; cap_it = cap_it->next) { ++ const char* _tmp1; ++ char* cap; ++ _tmp1 = NULL; ++ cap = (_tmp1 = (const char*) cap_it->data, (_tmp1 == NULL) ? NULL : g_strdup (_tmp1)); ++ { ++ if (_vala_strcmp0 (cap, "actions") == 0) { ++ gboolean _tmp0; ++ return (_tmp0 = TRUE, cap = (g_free (cap), NULL), _tmp0); ++ } ++ cap = (g_free (cap), NULL); ++ } ++ } ++ } ++ return FALSE; ++} ++ ++ + static void _status_icon_begin_backup_notify_notification_closed (NotifyNotification* _sender, gpointer self) { + status_icon_begin_backup (self); + } +@@ -230,8 +258,10 @@ + inner_error = NULL; + _tmp0 = NULL; + self->priv->note = (_tmp0 = notify_notification_new_with_status_icon (_ ("Backup about to start"), _ ("A scheduled backup will shortly begin. You can instead choose to backup later or not at all."), PACKAGE, (GtkStatusIcon*) self), (self->priv->note == NULL) ? NULL : (self->priv->note = (g_object_unref (self->priv->note), NULL)), _tmp0); +- notify_notification_add_action (self->priv->note, "skip", _ ("Skip Backup"), (NotifyActionCallback) status_icon_skip, self, NULL); +- notify_notification_add_action (self->priv->note, "later", _ ("Backup Later"), (NotifyActionCallback) status_icon_later, self, NULL); ++ if (status_icon_can_display_actions (self)) { ++ notify_notification_add_action (self->priv->note, "skip", _ ("Skip Backup"), (NotifyActionCallback) status_icon_skip, self, NULL); ++ notify_notification_add_action (self->priv->note, "later", _ ("Backup Later"), (NotifyActionCallback) status_icon_later, self, NULL); ++ } + g_signal_connect_object (self->priv->note, "closed", (GCallback) _status_icon_begin_backup_notify_notification_closed, self, 0); + { + notify_notification_show (self->priv->note, &inner_error); +@@ -277,7 +307,9 @@ + g_signal_connect_object ((GtkStatusIcon*) self, "activate", (GCallback) _status_icon_activate_enter_gtk_status_icon_activate, self, 0); + _tmp0 = NULL; + self->priv->note = (_tmp0 = notify_notification_new_with_status_icon (_ ("Encryption password needed"), _ ("Please enter the encryption password for your backup files."), "dialog-password", (GtkStatusIcon*) self), (self->priv->note == NULL) ? NULL : (self->priv->note = (g_object_unref (self->priv->note), NULL)), _tmp0); +- notify_notification_add_action (self->priv->note, "default", _ ("Enter"), (NotifyActionCallback) status_icon_enter, self, NULL); ++ if (status_icon_can_display_actions (self)) { ++ notify_notification_add_action (self->priv->note, "default", _ ("Enter"), (NotifyActionCallback) status_icon_enter, self, NULL); ++ } + { + notify_notification_show (self->priv->note, &inner_error); + if (inner_error != NULL) { +@@ -317,7 +349,9 @@ + g_signal_connect_object ((GtkStatusIcon*) self, "activate", (GCallback) _status_icon_activate_enter_gtk_status_icon_activate, self, 0); + _tmp0 = NULL; + self->priv->note = (_tmp0 = notify_notification_new_with_status_icon (_ ("Server password needed"), _ ("Please enter the server password for your backup."), "dialog-password", (GtkStatusIcon*) self), (self->priv->note == NULL) ? NULL : (self->priv->note = (g_object_unref (self->priv->note), NULL)), _tmp0); +- notify_notification_add_action (self->priv->note, "default", _ ("Enter"), (NotifyActionCallback) status_icon_enter, self, NULL); ++ if (status_icon_can_display_actions (self)) { ++ notify_notification_add_action (self->priv->note, "default", _ ("Enter"), (NotifyActionCallback) status_icon_enter, self, NULL); ++ } + { + notify_notification_show (self->priv->note, &inner_error); + if (inner_error != NULL) { +@@ -354,20 +388,23 @@ + /* don't immediately ask user, wait for our response*/ + static void status_icon_notify_error (StatusIcon* self, DejaDupOperationBackup* op, const char* errstr, const char* detail) { + GError * inner_error; +- guint _tmp0; +- NotifyNotification* _tmp1; ++ NotifyNotification* _tmp0; + g_return_if_fail (self != NULL); + g_return_if_fail (op != NULL); + g_return_if_fail (errstr != NULL); + inner_error = NULL; +- /* TODO: Do something sane with detail. Not urgent right now, it's only used for restore +- We want to stay open until user acknowledges our error/it times out*/ +- g_signal_handlers_disconnect_matched ((DejaDupOperation*) op, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, (g_signal_parse_name ("done", DEJA_DUP_TYPE_OPERATION, &_tmp0, NULL, FALSE), _tmp0), 0, NULL, (GCallback) _status_icon_send_done_deja_dup_operation_done, self); ++ /* TODO: Do something sane with detail. Not urgent right now, it's only used for restore*/ + self->priv->fatal_error = TRUE; +- _tmp1 = NULL; +- self->priv->note = (_tmp1 = notify_notification_new_with_status_icon (_ ("Backup error occurred"), errstr, "dialog-error", (GtkStatusIcon*) self), (self->priv->note == NULL) ? NULL : (self->priv->note = (g_object_unref (self->priv->note), NULL)), _tmp1); +- notify_notification_add_action (self->priv->note, "rerun", _ ("Rerun"), (NotifyActionCallback) status_icon_rerun, self, NULL); +- notify_notification_set_timeout (self->priv->note, NOTIFY_EXPIRES_NEVER); ++ _tmp0 = NULL; ++ self->priv->note = (_tmp0 = notify_notification_new_with_status_icon (_ ("Backup error occurred"), errstr, "dialog-error", (GtkStatusIcon*) self), (self->priv->note == NULL) ? NULL : (self->priv->note = (g_object_unref (self->priv->note), NULL)), _tmp0); ++ if (status_icon_can_display_actions (self)) { ++ guint _tmp1; ++ /* We want to stay open until user acknowledges our error/it times out*/ ++ g_signal_handlers_disconnect_matched ((DejaDupOperation*) op, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, (g_signal_parse_name ("done", DEJA_DUP_TYPE_OPERATION, &_tmp1, NULL, FALSE), _tmp1), 0, NULL, (GCallback) _status_icon_send_done_deja_dup_operation_done, self); ++ notify_notification_add_action (self->priv->note, "rerun", _ ("Rerun"), (NotifyActionCallback) status_icon_rerun, self, NULL); ++ /* Doesn't seem like we can ask if daemon supports timeouts*/ ++ notify_notification_set_timeout (self->priv->note, NOTIFY_EXPIRES_NEVER); ++ } + g_signal_connect_object (self->priv->note, "closed", (GCallback) _status_icon_error_closed_notify_notification_closed, self, 0); + { + notify_notification_show (self->priv->note, &inner_error); +@@ -748,5 +785,16 @@ + } + + ++static int _vala_strcmp0 (const char * str1, const char * str2) { ++ if (str1 == NULL) { ++ return -(str1 != str2); ++ } ++ if (str2 == NULL) { ++ return str1 != str2; ++ } ++ return strcmp (str1, str2); ++} ++ ++ + +