Commit 888a9f0d authored by Iain Lane's avatar Iain Lane

New upstream version 38.4

parents 07e6a300 017e0b81
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: Déjà Dup
Upstream-Contact: Déjà Dup Maintainers <deja-dup-team@lists.launchpad.net>
Source: https://launchpad.net/deja-dup/+download
Source: https://wiki.gnome.org/Apps/DejaDup/Download
Files: *
Copyright: 2008–2011,2016-2017 Michael Terry <mike@mterry.name>
Copyright: 2008–2011,2016-2019 Michael Terry <mike@mterry.name>
2009–2010 Andrew Fister <temposs@gmail.com>
2010 Urban Skudnik <urban.skudnik@gmail.com>
2011–2015 Canonical Ltd
......@@ -18,7 +18,7 @@ Comment: For specific author information, see the git logs
License: GPL-3+
Files: po/*.po
Copyright: 2008–2013 Rosetta Contributors and Canonical Ltd
Copyright: 2008–2019 Rosetta Contributors and Canonical Ltd
License: GPL-3+
Files: libdeja/uriutils.c libdeja/uriutils.h
......@@ -39,20 +39,20 @@ Files: vapi/config.vapi
Copyright: 2007–2008 Jaap Haitsma <jaap@haitsma.org>
License: GPL-3+
Files: deja-dup/help/C/*.page
Copyright: 2010–2011 Michael Terry <mike@mterry.name>
2011-2013 Canonical Ltd
Files: help/C/*.page
Copyright: 2010–2011,2016-2019 Michael Terry <mike@mterry.name>
2011-2015 Canonical Ltd
License: CC-BY-SA-3.0
Files: deja-dup/help/*/*.po
Copyright: 2008–2013 Rosetta Contributors and Canonical Ltd
Files: help/*.po
Copyright: 2008–2019 Rosetta Contributors and Canonical Ltd
License: CC-BY-SA-3.0
Files: data/icons/hicolor/scalable/apps/org.gnome.DejaDup.svg
Copyright: 2011 Lapo Calamandrei <calamandrei@gmail.com>
License: LGPL-3+ or CC-BY-SA-3.0
Files: data/icons/org.gnome.DejaDup.svg
Copyright: 2019 Jakub Steiner <jimmac@gmail.com>
License: CC-BY-SA-4.0
Files: data/icons/hicolor/symbolic/apps/org.gnome.DejaDup-symbolic.svg
Files: data/icons/org.gnome.DejaDup-symbolic.svg
Copyright: 2012 Barbara Muraus <barbara.muraus@gmail.com>
License: CC-BY-SA-3.0
......@@ -128,3 +128,18 @@ License: CC-BY-SA-3.0
license.
.
For more information, see http://creativecommons.org/licenses/by-sa/3.0/
License: CC-BY-SA-4.0
You are free:
to Share (to copy, distribute and transmit the work) and
to Remix (to adapt the work) under the following conditions:
.
Attribution — You must attribute the work in the manner specified by the
author or licensor (but not in any way that suggests that they endorse you
or your use of the work).
.
Share Alike — If you alter, transform, or build upon this work, you may
distribute the resulting work only under the same, similar or a compatible
license.
.
For more information, see http://creativecommons.org/licenses/by-sa/4.0/
= New to deja-dup? =
When making a non-trivial change, remember to add yourself to AUTHORS and deja-dup/help/C/credits.page
When making a non-trivial change, remember to add yourself to AUTHORS and help/C/credits.page
deja-dup uses meson, but for most development purposes, you can simply use the convenience top-level Makefile:
* To build: make
......
# -*- Mode: Makefile; indent-tabs-mode: t; tab-width: 2 -*-
#
# This file is part of Déjà Dup.
# For copyright information, see AUTHORS.
#
# Déjà Dup is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Déjà Dup is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Déjà Dup. If not, see <http://www.gnu.org/licenses/>.
all: configure
ninja -C builddir
%:
@[ "$@" = "Makefile" ] || ninja -C builddir $@
configure:
@[ -f builddir/build.ninja ] || meson -Dprofile=Devel builddir
distconfigure:
@[ -f builddir/build.ninja ] || meson builddir
check: all
LC_ALL=C.UTF-8 meson test -C builddir
dist: clean distconfigure screenshots pot
rm -f builddir/meson-dist/*
ninja -C builddir dist
gpg --armor --sign --detach-sig builddir/meson-dist/deja-dup-*.tar.xz
clean distclean:
rm -rf builddir
deb:
DEB_BUILD_OPTIONS=nocheck debuild
screenshots: all
@gsettings set org.gnome.desktop.interface font-name 'Cantarell 11'
@gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita'
@gsettings set org.gnome.desktop.interface icon-theme 'Adwaita'
@gsettings set org.gnome.desktop.wm.preferences theme 'Adwaita'
@gsettings set org.gnome.DejaDup backend 'file'
@sleep 5
@mkdir -p ./builddir/screenshots
@rm -f ./builddir/screenshots/*
@./tests/shell-local "deja-dup" &
@gnome-screenshot --window --delay 1 --file data/appdata/01-main.png
@killall deja-dup
@./tests/shell-local "deja-dup --backup" >/dev/null &
@gnome-screenshot --window --delay 1 --file data/appdata/02-backup.png
@killall deja-dup
@gsettings reset org.gnome.desktop.interface font-name
@gsettings reset org.gnome.desktop.interface gtk-theme
@gsettings reset org.gnome.desktop.interface icon-theme
@gsettings reset org.gnome.desktop.wm.preferences theme
@gsettings reset org.gnome.DejaDup backend
@eog data/appdata
pot: configure
ninja -C builddir deja-dup-pot help-org.gnome.DejaDup-pot
# call like 'make copy-po TD=path-to-translation-dir'
copy-po:
test -d $(TD)
cp -a $(TD)/po/*.po po
for po in $(TD)/deja-dup/help/*.po; do \
mkdir -p deja-dup/help/$$(basename $$po .po); \
cp -a $$po deja-dup/help/$$(basename $$po .po)/; \
done
git add po/*.po
git add deja-dup/help/*/*.po
flatpak:
flatpak-builder --repo=$(HOME)/repo \
--force-clean \
--state-dir=builddir/.flatpak-builder \
builddir/flatpak \
flatpak/org.gnome.DejaDupDevel.yaml
flatpak update --user -y org.gnome.DejaDupDevel
.PHONY: configure distconfigure clean dist all copy-po check screenshots flatpak
This diff is collapsed.
This diff is collapsed.
Déjà Dup Backup Tool
====================
# Déjà Dup Backup Tool
Déjà Dup is a simple backup tool. It hides the complexity of backing up the
Right Way (encrypted, off-site, and regular) and uses
......@@ -12,10 +11,10 @@ Features:
* Schedules regular backups
* Integrates well into your GNOME desktop
Links
-----
## Links
* [Homepage](https://wiki.gnome.org/Apps/DejaDup)
* [Getting involved](https://wiki.gnome.org/Apps/DejaDup/GettingInvolved)
* [Wiki](https://wiki.gnome.org/Apps/DejaDup)
* [Download](https://wiki.gnome.org/Apps/DejaDup/Download)
* [Get involved](https://wiki.gnome.org/Apps/DejaDup/GettingInvolved)
* [Mailing list](https://mail.gnome.org/mailman/listinfo/deja-dup-list)
data/appdata/01-main.png

36.9 KB | W: | H:

data/appdata/01-main.png

36.8 KB | W: | H:

data/appdata/01-main.png
data/appdata/01-main.png
data/appdata/01-main.png
data/appdata/01-main.png
  • 2-up
  • Swipe
  • Onion skin
data/appdata/02-backup.png

12.6 KB | W: | H:

data/appdata/02-backup.png

12.6 KB | W: | H:

data/appdata/02-backup.png
data/appdata/02-backup.png
data/appdata/02-backup.png
data/appdata/02-backup.png
  • 2-up
  • Swipe
  • Onion skin
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -59,6 +59,7 @@ test('validate-monitor-desktop', desktop_file_validate,
conf_data = configuration_data()
conf_data.set('icon', application_id)
conf_data.set('name_suffix', name_suffix)
vars = configure_file(input: 'org.gnome.DejaDup.desktop.in',
output: 'org.gnome.DejaDup.vars.desktop.in',
configuration: conf_data)
......@@ -75,7 +76,6 @@ test('validate-desktop', desktop_file_validate,
conf_data = configuration_data()
conf_data.set('appid', application_id)
conf_data.set('series', series)
conf_data.set('version', meson.project_version())
vars = configure_file(input: 'org.gnome.DejaDup.appdata.xml.in',
output: 'org.gnome.DejaDup.vars.appdata.xml.in',
......
[Desktop Entry]
Version=1.0
Version=1.1
Name=Backup Monitor
Comment=Schedules backups at regular intervals
......@@ -9,7 +9,6 @@ Icon=@icon@
Exec=@pkglibexecdir@/deja-dup-monitor
X-GNOME-Autostart-Delay=120
X-GNOME-AutoRestart=true
StartupNotify=false
NoDisplay=true
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- For copyright information, see AUTHORS. -->
<component type="desktop-application">
<id>@appid@.desktop</id>
<id>@appid@</id>
<metadata_license>CC-BY-SA-4.0</metadata_license>
<project_license>GPL-3.0+</project_license>
<name>Déjà Dup Backup Tool</name>
......@@ -16,21 +16,14 @@
<li>Integrates well into your GNOME desktop</li>
</ul>
</description>
<provides>
<binary>deja-dup</binary>
</provides>
<categories>
<category>Utility</category>
<category>Archiving</category>
</categories>
<kudos>
<kudo>AppMenu</kudo>
<kudo>HiDpiIcon</kudo>
<kudo>HighContrast</kudo>
<kudo>ModernToolkit</kudo>
<kudo>Notifications</kudo>
<kudo>UserDocs</kudo>
</kudos>
<launchable type="desktop-id">@appid@.desktop</launchable>
<translation type="gettext">deja-dup</translation>
<url type="homepage">https://wiki.gnome.org/Apps/DejaDup</url>
<url type="help">https://wiki.gnome.org/Apps/DejaDup/Help</url>
......
[Desktop Entry]
Version=1.1
Name=Backups
Name=Backups@name_suffix@
Comment=Change your backup settings
Icon=@icon@
......
deja-dup (0) UNRELEASED; urgency=low
* Testing (just a dummy changelog, will be replaced by daily build scripts)
-- Michael Terry <mterry@ubuntu.com> Fri, 11 Oct 2013 13:54:34 -0400
Source: deja-dup
Section: utils
Priority: optional
Maintainer: Déjà Dup Maintainers <deja-dup-team@lists.launchpad.net>
Homepage: https://launchpad.net/deja-dup
Build-Depends: appstream-util,
dbus,
debhelper (>= 9),
desktop-file-utils,
gettext,
itstool,
libglib2.0-bin,
libglib2.0-dev (>= 2.46),
libgoa-1.0-dev,
libgoa-backend-1.0-dev,
libgpg-error-dev,
libgtk-3-dev (>= 3.22),
libnautilus-extension-dev (>= 3.0),
libpackagekit-glib2-dev,
libpeas-dev,
libsecret-1-dev,
meson (>= 0.38),
pkg-config,
python3,
valac (>= 0.36),
Standards-Version: 4.0.0
Package: deja-dup
Architecture: any
Pre-Depends: ${misc:Pre-Depends},
Depends: ${misc:Depends},
${shlibs:Depends},
gnome-icon-theme-symbolic,
Recommends: duplicity (>= 0.7.14),
policykit-1,
Description: Back up your files
Déjà Dup is a simple backup tool. It hides the complexity of backing up the
Right Way (encrypted, off-site, and regular) and uses duplicity as the
backend.
.
Features:
* Support for local, remote, or cloud backup locations such as Google Drive
and Nextcloud
* Securely encrypts and compresses your data
* Incrementally backs up, letting you restore from any particular backup
* Schedules regular backups
* Integrates well into your GNOME desktop
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: Déjà Dup
Upstream-Contact: Déjà Dup Maintainers <deja-dup-team@lists.launchpad.net>
Source: https://launchpad.net/deja-dup/+download
Files: *
Copyright: 2008–2011,2016-2017 Michael Terry <mike@mterry.name>
2009–2010 Andrew Fister <temposs@gmail.com>
2010 Urban Skudnik <urban.skudnik@gmail.com>
2011–2015 Canonical Ltd
2012 Lars Jegenhorst <dev.lars@jegenhorst.de>
2013 Koert van der Veer <koert@cloudvps.com>
2014 Adrien Bak <adrien.bak@gmail.com>
2015 Jeff Skaistis <skaistis@perlogic.net>
2015 Matteo Bertini <matteo@naufraghi.net>
2015 Marius Nünnerich <mnu@google.com>
Comment: For specific author information, see the git logs
License: GPL-3+
Files: po/*.po
Copyright: 2008–2013 Rosetta Contributors and Canonical Ltd
License: GPL-3+
Files: libdeja/uriutils.c libdeja/uriutils.h
Copyright: 2006–2007 Red Hat, Inc
License: GPL-3+
Files: deja-dup/nautilus/NautilusExtension.[ch]
Copyright: 2004–2005 Free Software Foundation, Inc.
2009–2011 Michael Terry <mike@mterry.name>
2011-2013 Canonical Ltd
License: GPL-3+
Files: data/ui/server-hint.ui
Copyright: 2015 Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
License: LGPL-2.1+
Files: vapi/config.vapi
Copyright: 2007–2008 Jaap Haitsma <jaap@haitsma.org>
License: GPL-3+
Files: deja-dup/help/C/*.page
Copyright: 2010–2011 Michael Terry <mike@mterry.name>
2011-2013 Canonical Ltd
License: CC-BY-SA-3.0
Files: deja-dup/help/*/*.po
Copyright: 2008–2013 Rosetta Contributors and Canonical Ltd
License: CC-BY-SA-3.0
Files: data/icons/hicolor/scalable/apps/org.gnome.DejaDup.svg
Copyright: 2011 Lapo Calamandrei <calamandrei@gmail.com>
License: LGPL-3+ or CC-BY-SA-3.0
Files: data/icons/hicolor/symbolic/apps/org.gnome.DejaDup-symbolic.svg
Copyright: 2012 Barbara Muraus <barbara.muraus@gmail.com>
License: CC-BY-SA-3.0
Files: data/icons/deja-dup-cloud.svg
Copyright: None
License: public-domain
These icons originally came from the Tango project
(http://tango.freedesktop.org/) and were released into the public domain
by that project.
License: GPL-3+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
.
On Debian systems, the full text of the GNU General Public License
version 3 can be found in the file /usr/share/common-licenses/GPL-3.
License: LGPL-3+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
.
On Debian systems, the full text of the GNU Lesser General Public License
version 3 can be found in the file /usr/share/common-licenses/LGPL-3.
License: LGPL-2.1+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 2.1 of the License, or
(at your option) any later version.
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
.
On Debian systems, the full text of the GNU Lesser General Public License
version 3 can be found in the file /usr/share/common-licenses/LGPL-2.1.
License: CC-BY-SA-3.0
You are free:
to Share (to copy, distribute and transmit the work) and
to Remix (to adapt the work) under the following conditions:
.
Attribution — You must attribute the work in the manner specified by the
author or licensor (but not in any way that suggests that they endorse you
or your use of the work).
.
Share Alike — If you alter, transform, or build upon this work, you may
distribute the resulting work only under the same, similar or a compatible
license.
.
For more information, see http://creativecommons.org/licenses/by-sa/3.0/
deja-dup binary: manpage-locale-dir-country-specific
deja-dup binary: extra-license-file
#!/usr/bin/make -f
# -*- Mode: Makefile; indent-tabs-mode: t; tab-width: 2 -*-
%:
dh $@ --parallel
override_dh_auto_configure:
meson builddir --libexecdir=lib/${DEB_HOST_MULTIARCH} \
--prefix=/usr \
--sysconfdir=/etc \
-Dgvfs_pkgs=gvfs-backends,python-gi,gir1.2-glib-2.0 \
-Dboto_pkgs=python-boto \
-Dcloudfiles_pkgs=python-cloudfiles \
-Dswiftclient_pkgs=python-swiftclient
override_dh_auto_build:
ninja -v -C builddir
override_dh_auto_install:
DESTDIR=$(CURDIR)/debian/tmp ninja -v -C builddir install
override_dh_installchangelogs:
dh_installchangelogs NEWS
......@@ -29,11 +29,7 @@ public class AssistantRestore : AssistantOperation
return this._restore_files;
}
set {
foreach (File f in this._restore_files)
f.unref();
this._restore_files = value.copy();
foreach (File f in this._restore_files)
f.ref();
this._restore_files = value.copy_deep ((CopyFunc) Object.ref);
}
}
......
......@@ -207,7 +207,7 @@ public class AssistantRestoreMissing : AssistantRestore {
{
if (page == confirm_page) {
scan_queue = false;
restore_files_remaining = restore_files.copy();
restore_files_remaining = restore_files.copy_deep ((CopyFunc) Object.ref);
}
else if (page == listfiles_page) {
list_dir_label.label = display_directory.get_parse_name();
......
......@@ -24,9 +24,10 @@ namespace DejaDup {
// Convenience class for adding automatic backup switch to pref shells
public class PreferencesPeriodicSwitch : Gtk.Switch
{
DejaDup.FilteredSettings settings;
construct
{
var settings = DejaDup.get_settings();
settings = DejaDup.get_settings();
settings.bind(DejaDup.PERIODIC_KEY, this, "active", SettingsBindFlags.DEFAULT);
}
}
......
......@@ -163,7 +163,7 @@ public class DejaDupApp : Gtk.Application
main_window.destroy.connect(() => {this.main_window = null;});
// Translators: "Backups" is a noun
main_window.title = _("Backups");
main_window.title = _("Backups") + Config.NAME_SUFFIX;
main_window.resizable = false;
var header = new Gtk.HeaderBar();
......@@ -278,7 +278,7 @@ public class DejaDupApp : Gtk.Application
{
unowned List<Gtk.Window> list = get_windows();
DejaDup.show_uri(list == null ? null : list.data,
"help:" + Config.APPLICATION_ID);
"help:" + Config.PACKAGE);
}
void about()
......@@ -358,9 +358,7 @@ int main(string[] args)
// context is itself a reference to both the underlying command line tool
// "duplicity" and the act of duplicating data for backup. As a whole, the
// phrase "Déjà Dup" may not be very translatable.
var appname = _("Déjà Dup Backup Tool");
if (Config.PROFILE != "")
appname = "%s (%s)".printf(appname, Config.PROFILE);
var appname = _("Déjà Dup Backup Tool") + Config.NAME_SUFFIX;
Environment.set_application_name(appname);
Environment.set_prgname(Config.APPLICATION_ID);
......
......@@ -32,13 +32,12 @@ deja_dup = executable('deja-dup',
resources,
vala_args: common_vflags,
c_args: common_cflags,
dependencies: [gio_unix_dep, goa_dep, gtk_dep, packagekit_dep, peas_dep, secret_dep],
dependencies: [gio_unix_dep, goa_dep, gtk_dep, packagekit_dep, secret_dep],
link_with: [libdeja, libwidgets],
include_directories: [libdeja_inc, libwidgets_inc],
install: true,
install_rpath: pkglibdir)
subdir('help')
subdir('monitor')
subdir('nautilus')
subdir('tests')
## Multiple monitor daemons
Profiles are a way to get parallel-installed deja-dups. They're used for testing and for containerized deployments
like flatpak and snap.
But parallel-installed deja-dups means multiple monitor daemons. Which, since they all share the same gsettings, would
mean kicking off multiple backups at the same time.
To avoid this, we claim the normal org.gnome.DejaDup.Monitor bus name regardless of what the profile is. We still kick
off the specific profile bus name for the actual backup.
The first monitor to start wins the race. It's possible to put our thumb on the scale by adjusing the installed
autostart desktop file's X-GNOME-Autostart-Delay value.
## Why do we need a monitor program?
This program is a bit of a hack. I'm not terribly happy with it, but it's a comprimise of sorts. I want a periodic scheduler that 'just works' in terms of user perceptions. So, we ideally would:
a) Backup at regular intervals
a.1) preferrably early in the morning (probably configurable by user)
a.2) or roughly ASAP if computer isn't on when scheduled
b) If user isn't logged in, still backup
c) If user is logged in (or becomes logged in while backup is still going),
show notification icon allowing reschedule/cancel
1. Backup at regular intervals
1. preferrably early in the morning (probably configurable by user)
2. or roughly ASAP if computer isn't on when scheduled
2. If user isn't logged in, still backup
3. If user is logged in (or becomes logged in while backup is still going),
show notification icon allowing reschedule/cancel
Given these desired traits, what can we do?
(c) suggests that we need a constantly-running program in the user's session that waits for the scheduled backup and displays an icon. This is unavoidable. It should have as small a footprint as possible.
(3) suggests that we need a constantly-running program in the user's session that waits for the scheduled backup and displays an icon. This is unavoidable. It should have as small a footprint as possible.
(b) suggests we need to run a scheduler as root, most naturally as part of a cron job. Since we can't drop a file in that says 'add this job to each user's crontab' (like we can do with /etc/xdg/autostart for autostart tasks), we'd need to drop in a /etc/cron.d file that runs at the minimum period we allow the user to set (probably a day), checks *all* users' settings to see if they are due for a backup, and kicks off a backup for/as them if needed. But we're not guaranteed to satisfy (a.2) unless user is running anacron.
(2) suggests we need to run a scheduler as root, most naturally as part of a cron job. Since we can't drop a file in that says 'add this job to each user's crontab' (like we can do with /etc/xdg/autostart for autostart tasks), we'd need to drop in a /etc/cron.d file that runs at the minimum period we allow the user to set (probably a day), checks *all* users' settings to see if they are due for a backup, and kicks off a backup for/as them if needed. But we're not guaranteed to satisfy (1.2) unless user is running anacron.
We could avoid the hackery of 'one root task that checks all users' by, when keys that control periodic settings are changed (watched by (c) daemon), doing "crontab -l | cronttab -" goofiness. That would correctly install into the user's crontab and allow nice system cron permission control and such. I'm not sure if that's a bonus or not (the silent refusal to run might confuse user, but surely that's a corner case).
We could avoid the hackery of 'one root task that checks all users' by, when keys that control periodic settings are changed (watched by (3) daemon), doing "crontab -l | cronttab -" goofiness. That would correctly install into the user's crontab and allow nice system cron permission control and such. I'm not sure if that's a bonus or not (the silent refusal to run might confuse user, but surely that's a corner case).
The above points about (b) assumes that the user has a properly set up cron. These days that's probably true, but none-the-less, it would be nice if we could avoid that.
The above points about (2) assumes that the user has a properly set up cron. These days that's probably true, but none-the-less, it would be nice if we could avoid that.
If we went with a cron-based solution, we couldn't truly be sure the user's jobs were being run, and we couldn't be sure if they would be run 'asap' if the computer isn't running at job time. This can be fixed by depending on anacron.
Another issue with (b) is that it requires us to have saved the user's passwords -- and more importantly -- be able to get them from gnome-keyring without a gnome session. This is probably a deal breaker. Without keyring support, we'd have to hardcode passwords...
Another issue with (2) is that it requires us to have saved the user's passwords -- and more importantly -- be able to get them from gnome-keyring without a gnome session. This is probably a deal breaker. Without keyring support, we'd have to hardcode passwords...
Alternatively, we could have the already-required user-space (c) watcher program kick of backups by watching the clock itself. Our scheduling is simple enough, it would suffice. This sacrifices (b) altogether. Which sucks. But we could kick off the build the next time the user does log in. Such a choice would put us squarely in the 'single-user laptop/desktop' use-case, foregoing the 'making backup for administrators easier' camp. I'm mostly OK with this.
Alternatively, we could have the already-required user-space (3) watcher program kick of backups by watching the clock itself. Our scheduling is simple enough, it would suffice. This sacrifices (2) altogether. Which sucks. But we could kick off the build the next time the user does log in. Such a choice would put us squarely in the 'single-user laptop/desktop' use-case, foregoing the 'making backup for administrators easier' camp. I'm mostly OK with this.
For now, we're going to do what the paragraph above suggests: don't use cron, do it ourselves. This issue should be revisited in the future.
......@@ -19,7 +19,7 @@
executable('deja-dup-monitor', ['monitor.vala'],
vala_args: common_vflags,
c_args: common_cflags,
dependencies: [gio_dep, goa_dep, peas_dep, secret_dep],
dependencies: [gio_dep, goa_dep, secret_dep],
link_with: [libdeja],
include_directories: [libdeja_inc],
install: true,
......
......@@ -21,6 +21,7 @@ using GLib;
class Monitor : Object {
static MainLoop loop;
static uint timeout_id;
static uint netcheck_id;
static bool reactive_check;
......@@ -105,30 +106,6 @@ static TimeSpan time_until(DateTime date)
return date.difference(new DateTime.now_local());
}
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 deja = yield new DBusProxy.for_bus(BusType.SESSION,
DBusProxyFlags.NONE,
null,
Config.APPLICATION_ID,