diff --git a/gnu/local.mk b/gnu/local.mk index 3eccc879b0..60ad007a28 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -565,6 +565,7 @@ dist_patch_DATA = \ %D%/packages/patches/cyrus-sasl-CVE-2013-4122.patch \ %D%/packages/patches/dblatex-remove-multirow.patch \ %D%/packages/patches/dbus-helper-search-path.patch \ + %D%/packages/patches/deja-dup-use-ref-keyword-for-iter.patch \ %D%/packages/patches/dfu-programmer-fix-libusb.patch \ %D%/packages/patches/diffutils-gets-undeclared.patch \ %D%/packages/patches/doc++-include-directives.patch \ diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index be00fcff54..1ab59a6303 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -61,6 +61,7 @@ #:use-module (gnu packages bison) #:use-module (gnu packages calendar) #:use-module (gnu packages check) + #:use-module (gnu packages cmake) #:use-module (gnu packages cups) #:use-module (gnu packages curl) #:use-module (gnu packages cyrus-sasl) @@ -193,6 +194,83 @@ Desktop. It is designed to be as simple as possible and has some unique features to enable users to create their discs easily and quickly.") (license license:gpl2+))) +(define-public deja-dup + (package + (name "deja-dup") + (version "34.3") + (source (origin + (method url-fetch) + (uri "https://launchpadlibrarian.net/295170991/deja-dup-34.3.tar.xz") + (sha256 + (base32 + "1xqcr61hpbahbla7gdjn4ngjfz7w6f57y7f5pkb77yk05f60j2n9")) + (patches + (search-patches "deja-dup-use-ref-keyword-for-iter.patch")))) + (build-system glib-or-gtk-build-system) + (arguments + `(#:modules ((guix build gnu-build-system) + ((guix build cmake-build-system) #:prefix cmake:) + (guix build glib-or-gtk-build-system) + (guix build utils)) + #:imported-modules (,@%glib-or-gtk-build-system-modules + (guix build cmake-build-system)) + #:test-target "test" + #:configure-flags (list (string-append + "-DCMAKE_INSTALL_FULL_DATADIR=" %output) + (string-append + "-DCMAKE_INSTALL_LIBEXECDIR=" %output)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-lockfile-deletion + (lambda rest + (substitute* "libdeja/tools/duplicity/DuplicityInstance.vala" + (("/bin/rm") + (which "rm"))))) + (replace 'configure + (assoc-ref cmake:%standard-phases 'configure)) + (delete 'check) ;; Fails due to issues with DBus + (add-after 'install 'wrap-deja-dup + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((python (assoc-ref inputs "python")) + (python-path (getenv "PYTHONPATH")) + (duplicity (assoc-ref inputs "duplicity")) + (out (assoc-ref outputs "out"))) + (for-each + (lambda (program) + (wrap-program program + `("PATH" ":" prefix (,(string-append python "/bin") + ,(string-append duplicity "/bin")))) + (wrap-program program + `("PYTHONPATH" ":" prefix (,python-path)))) + + (find-files (string-append out "/bin"))) + #t)))))) + (inputs + `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("gobject-introspection" ,gobject-introspection) + ("duplicity" ,duplicity) + ("python" ,python2-minimal) + ("python-pygobject" ,python2-pygobject) + ("gtk+" ,gtk+) + ("libnotify" ,libnotify) + ("libpeas" ,libpeas) + ("libsecret" ,libsecret) + ("packagekit" ,packagekit))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("vala" ,vala) + ("gettext" ,gettext-minimal) + ("itstool" ,itstool) + ("intltool" ,intltool) + ("cmake", cmake))) + (home-page "https://launchpad.net/deja-dup") + (synopsis "Simple backup tool, for regular encrypted backups") + (description + "Déjà Dup is a simple backup tool, for regular encrypted backups. It +uses duplicity as the backend, which supports incremental backups and storage +either on a local, or remote machine via a number of methods.") + (license license:gpl3+))) + (define-public dia ;; This version from GNOME's repository includes fixes for compiling with ;; recent versions of the build tools. The latest activity on the diff --git a/gnu/packages/patches/deja-dup-use-ref-keyword-for-iter.patch b/gnu/packages/patches/deja-dup-use-ref-keyword-for-iter.patch new file mode 100644 index 0000000000..a03e0c5481 --- /dev/null +++ b/gnu/packages/patches/deja-dup-use-ref-keyword-for-iter.patch @@ -0,0 +1,41 @@ +From 5676766be5e845ccb6cdf46cfa8722497f151752 Mon Sep 17 00:00:00 2001 +From: Jeremy Bicha +Date: Fri, 16 Jun 2017 15:11:37 -0400 +Subject: Use 'ref' keyword for iter, requires vala 0.36 + + +diff --git a/deja-dup/widgets/ConfigList.vala b/deja-dup/widgets/ConfigList.vala +index 15de2d6..02cd81a 100644 +--- a/deja-dup/widgets/ConfigList.vala ++++ b/deja-dup/widgets/ConfigList.vala +@@ -333,7 +333,7 @@ public class ConfigList : ConfigWidget + + model.row_deleted.disconnect(write_to_config); + foreach (Gtk.TreeIter iter in iters) { +- (model as Gtk.ListStore).remove(iter); ++ (model as Gtk.ListStore).remove(ref iter); + } + model.row_deleted.connect(write_to_config); + +diff --git a/deja-dup/widgets/ConfigLocation.vala b/deja-dup/widgets/ConfigLocation.vala +index 869e2a8..d21c556 100644 +--- a/deja-dup/widgets/ConfigLocation.vala ++++ b/deja-dup/widgets/ConfigLocation.vala +@@ -397,12 +397,12 @@ public class ConfigLocation : ConfigWidget + if (uuid == saved_uuid) + return; + +- store.remove(iter); ++ store.remove(ref iter); + + if (--num_volumes == 0) { + Gtk.TreeIter sep_iter; + if (store.get_iter_from_string(out sep_iter, index_vol_sep.to_string())) { +- store.remove(sep_iter); ++ store.remove(ref sep_iter); + index_vol_sep = -2; + } + } +-- +cgit v0.10.2 +