Hello community, here is the log from the commit of package deja-dup for openSUSE:Factory checked in at 2018-04-23 15:26:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/deja-dup (Old) and /work/SRC/openSUSE:Factory/.deja-dup.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "deja-dup" Mon Apr 23 15:26:30 2018 rev:51 rq:599995 version:38.0 Changes: -------- --- /work/SRC/openSUSE:Factory/deja-dup/deja-dup.changes 2018-03-08 10:57:13.661924282 +0100 +++ /work/SRC/openSUSE:Factory/.deja-dup.new/deja-dup.changes 2018-04-23 15:26:45.528594905 +0200 @@ -1,0 +2,16 @@ +Fri Apr 13 01:38:05 UTC 2018 - [email protected] + +- Update to version 38.0: + + Drop ulimit for monitor process, it was causing crashes. + + Fix autoscrolling in progress window. + + Exclude snap cache directories by default. + + Updated translations. +- Add gio-2.0, gio-unix-2.0 and goa-backend-1.0 pkgconfig modules + and glib2-tools package BuildRequires to avoid implicit + dependencies. +- Replace pkgconfig(appstream-builder), dbus-1-x11, update-desktop\ + -files and perl-gettext BuildRequires with appstream-glib, dbus-\ + 1, desktop-file-utils and gettext-runtime respectively, what + meson really looks for. + +------------------------------------------------------------------- Old: ---- deja-dup-37.1.tar.xz New: ---- deja-dup-38.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ deja-dup.spec ++++++ --- /var/tmp/diff_new_pack.51hVnz/_old 2018-04-23 15:26:46.204570412 +0200 +++ /var/tmp/diff_new_pack.51hVnz/_new 2018-04-23 15:26:46.208570267 +0200 @@ -17,32 +17,40 @@ Name: deja-dup -Version: 37.1 +Version: 38.0 Release: 0 Summary: Simple backup tool and frontend for duplicity License: GPL-3.0-or-later Group: Productivity/Archiving/Backup URL: https://wiki.gnome.org/Apps/DejaDup Source0: https://launchpad.net/deja-dup/38/%{version}/+download/%{name}-%{version}.tar.xz -# For make check to work, we need dbus-launch -BuildRequires: dbus-1-x11 +# Meson checks for appstream-util, +BuildRequires: appstream-glib +# dbus-run-session, +BuildRequires: dbus-1 +# desktop-file-validate, +BuildRequires: desktop-file-utils +# msgfmt and +BuildRequires: gettext-runtime +# glib-compile-schemas programs. +BuildRequires: glib2-tools BuildRequires: fdupes BuildRequires: libgpg-error-devel BuildRequires: meson -BuildRequires: perl-gettext BuildRequires: pkgconfig -BuildRequires: update-desktop-files BuildRequires: vala >= 0.16.0 BuildRequires: yelp-tools -BuildRequires: pkgconfig(appstream-builder) -BuildRequires: pkgconfig(glib-2.0) >= 2.32 -BuildRequires: pkgconfig(goa-1.0) +BuildRequires: pkgconfig(gio-2.0) >= 2.46 +BuildRequires: pkgconfig(gio-unix-2.0) +BuildRequires: pkgconfig(glib-2.0) >= 2.56.1 +BuildRequires: pkgconfig(goa-1.0) >= 3.8.0 +BuildRequires: pkgconfig(goa-backend-1.0) BuildRequires: pkgconfig(gtk+-3.0) >= 3.22 BuildRequires: pkgconfig(libnautilus-extension) BuildRequires: pkgconfig(libnotify) >= 0.7 BuildRequires: pkgconfig(libpeas-1.0) BuildRequires: pkgconfig(libsecret-1) -BuildRequires: pkgconfig(packagekit-glib2) +BuildRequires: pkgconfig(packagekit-glib2) >= 0.6.5 Recommends: %{name}-lang Recommends: duplicity >= 0.6.25 Recommends: python-boto @@ -84,6 +92,8 @@ %prep %setup -q +# Fix version in meson.build file 38.0 release +sed -i "s|version: '37.1'|version: '38.0'|" meson.build %build export CFLAGS="%{optflags} -Wl,-rpath=%{_libdir}/%{name}" @@ -102,7 +112,7 @@ %files %license COPYING -%doc AUTHORS NEWS +%doc AUTHORS HACKING NEWS %doc %{_datadir}/help/C/org.gnome.DejaDup/ %{_bindir}/deja-dup %{_mandir}/man1/deja-dup.1%{?ext_man} ++++++ deja-dup-37.1.tar.xz -> deja-dup-38.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/deja-dup-37.1/NEWS new/deja-dup-38.0/NEWS --- old/deja-dup-37.1/NEWS 2018-01-02 23:42:18.000000000 +0100 +++ new/deja-dup-38.0/NEWS 2018-04-10 02:59:37.000000000 +0200 @@ -1,3 +1,9 @@ +Déjà Dup 37.1 +------------- + • Fix crash when restoring missing files + • Clarify the error message when trying to use an smb server without a share name + • Update translations + Déjà Dup 37.0 ------------- • Add new Google Drive backend and make it the new default backend diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/deja-dup-37.1/data/org.gnome.DejaDup.Monitor.desktop.in new/deja-dup-38.0/data/org.gnome.DejaDup.Monitor.desktop.in --- old/deja-dup-37.1/data/org.gnome.DejaDup.Monitor.desktop.in 2018-01-02 23:42:18.000000000 +0100 +++ new/deja-dup-38.0/data/org.gnome.DejaDup.Monitor.desktop.in 2018-04-10 02:59:37.000000000 +0200 @@ -6,10 +6,7 @@ Icon=org.gnome.DejaDup -# Try to limit memory -- we have reports of runaway deja-dup-monitor processes -# but I can't reproduce it. So until we fix whatever is happening there, try -# this. LP: #1302416 -Exec=sh -c "ulimit -v 1000000; exec @pkglibexecdir@/deja-dup-monitor" +Exec=@pkglibexecdir@/deja-dup-monitor X-GNOME-Autostart-Delay=120 X-GNOME-AutoRestart=true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/deja-dup-37.1/deja-dup/AssistantOperation.vala new/deja-dup-38.0/deja-dup/AssistantOperation.vala --- old/deja-dup-37.1/deja-dup/AssistantOperation.vala 2018-01-02 23:42:18.000000000 +0100 +++ new/deja-dup-38.0/deja-dup/AssistantOperation.vala 2018-04-10 02:59:37.000000000 +0200 @@ -89,6 +89,9 @@ int saved_x; int saved_y; + const int LOGS_LINES_TO_KEEP = 10000; + bool adjustment_at_end = true; + construct { add_custom_config_pages(); @@ -168,7 +171,6 @@ string log_line = prefix + " " + file.get_parse_name(); - bool adjustment_at_end = false; Gtk.Adjustment adjust = progress_scroll.get_vadjustment(); if (adjust.value >= adjust.upper - adjust.page_size || adjust.page_size == 0 || // means never been set, means not realized @@ -178,19 +180,18 @@ var buffer = progress_text.buffer; if (buffer.get_char_count() > 0) log_line = "\n" + log_line; - if (buffer.get_line_count() >= 100 && adjustment_at_end) { - // If we're watching text scroll by, save memory by only keeping last 100 lines - Gtk.TextIter start, line100; - buffer.get_start_iter(out start); - buffer.get_iter_at_line(out line100, buffer.get_line_count() - 100); - buffer.delete(ref start, ref line100); - } - + Gtk.TextIter iter; buffer.get_end_iter(out iter); buffer.insert_text(ref iter, log_line, (int)log_line.length); - if (adjustment_at_end) - adjust.value = adjust.upper; + + if (buffer.get_line_count() >= LOGS_LINES_TO_KEEP && adjustment_at_end) { + // If we're watching text scroll by, don't keep everything in memory + Gtk.TextIter start, cutoff; + buffer.get_start_iter(out start); + buffer.get_iter_at_line(out cutoff, buffer.get_line_count() - LOGS_LINES_TO_KEEP); + buffer.delete(ref start, ref cutoff); + } } protected void set_secondary_label(string text) @@ -203,6 +204,25 @@ secondary_label.hide(); } + void update_autoscroll() + { + if (adjustment_at_end) + { + Gtk.Adjustment adjust = progress_scroll.get_vadjustment(); + adjust.value = adjust.upper - adjust.page_size; + } + } + + bool stop_autoscroll() + { + Gtk.Adjustment adjust = progress_scroll.get_vadjustment(); + + if (adjust.value < adjust.upper - adjust.page_size) + adjustment_at_end = false; + + return false; + } + protected virtual Gtk.Widget make_progress_page() { var page = new Gtk.Grid(); @@ -238,7 +258,11 @@ progress_text = new Gtk.TextView(); progress_text.editable = false; + progress_text.size_allocate.connect(update_autoscroll); progress_scroll = new Gtk.ScrolledWindow(null, null); + progress_scroll.scroll_event.connect(stop_autoscroll); + ((Gtk.Range)progress_scroll.get_vscrollbar()).change_value.connect(stop_autoscroll); + progress_scroll.expand = true; progress_scroll.child = progress_text; progress_scroll.hscrollbar_policy = Gtk.PolicyType.AUTOMATIC; progress_scroll.vscrollbar_policy = Gtk.PolicyType.AUTOMATIC; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/deja-dup-37.1/deja-dup/help/C/prefs.page new/deja-dup-38.0/deja-dup/help/C/prefs.page --- old/deja-dup-37.1/deja-dup/help/C/prefs.page 2018-01-02 23:42:18.000000000 +0100 +++ new/deja-dup-38.0/deja-dup/help/C/prefs.page 2018-04-10 02:59:37.000000000 +0200 @@ -34,6 +34,7 @@ <item><p><file>~/.steam/root</file> <span its:translate="yes">(which by default also ignores <file its:translate="no">~/.local/share/Steam</file>)</span></p></item> <item><p><file>~/.thumbnails</file></p></item> <item><p><file>~/.xsession-errors</file></p></item> + <item><p><file>~/snap/*/*/.cache</file></p></item> <item><p><file>/proc</file></p></item> <item><p><file>/run</file></p></item> <item><p><file>/sys</file></p></item> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/deja-dup-37.1/deja-dup/main.vala new/deja-dup-38.0/deja-dup/main.vala --- old/deja-dup-37.1/deja-dup/main.vala 2018-01-02 23:42:18.000000000 +0100 +++ new/deja-dup-38.0/deja-dup/main.vala 2018-04-10 02:59:37.000000000 +0200 @@ -41,10 +41,12 @@ const ActionEntry[] actions = { {"backup", backup}, + {"backup-auto", backup_auto}, {"restore", restore}, {"op-show", op_show}, {"prompt-ok", prompt_ok}, {"prompt-cancel", prompt_cancel}, + {"delay", delay, "s"}, {"help", help}, {"about", about}, {"quit", quit}, @@ -126,12 +128,9 @@ backup_full(options.contains("auto")); } else if (options.contains("delay")) { - var note = new Notification(_("Scheduled backup delayed")); - string body = null; - options.lookup("delay", "s", ref body); - note.set_body(body); - note.set_icon(new ThemedIcon("org.gnome.DejaDup")); - send_notification("backup-status", note); + string reason = null; + options.lookup("delay", "s", ref reason); + send_delay_notification(reason); } else if (options.contains("prompt")) { var toplevel = prompt(this); @@ -215,6 +214,21 @@ Gdk.notify_startup_complete(); } + public void delay(GLib.SimpleAction action, GLib.Variant? parameter) + { + string reason = null; + parameter.get("s", ref reason); + send_delay_notification(reason); + } + + void send_delay_notification(string reason) + { + var note = new Notification(_("Scheduled backup delayed")); + note.set_body(reason); + note.set_icon(new ThemedIcon("org.gnome.DejaDup")); + send_notification("backup-status", note); + } + void help() { unowned List<Gtk.Window> list = get_windows(); @@ -241,6 +255,13 @@ } } + public void backup_auto() + { + if (op == null) { + backup_full(true); + } + } + void backup_full(bool automatic) { assign_op(new AssistantBackup(automatic)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/deja-dup-37.1/deja-dup/monitor/monitor.vala new/deja-dup-38.0/deja-dup/monitor/monitor.vala --- old/deja-dup-37.1/deja-dup/monitor/monitor.vala 2018-01-02 23:42:18.000000000 +0100 +++ new/deja-dup-38.0/deja-dup/monitor/monitor.vala 2018-04-10 02:59:37.000000000 +0200 @@ -105,21 +105,27 @@ return date.difference(new DateTime.now_local()); } -static void notify_delay(string reason) +static async void call_remote(string action, string[] args = {}) { + var vargs = new VariantBuilder(new VariantType("av")); + foreach (string arg in args) { + vargs.add("v", new Variant.string(arg)); + } + var platform_args = new VariantBuilder(new VariantType("a{sv}")); try { - var command = DejaDup.nice_prefix("deja-dup --delay"); - string[] argv = command.split(" "); - argv += reason; - - Process.spawn_async(null, argv, null, - SpawnFlags.SEARCH_PATH | - SpawnFlags.STDOUT_TO_DEV_NULL | - SpawnFlags.STDERR_TO_DEV_NULL, - null, null); + var deja = yield new DBusProxy.for_bus(BusType.SESSION, + DBusProxyFlags.NONE, + null, + "org.gnome.DejaDup", + "/org/gnome/DejaDup", + "org.freedesktop.Application", + null); + yield deja.call("ActivateAction", + new Variant("(sava{sv})", action, vargs, platform_args), + DBusCallFlags.NONE, -1, null); } catch (Error e) { - warning("%s\n", e.message); + warning("%s", e.message); } } @@ -150,29 +156,18 @@ if (!ready) { debug("Postponing the backup."); if (!was_reactive && when != null) - notify_delay(when); + yield call_remote("delay", {when}); return; } - try { - debug("Running automatic backup."); - var command = DejaDup.nice_prefix("deja-dup --backup --auto"); - string[] argv = command.split(" "); - - if (DejaDup.in_testing_mode()) { - // fake successful and schedule next run - DejaDup.update_last_run_timestamp(DejaDup.TimestampType.BACKUP); - } - else { - Process.spawn_async(null, argv, null, - SpawnFlags.SEARCH_PATH | - SpawnFlags.STDOUT_TO_DEV_NULL | - SpawnFlags.STDERR_TO_DEV_NULL, - null, null); - } + debug("Running automatic backup."); + + if (DejaDup.in_testing_mode()) { + // fake successful and schedule next run + DejaDup.update_last_run_timestamp(DejaDup.TimestampType.BACKUP); } - catch (Error e) { - warning("%s\n", e.message); + else { + yield call_remote("backup-auto"); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/deja-dup-37.1/libdeja/OperationBackup.vala new/deja-dup-38.0/libdeja/OperationBackup.vala --- old/deja-dup-37.1/libdeja/OperationBackup.vala 2018-01-02 23:42:18.000000000 +0100 +++ new/deja-dup-38.0/libdeja/OperationBackup.vala 2018-04-10 02:59:37.000000000 +0200 @@ -59,10 +59,8 @@ var exclude_list = settings.get_file_list(EXCLUDE_LIST_KEY); // Exclude directories no one wants to backup - var always_excluded = get_always_excluded_dirs(); - foreach (string dir in always_excluded) - job.excludes.prepend(File.new_for_path(dir)); - + add_always_excluded_dirs(ref job.excludes, ref job.exclude_regexps); + foreach (File s in exclude_list) job.excludes.prepend(s); foreach (File s in include_list) @@ -84,17 +82,15 @@ return null; } - List<string> get_always_excluded_dirs() + void add_always_excluded_dirs(ref List<File> files, ref List<string> regexps) { - List<string> rv = new List<string>(); - // User doesn't care about cache string dir = Environment.get_user_cache_dir(); if (dir != null) { - rv.append(dir); + files.prepend(File.new_for_path(dir)); // We also add our special cache dir because if the user still especially // includes the cache dir, we still won't backup our own metadata. - rv.append(Path.build_filename(dir, Config.PACKAGE)); + files.prepend(File.new_for_path(Path.build_filename(dir, Config.PACKAGE))); } // Likewise, user doesn't care about cache-like directories in $HOME. @@ -104,27 +100,26 @@ // When changing this list, remember to update the help documentation too. dir = Environment.get_home_dir(); if (dir != null) { - rv.append(Path.build_filename(dir, ".adobe/Flash_Player/AssetCache")); - rv.append(Path.build_filename(dir, ".ccache")); - rv.append(Path.build_filename(dir, ".gvfs")); - rv.append(Path.build_filename(dir, ".Private")); // encrypted copies of stuff in $HOME - rv.append(Path.build_filename(dir, ".recent-applications.xbel")); - rv.append(Path.build_filename(dir, ".recently-used.xbel")); - rv.append(Path.build_filename(dir, ".steam/root")); - rv.append(Path.build_filename(dir, ".thumbnails")); - rv.append(Path.build_filename(dir, ".xsession-errors")); + files.prepend(File.new_for_path(Path.build_filename(dir, ".adobe/Flash_Player/AssetCache"))); + files.prepend(File.new_for_path(Path.build_filename(dir, ".ccache"))); + files.prepend(File.new_for_path(Path.build_filename(dir, ".gvfs"))); + files.prepend(File.new_for_path(Path.build_filename(dir, ".Private"))); // encrypted copies of stuff in $HOME + files.prepend(File.new_for_path(Path.build_filename(dir, ".recent-applications.xbel"))); + files.prepend(File.new_for_path(Path.build_filename(dir, ".recently-used.xbel"))); + files.prepend(File.new_for_path(Path.build_filename(dir, ".steam/root"))); + files.prepend(File.new_for_path(Path.build_filename(dir, ".thumbnails"))); + files.prepend(File.new_for_path(Path.build_filename(dir, ".xsession-errors"))); + regexps.prepend(Path.build_filename(dir, "snap/*/*/.cache")); } // Skip all of our temporary directories foreach (var tempdir in DejaDup.get_tempdirs()) - rv.append(tempdir); + files.prepend(File.new_for_path(tempdir)); // Skip transient directories - rv.append("/proc"); - rv.append("/run"); - rv.append("/sys"); - - return rv; + files.prepend(File.new_for_path("/proc")); + files.prepend(File.new_for_path("/run")); + files.prepend(File.new_for_path("/sys")); } void fill_metadir() throws Error diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/deja-dup-37.1/libdeja/ToolPlugin.vala new/deja-dup-38.0/libdeja/ToolPlugin.vala --- old/deja-dup-37.1/libdeja/ToolPlugin.vala 2018-01-02 23:42:18.000000000 +0100 +++ new/deja-dup-38.0/libdeja/ToolPlugin.vala 2018-04-10 02:59:37.000000000 +0200 @@ -65,6 +65,7 @@ public List<File> includes; // BACKUP public List<File> excludes; // BACKUP + public List<string> exclude_regexps; // BACKUP protected List<File> _restore_files; public List<File> restore_files { // RESTORE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/deja-dup-37.1/libdeja/tests/runner.vala new/deja-dup-38.0/libdeja/tests/runner.vala --- old/deja-dup-37.1/libdeja/tests/runner.vala 2018-01-02 23:42:18.000000000 +0100 +++ new/deja-dup-38.0/libdeja/tests/runner.vala 2018-04-10 02:59:37.000000000 +0200 @@ -191,7 +191,9 @@ args += "collection-status "; if (mode == Mode.STATUS || mode == Mode.NONE || mode == Mode.DRY || mode == Mode.BACKUP) { - args += "'--exclude=%s' '--include=%s/deja-dup/metadata' ".printf(backupdir, cachedir); + args += "'--exclude=%s' ".printf(backupdir); + args += "'--exclude=%s/snap/*/*/.cache' ".printf(Environment.get_home_dir()); + args += "'--include=%s/deja-dup/metadata' ".printf(cachedir); string[] excludes1 = {"~/Downloads", "~/.local/share/Trash", "~/.xsession-errors", "~/.thumbnails", "~/.steam/root", "~/.Private", "~/.gvfs", "~/.ccache", "~/.adobe/Flash_Player/AssetCache"}; foreach (string ex in excludes1) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/deja-dup-37.1/libdeja/tools/duplicity/DuplicityJob.vala new/deja-dup-38.0/libdeja/tools/duplicity/DuplicityJob.vala --- old/deja-dup-37.1/libdeja/tools/duplicity/DuplicityJob.vala 2018-01-02 23:42:18.000000000 +0100 +++ new/deja-dup-38.0/libdeja/tools/duplicity/DuplicityJob.vala 2018-04-10 02:59:37.000000000 +0200 @@ -310,6 +310,12 @@ includes.sort((CompareFunc)cmp_prefix); excludes.sort((CompareFunc)cmp_prefix); + // TODO: Figure out a more reasonable way to order regexps and files. + // For now, just stick them in the front. + foreach (string r in exclude_regexps) { + saved_argv.append("--exclude=" + r); + } + foreach (File i in includes) { var excludes2 = excludes.copy(); foreach (File e in excludes2) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/deja-dup-37.1/meson.build new/deja-dup-38.0/meson.build --- old/deja-dup-37.1/meson.build 2018-01-02 23:42:18.000000000 +0100 +++ new/deja-dup-38.0/meson.build 2018-04-10 02:59:37.000000000 +0200 @@ -17,7 +17,7 @@ # along with Déjà Dup. If not, see <http://www.gnu.org/licenses/>. project('deja-dup', ['vala', 'c'], - version: '37.0', + version: '37.1', license: 'GPLv3+', default_options: [ 'warning_level=1',
