Subject: [WIP-PATCH gnome-team] gnu: deja-dup: update to 45.2.
From: Vivien Kraus <[email-masked]>
To: [email-masked]
Date: Sun, 14 Jan 2024 13:11:03 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

* gnu/packages/gnome.scm (deja-dup): Update to 45.2.
[arguments]: Convert to list of G-Expressions.

Change-Id: I60823287827b0690796fec7955bcf9682acd88b3
---

Dear Guix,

Due to an update of duplicity, deja-dup does not know how to invoke the
duplicity program. The newer version, 45.2, fixes the duplicity invocation,
but now I face a new problem: the deja-dup GUI opens a window displaying an
error:

Traceback (innermost last):
  File "/gnu/store/f3w57wm0i8q4bvq6xnpsf9v744i7v38l-duplicity-2.1.4/bin/.duplicity-real", line 62, in <module>
    with_tempdir(main)
  File "/gnu/store/f3w57wm0i8q4bvq6xnpsf9v744i7v38l-duplicity-2.1.4/bin/.duplicity-real", line 53, in with_tempdir
    fn()
  File "/gnu/store/f3w57wm0i8q4bvq6xnpsf9v744i7v38l-duplicity-2.1.4/lib/python3.10/site-packages/duplicity/dup_main.py", line 1545, in main
    action = cli_main.process_command_line(sys.argv[1:])
  File "/gnu/store/f3w57wm0i8q4bvq6xnpsf9v744i7v38l-duplicity-2.1.4/lib/python3.10/site-packages/duplicity/cli_main.py", line 281, in process_command_line
    config.backend = backend.get_backend(remote_url)
  File "/gnu/store/f3w57wm0i8q4bvq6xnpsf9v744i7v38l-duplicity-2.1.4/lib/python3.10/site-packages/duplicity/backend.py", line 207, in get_backend
    obj = get_backend_object(url_string)
  File "/gnu/store/f3w57wm0i8q4bvq6xnpsf9v744i7v38l-duplicity-2.1.4/lib/python3.10/site-packages/duplicity/backend.py", line 195, in get_backend_object
    return factory(pu)
  File "/gnu/store/f3w57wm0i8q4bvq6xnpsf9v744i7v38l-duplicity-2.1.4/lib/python3.10/site-packages/duplicity/backends/giobackend.py", line 57, in __init__
    class DupMountOperation(Gio.MountOperation):
  File "/gnu/store/w7vbks7gzqadxd4ccz7vscsj9w1899gg-python-pygobject-3.46.0/lib/python3.10/site-packages/gi/types.py", line 226, in __init__
    super(GObjectMeta, cls).__init__(name, bases, dict_)
  File "/gnu/store/w7vbks7gzqadxd4ccz7vscsj9w1899gg-python-pygobject-3.46.0/lib/python3.10/site-packages/gi/types.py", line 205, in __init__
    cls._type_register(cls.__dict__)
  File "/gnu/store/w7vbks7gzqadxd4ccz7vscsj9w1899gg-python-pygobject-3.46.0/lib/python3.10/site-packages/gi/types.py", line 217, in _type_register
    _gi.type_register(cls, namespace.get('__gtype_name__'))
 RuntimeError: could not create new GType: duplicity+backends+giobackend+DupMountOperation (subclass of GMountOperation)

I’m afraid duplicity requires some GNOME libraries for its backend now, or
duplicity or deja-dup now require some more glib wrapping.

Do you have an idea?

Best regards,

Vivien

 gnu/packages/gnome.scm | 73 +++++++++++++++++++++---------------------
 1 file changed, 37 insertions(+), 36 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index d17676f53b..168b9d8abf 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -1823,50 +1823,51 @@ (define-public gnome-menus
 (define-public deja-dup
   (package
     (name "deja-dup")
-    (version "43.4")
+    (version "45.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gitlab.gnome.org/World/deja-dup/-/archive/"
                                   version "/deja-dup-" version ".tar.bz2"))
               (sha256
                (base32
-                "1mr2g009w0zm5rj8dg1k77c7zdwylih2yszm8vh8wkw6al6bzfh3"))))
+                "000cwy1haiglkvn5plmhrs2a1fhpcpw6z4mdzck7ybmky795amza"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:configure-flags
-       (list
-        ;; Otherwise, the RUNPATH will lack the final path component.
-        (string-append "-Dc_link_args=-Wl,-rpath="
-                       (assoc-ref %outputs "out") "/lib/deja-dup"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((python (assoc-ref inputs "python")))
-               (substitute* '("libdeja/duplicity/DuplicityInstance.vala"
-                              "libdeja/tests/scripts/instance-error.test")
-                 (("/bin/rm")
-                  (which "rm")))
-               (substitute* "libdeja/tests/runner.vala"
-                 (("/bin/sh")
-                  (which "sh")))
-               (substitute* "libdeja/tests/scripts/instance-error.test"
-                 (("`which python3`")
-                  (string-append python "/bin/python3"))))))
-         (add-after 'unpack 'patch-libgpg-error
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((libgpg-error (assoc-ref inputs "libgpg-error")))
-               (substitute* "meson.build"
-                 (("(gpgerror_libs = ).*" _ var)
-                  (format #f "~a '-L~a/lib -lgpg-error'\n" var libgpg-error))))))
-         (add-after 'install 'wrap-program
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             ;; Add duplicity to the search path
-             (wrap-program (string-append (assoc-ref outputs "out")
-                                          "/bin/deja-dup")
-               `("PATH" ":" prefix
-                 (,(string-append (assoc-ref inputs "duplicity") "/bin")))))))))
+     (list
+      #:glib-or-gtk? #t
+      #:configure-flags
+      #~(list
+         ;; Otherwise, the RUNPATH will lack the final path component.
+         (string-append "-Dc_link_args=-Wl,-rpath="
+                        (assoc-ref %outputs "out") "/lib/deja-dup"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((python (assoc-ref inputs "python")))
+                (substitute* '("libdeja/duplicity/DuplicityInstance.vala"
+                               "libdeja/tests/scripts/instance-error.test")
+                  (("/bin/rm")
+                   (which "rm")))
+                (substitute* "libdeja/tests/runner.vala"
+                  (("/bin/sh")
+                   (which "sh")))
+                (substitute* "libdeja/tests/scripts/instance-error.test"
+                  (("`which python3`")
+                   (string-append python "/bin/python3"))))))
+          (add-after 'unpack 'patch-libgpg-error
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((libgpg-error (assoc-ref inputs "libgpg-error")))
+                (substitute* "meson.build"
+                  (("(gpgerror_libs = ).*" _ var)
+                   (format #f "~a '-L~a/lib -lgpg-error'\n" var libgpg-error))))))
+          (add-after 'install 'wrap-program
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              ;; Add duplicity to the search path
+              (wrap-program (string-append (assoc-ref outputs "out")
+                                           "/bin/deja-dup")
+                `("PATH" ":" prefix
+                  (,(dirname (search-input-file inputs "/bin/duplicity"))))))))))
     (inputs
      (list bash-minimal
            duplicity

base-commit: 2cbb1a6e1e2679c7db74b6b906d223fb3661d09f
-- 
2.41.0