GNU bug report logs - #75859
[PATCH 0/4] breezy: Update to 3.3.9.

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix-patches; Reported by: Dariqq <dariqq@HIDDEN>; Keywords: patch; dated Sun, 26 Jan 2025 12:25:02 UTC; Maintainer for guix-patches is guix-patches@HIDDEN.

Message received at 75859 <at> debbugs.gnu.org:


Received: (at 75859) by debbugs.gnu.org; 26 Jan 2025 12:28:43 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 07:28:43 2025
Received: from localhost ([127.0.0.1]:55088 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tc1kn-0004z0-V5
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 07:28:43 -0500
Received: from mout02.posteo.de ([185.67.36.66]:48371)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <dariqq@HIDDEN>) id 1tc1ka-0004xx-N1
 for 75859 <at> debbugs.gnu.org; Sun, 26 Jan 2025 07:28:30 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id 258FD240101
 for <75859 <at> debbugs.gnu.org>; Sun, 26 Jan 2025 13:28:22 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1737894502; bh=jaS7ghxIyyl4meD6yGCWZHjmdhIm4oVKZnyf61tYvLY=;
 h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type:
 Content-Transfer-Encoding:From;
 b=rY8a5v3W7rg2eNHQBkJAgbIl0jajXHfOwa7iLm9MAImwDVL4dt1jXxvQu4PU4XzIR
 H9nFOHNKpBXT4ee53Qq3jcrKzRrF3fZA4QIclv8ZVplQSAoLqWLiedLb6Kfeu9YOXN
 qReClSHLOmP5QZwrft6N1zMy7S+tQUjKkO2KrTmonRutTqcVvriPrhr327cXTM5siM
 eLEbWEv3k+145YwlzAjLW+y1q/I5389jvVYDX5cP4bfaGtW6yTgIob34+7fwrLNOAD
 DfsoTXSLEiqlYdhZ6ugXIbNq+4FNMLQvKq3KRyUIEAPSoGhIug5tscaBa+zlWMvnkV
 d7SiGa2WYo6tw==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4YgrS449xTz6twD;
 Sun, 26 Jan 2025 13:28:20 +0100 (CET)
From: Dariqq <dariqq@HIDDEN>
To: 75859 <at> debbugs.gnu.org
Subject: [PATCH 4/4] gnu: breezy: Update to 3.3.9.
Date: Sun, 26 Jan 2025 12:27:10 +0000
Message-ID: <bc3c05f0ca90d8e49a4cf385a49b5b6cd8293afa.1737894063.git.dariqq@HIDDEN>
In-Reply-To: <cover.1737894063.git.dariqq@HIDDEN>
References: <cover.1737894063.git.dariqq@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75859
Cc: Dariqq <dariqq@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

breezy now depends on a rust compiler and crates so we need to switch to
cargo-build-system to set up rust and then readd all the python phases.

* gnu/packages/version-control.scm (breezy): Update to 3.3.9.
[build-system]: switch to cargo-build-system
[#:phases]: Convert back to python-build-system
Add a phase to install the bash-completion file.
Run the testsuite again.

[native-inputs]: Remove python-docutils, python-testrepository
Add gettext-minimal, python-wrapper, python-setuptools, python-setuptools-rust,
python-setuptools-gettext, python-tomli, python wheel.
Add python testtools and python packaging for tests.
[inputs]: Remove gettext-minimal, python-pygobject.
Add python-merge3, python-pygithub, python-pyyaml, python-tzlocal,
python-urllib3
Replace python-pycrptodome and python-pygpgme with python-gpg

* gnu/packages/patches/breezy-fix-gio.patch: Remove patch
* gnu/local.mk : Deregister it.

Change-Id: I69d6c4491442a9ba93a748137fb2ad810a423abd
---
 gnu/local.mk                              |   1 -
 gnu/packages/patches/breezy-fix-gio.patch | 338 ----------------------
 gnu/packages/version-control.scm          | 122 +++++---
 3 files changed, 89 insertions(+), 372 deletions(-)
 delete mode 100644 gnu/packages/patches/breezy-fix-gio.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 5091f93eb8..ac29c00c79 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1052,7 +1052,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/bloomberg-bde-tools-fix-install-path.patch	\
   %D%/packages/patches/boolector-find-googletest.patch	\
   %D%/packages/patches/boost-fix-duplicate-definitions-bug.patch	\
-  %D%/packages/patches/breezy-fix-gio.patch			\
   %D%/packages/patches/byobu-writable-status.patch		\
   %D%/packages/patches/bubblewrap-fix-locale-in-tests.patch	\
   %D%/packages/patches/busybox-add-missing-sha-NI-guard.patch	\
diff --git a/gnu/packages/patches/breezy-fix-gio.patch b/gnu/packages/patches/breezy-fix-gio.patch
deleted file mode 100644
index f70e761555..0000000000
--- a/gnu/packages/patches/breezy-fix-gio.patch
+++ /dev/null
@@ -1,338 +0,0 @@
-This patch combines https://code.launchpad.net/~jelmer/brz/enable-gio/+merge/419150
-and https://bazaar.launchpad.net/~jelmer/brz/fix-gio/revision/7570.
-
-=== modified file 'breezy/transport/gio_transport.py'
---- a/breezy/transport/gio_transport.py	2022-04-09 12:17:41 +0000
-+++ b/breezy/transport/gio_transport.py	2022-04-09 12:33:51 +0000
-@@ -52,11 +52,7 @@
- from ..tests.test_server import TestServer
- 
- try:
--    import glib
--except ImportError as e:
--    raise errors.DependencyNotPresent('glib', e)
--try:
--    import gio
-+    from gi.repository import Gio as gio
- except ImportError as e:
-     raise errors.DependencyNotPresent('gio', e)
- 
-
-@@ -57,6 +57,9 @@
-     raise errors.DependencyNotPresent('gio', e)
- 
- 
-+from gi.repository.GLib import GError
-+
-+
- class GioLocalURLServer(TestServer):
-     """A pretend server for local transports, using file:// urls.
- 
-@@ -81,7 +84,7 @@
-     def __init__(self, transport, relpath):
-         FileStream.__init__(self, transport, relpath)
-         self.gio_file = transport._get_GIO(relpath)
--        self.stream = self.gio_file.create()
-+        self.stream = self.gio_file.create(0, None)
- 
-     def _close(self):
-         self.stream.close()
-@@ -90,7 +93,7 @@
-         try:
-             # Using pump_string_file seems to make things crash
-             osutils.pumpfile(BytesIO(bytes), self.stream)
--        except gio.Error as e:
-+        except GError as e:
-             # self.transport._translate_gio_error(e,self.relpath)
-             raise errors.BzrError(str(e))
- 
-@@ -98,12 +101,12 @@
- class GioStatResult(object):
- 
-     def __init__(self, f):
--        info = f.query_info('standard::size,standard::type')
-+        info = f.query_info('standard::size,standard::type', 0, None)
-         self.st_size = info.get_size()
-         type = info.get_file_type()
--        if (type == gio.FILE_TYPE_REGULAR):
-+        if type == gio.FileType.REGULAR:
-             self.st_mode = stat.S_IFREG
--        elif type == gio.FILE_TYPE_DIRECTORY:
-+        elif type == gio.FileType.DIRECTORY:
-             self.st_mode = stat.S_IFDIR
- 
- 
-@@ -122,7 +125,7 @@
-             user, netloc = netloc.rsplit('@', 1)
-         # Seems it is not possible to list supported backends for GIO
-         # so a hardcoded list it is then.
--        gio_backends = ['dav', 'file', 'ftp', 'obex', 'sftp', 'ssh', 'smb']
-+        gio_backends = ['dav', 'file', 'ftp', 'obex', 'sftp', 'ssh', 'smb', 'http']
-         if scheme not in gio_backends:
-             raise urlutils.InvalidURL(base,
-                                       extra="GIO support is only available for " +
-@@ -138,13 +141,10 @@
-                                            _from_transport=_from_transport)
- 
-     def _relpath_to_url(self, relpath):
--        full_url = urlutils.join(self.url, relpath)
--        if isinstance(full_url, str):
--            raise urlutils.InvalidURL(full_url)
--        return full_url
-+        return urlutils.join(self.url, relpath)
- 
-     def _get_GIO(self, relpath):
--        """Return the ftplib.GIO instance for this object."""
-+        """Return the GIO instance for this object."""
-         # Ensures that a connection is established
-         connection = self._get_connection()
-         if connection is None:
-@@ -152,7 +152,7 @@
-             connection, credentials = self._create_connection()
-             self._set_connection(connection, credentials)
-         fileurl = self._relpath_to_url(relpath)
--        file = gio.File(fileurl)
-+        file = gio.File.new_for_uri(fileurl)
-         return file
- 
-     def _auth_cb(self, op, message, default_user, default_domain, flags):
-@@ -197,7 +197,7 @@
-         try:
-             obj.mount_enclosing_volume_finish(res)
-             self.loop.quit()
--        except gio.Error as e:
-+        except GError as e:
-             self.loop.quit()
-             raise errors.BzrError(
-                 "Failed to mount the given location: " + str(e))
-@@ -209,12 +209,12 @@
-             user, password = credentials
- 
-         try:
--            connection = gio.File(self.url)
-+            connection = gio.File.new_for_uri(self.url)
-             mount = None
-             try:
-                 mount = connection.find_enclosing_mount()
--            except gio.Error as e:
--                if (e.code == gio.ERROR_NOT_MOUNTED):
-+            except GError as e:
-+                if e.code == gio.IOErrorEnum.NOT_MOUNTED:
-                     self.loop = glib.MainLoop()
-                     ui.ui_factory.show_message('Mounting %s using GIO' %
-                                                self.url)
-@@ -227,7 +227,7 @@
-                     m = connection.mount_enclosing_volume(op,
-                                                           self._mount_done_cb)
-                     self.loop.run()
--        except gio.Error as e:
-+        except GError as e:
-             raise errors.TransportError(msg="Error setting up connection:"
-                                         " %s" % str(e), orig_error=e)
-         return connection, (user, password)
-@@ -257,8 +257,8 @@
-             if stat.S_ISREG(st.st_mode) or stat.S_ISDIR(st.st_mode):
-                 return True
-             return False
--        except gio.Error as e:
--            if e.code == gio.ERROR_NOT_FOUND:
-+        except GError as e:
-+            if e.code == gio.IOErrorEnum.NOT_FOUND:
-                 return False
-             else:
-                 self._translate_gio_error(e, relpath)
-@@ -281,10 +281,10 @@
-             buf = fin.read()
-             fin.close()
-             return BytesIO(buf)
--        except gio.Error as e:
-+        except GError as e:
-             # If we get a not mounted here it might mean
-             # that a bad path has been entered (or that mount failed)
--            if (e.code == gio.ERROR_NOT_MOUNTED):
-+            if e.code == gio.IOErrorEnum.NOT_MOUNTED:
-                 raise errors.PathError(relpath,
-                                        extra='Failed to get file, make sure the path is correct. '
-                                        + str(e))
-@@ -307,19 +307,19 @@
-             closed = True
-             try:
-                 f = self._get_GIO(tmppath)
--                fout = f.create()
-+                fout = f.create(0, None)
-                 closed = False
-                 length = self._pump(fp, fout)
-                 fout.close()
-                 closed = True
-                 self.stat(tmppath)
-                 dest = self._get_GIO(relpath)
--                f.move(dest, flags=gio.FILE_COPY_OVERWRITE)
-+                f.move(dest, flags=gio.FileCopyFlags.OVERWRITE)
-                 f = None
-                 if mode is not None:
-                     self._setmode(relpath, mode)
-                 return length
--            except gio.Error as e:
-+            except GError as e:
-                 self._translate_gio_error(e, relpath)
-         finally:
-             if not closed and fout is not None:
-@@ -335,7 +335,7 @@
-             f = self._get_GIO(relpath)
-             f.make_directory()
-             self._setmode(relpath, mode)
--        except gio.Error as e:
-+        except GError as e:
-             self._translate_gio_error(e, relpath)
- 
-     def open_write_stream(self, relpath, mode=None):
-@@ -369,14 +369,11 @@
-                 f.delete()
-             else:
-                 raise errors.NotADirectory(relpath)
--        except gio.Error as e:
-+        except GError as e:
-             self._translate_gio_error(e, relpath)
-         except errors.NotADirectory as e:
-             # just pass it forward
-             raise e
--        except Exception as e:
--            mutter('failed to rmdir %s: %s' % (relpath, e))
--            raise errors.PathError(relpath)
- 
-     def append_file(self, relpath, file, mode=None):
-         """Append the text in the file-like object into the final
-@@ -392,7 +389,7 @@
-             result = 0
-             fo = self._get_GIO(tmppath)
-             fi = self._get_GIO(relpath)
--            fout = fo.create()
-+            fout = fo.create(0, None)
-             try:
-                 info = GioStatResult(fi)
-                 result = info.st_size
-@@ -400,11 +397,11 @@
-                 self._pump(fin, fout)
-                 fin.close()
-             # This separate except is to catch and ignore the
--            # gio.ERROR_NOT_FOUND for the already existing file.
-+            # gio.IOErrorEnum.NOT_FOUND for the already existing file.
-             # It is valid to open a non-existing file for append.
-             # This is caused by the broken gio append_to...
--            except gio.Error as e:
--                if e.code != gio.ERROR_NOT_FOUND:
-+            except GError as e:
-+                if e.code != gio.IOErrorEnum.NOT_FOUND:
-                     self._translate_gio_error(e, relpath)
-             length = self._pump(file, fout)
-             fout.close()
-@@ -413,9 +410,11 @@
-                 raise errors.BzrError("Failed to append size after "
-                                       "(%d) is not original (%d) + written (%d) total (%d)" %
-                                       (info.st_size, result, length, result + length))
--            fo.move(fi, flags=gio.FILE_COPY_OVERWRITE)
-+            fo.move(
-+                fi, flags=gio.FileCopyFlags.OVERWRITE, cancellable=None,
-+                progress_callback=None)
-             return result
--        except gio.Error as e:
-+        except GError as e:
-             self._translate_gio_error(e, relpath)
- 
-     def _setmode(self, relpath, mode):
-@@ -429,8 +428,8 @@
-             try:
-                 f = self._get_GIO(relpath)
-                 f.set_attribute_uint32(gio.FILE_ATTRIBUTE_UNIX_MODE, mode)
--            except gio.Error as e:
--                if e.code == gio.ERROR_NOT_SUPPORTED:
-+            except GError as e:
-+                if e.code == gio.IOErrorEnum.NOT_SUPPORTED:
-                     # Command probably not available on this server
-                     mutter("GIO Could not set permissions to %s on %s. %s",
-                            oct(mode), self._remote_path(relpath), str(e))
-@@ -444,8 +443,8 @@
-                 mutter("GIO move (rename): %s => %s", rel_from, rel_to)
-             f = self._get_GIO(rel_from)
-             t = self._get_GIO(rel_to)
--            f.move(t)
--        except gio.Error as e:
-+            f.move(t, flags=0, cancellable=None, progress_callback=None)
-+        except GError as e:
-             self._translate_gio_error(e, rel_from)
- 
-     def move(self, rel_from, rel_to):
-@@ -455,8 +454,8 @@
-                 mutter("GIO move: %s => %s", rel_from, rel_to)
-             f = self._get_GIO(rel_from)
-             t = self._get_GIO(rel_to)
--            f.move(t, flags=gio.FILE_COPY_OVERWRITE)
--        except gio.Error as e:
-+            f.move(t, flags=gio.FileCopyFlags.OVERWRITE)
-+        except GError as e:
-             self._translate_gio_error(e, relfrom)
- 
-     def delete(self, relpath):
-@@ -466,7 +465,7 @@
-                 mutter("GIO delete: %s", relpath)
-             f = self._get_GIO(relpath)
-             f.delete()
--        except gio.Error as e:
-+        except GError as e:
-             self._translate_gio_error(e, relpath)
- 
-     def external_url(self):
-@@ -489,11 +488,11 @@
-         try:
-             entries = []
-             f = self._get_GIO(relpath)
--            children = f.enumerate_children(gio.FILE_ATTRIBUTE_STANDARD_NAME)
-+            children = f.enumerate_children(gio.FILE_ATTRIBUTE_STANDARD_NAME, 0, None)
-             for child in children:
-                 entries.append(urlutils.escape(child.get_name()))
-             return entries
--        except gio.Error as e:
-+        except GError as e:
-             self._translate_gio_error(e, relpath)
- 
-     def iter_files_recursive(self):
-@@ -519,7 +518,7 @@
-                 mutter("GIO stat: %s", relpath)
-             f = self._get_GIO(relpath)
-             return GioStatResult(f)
--        except gio.Error as e:
-+        except GError as e:
-             self._translate_gio_error(e, relpath, extra='error w/ stat')
- 
-     def lock_read(self, relpath):
-@@ -556,21 +555,21 @@
-             mutter("GIO Error: %s %s" % (str(err), path))
-         if extra is None:
-             extra = str(err)
--        if err.code == gio.ERROR_NOT_FOUND:
-+        if err.code == gio.IOErrorEnum.NOT_FOUND:
-             raise errors.NoSuchFile(path, extra=extra)
--        elif err.code == gio.ERROR_EXISTS:
-+        elif err.code == gio.IOErrorEnum.EXISTS:
-             raise errors.FileExists(path, extra=extra)
--        elif err.code == gio.ERROR_NOT_DIRECTORY:
-+        elif err.code == gio.IOErrorEnum.NOT_DIRECTORY:
-             raise errors.NotADirectory(path, extra=extra)
--        elif err.code == gio.ERROR_NOT_EMPTY:
-+        elif err.code == gio.IOErrorEnum.NOT_EMPTY:
-             raise errors.DirectoryNotEmpty(path, extra=extra)
--        elif err.code == gio.ERROR_BUSY:
-+        elif err.code == gio.IOErrorEnum.BUSY:
-             raise errors.ResourceBusy(path, extra=extra)
--        elif err.code == gio.ERROR_PERMISSION_DENIED:
-+        elif err.code == gio.IOErrorEnum.PERMISSION_DENIED:
-             raise errors.PermissionDenied(path, extra=extra)
--        elif err.code == gio.ERROR_HOST_NOT_FOUND:
-+        elif err.code == gio.IOErrorEnum.HOST_NOT_FOUND:
-             raise errors.PathError(path, extra=extra)
--        elif err.code == gio.ERROR_IS_DIRECTORY:
-+        elif err.code == gio.IOErrorEnum.IS_DIRECTORY:
-             raise errors.PathError(path, extra=extra)
-         else:
-             mutter('unable to understand error for path: %s: %s', path, err)
-
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 2a95bc79e1..a40de4c812 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -60,6 +60,7 @@
 ;;; Copyright © 2024 Ashish SHUKLA <ashish.is@HIDDEN>
 ;;; Copyright © 2024 Wilko Meyer <w@HIDDEN>
 ;;; Copyright © 2025 Artyom V. Poptsov <poptsov.artyom@HIDDEN>
+;;; Copyright © 2025 Dariqq <dariqq@HIDDEN>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -180,7 +181,7 @@ (define-module (gnu packages version-control)
 (define-public breezy
   (package
     (name "breezy")
-    (version "3.2.2")
+    (version "3.3.9")
     (source
      (origin
        (method url-fetch)
@@ -192,51 +193,106 @@ (define-public breezy
        (snippet '(for-each delete-file (find-files "." "\\pyx.c$")))
        (sha256
         (base32
-         "1md4b6ajawf5h50fqizmjj0g833ihc674dh7fn0mvl4d412nwyhq"))
-       (patches (search-patches "breezy-fix-gio.patch"))))
-    (build-system python-build-system)
+         "1n6mqd1iy50537kb4lsr52289yyr1agmkxpchxlhb9682zr8nn62"))))
+    (build-system cargo-build-system)
     (arguments
      (list
-      #:tests? #f                       ;FIXME: the test suite hangs
+      #:cargo-inputs (list rust-lazy-static-1
+                           rust-pyo3-0.22
+                           rust-regex-1)
+      #:install-source? #f
+      #:modules
+      '((guix build cargo-build-system)
+        ((guix build python-build-system) #:prefix py:)
+        (guix build utils))
+      #:imported-modules
+      `(,@%cargo-build-system-modules
+        ,@%python-build-system-modules)
       #:phases
       #~(modify-phases %standard-phases
+          (add-after 'unpack 'ensure-no-mtimes-pre-1980
+            (assoc-ref py:%standard-phases 'ensure-no-mtimes-pre-1980))
+          (add-after 'ensure-no-mtimes-pre-1980 'enable-bytecode-determinism
+            (assoc-ref py:%standard-phases 'enable-bytecode-determinism))
+          (add-after 'enable-bytecode-determinism 'ensure-no-cythonized-files
+            (assoc-ref py:%standard-phases 'ensure-no-cythonized-files))
           (add-after 'unpack 'patch-test-shebangs
             (lambda _
               (substitute* (append (find-files "breezy/bzr/tests")
                                    (find-files "breezy/tests"))
                 (("#!/bin/sh")
                  (format #f "#!~a" (which "sh"))))))
-          (replace 'check
+          (add-before 'build 'adjust-for-python-3.10
+            (lambda _
+              (substitute* '("breezy/doc_generate/__init__.py"
+                             "breezy/tests/test_selftest.py")
+                ;; AttributeError: module 'datetime' has no attribute 'UTC'
+                ;; This only works for python >= 3.11
+                (("datetime.UTC") "datetime.timezone.utc"))))
+          (replace 'build
+            (assoc-ref py:%standard-phases 'build))
+          (delete 'check)             ;moved after the install phase
+          (replace 'install
+            (assoc-ref py:%standard-phases 'install))
+          (add-after 'install 'add-install-to-pythonpath
+            (assoc-ref py:%standard-phases 'add-install-to-pythonpath))
+          (add-after 'add-install-to-pythonpath 'add-install-to-path
+            (assoc-ref py:%standard-phases 'add-install-to-path))
+          (add-after 'add-install-to-path 'install-completion
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out  (assoc-ref outputs "out"))
+                     (bash (string-append out "/share/bash-completion"
+                                          "/completions")))
+                (install-file "contrib/bash/brz" bash))))
+          (add-after 'add-install-to-path 'wrap
+            (assoc-ref py:%standard-phases 'wrap))
+          (add-after 'wrap 'check
             (lambda* (#:key tests? #:allow-other-keys)
               (when tests?
-                ;; The test_read_bundle tests fails with "TypeError: a
-                ;; bytes-like object is required, not '_ResultTuple'" (see:
-                ;; https://bugs.launchpad.net/brz/+bug/1968415/comments/4).
-                (substitute* "breezy/bzr/tests/__init__.py"
-                  (("'test_read_bundle'," all)
-                   (string-append "# " all)))
                 (setenv "BZR_EDITOR" "nano")
-                (setenv "HOME" "/tmp")
-                (invoke "testr" "init")
-                (invoke "testr" "run")))))))
-    (native-inputs
-     (list nano                         ;for tests
-           python-cython
-           python-docutils
-           python-subunit
-           python-testrepository))
-    (inputs
-     (list gettext-minimal
-           python-configobj
-           python-dulwich
-           python-fastbencode
-           python-fastimport
-           python-launchpadlib
-           python-paramiko
-           python-patiencediff
-           python-pycryptodome
-           python-pygobject
-           python-pygpgme))
+                (invoke "brz" "selftest" "--verbose" "--parallel=fork"
+                        ;; This test hangs
+                        "-x" "breezy.tests.blackbox.test_serve"
+                        ;; No GnuPG key results for pattern: bazaar@HIDDEN
+                        "-x" "breezy.tests.test_gpg"
+                        ;; compgen: command not found
+                        "-x" "bash_completion"
+                        ;; No such file or directory: '/etc/mtab'
+                        "-x" "breezy.tests.blackbox.test_diff.TestExternalDiff.test_external_diff"
+                        ;; Value "/etc/ssl/certs/ca-certificates.crt" is not valid for "ssl.ca_certs"
+                        "-x" "breezy.tests.test_https_urllib.CaCertsConfigTests.test_default_exists"
+                        ;; Unknown Failure
+                        "-x" "breezy.tests.test_plugins.TestLoadPluginAt.test_compiled_loaded"
+                        "-x" "breezy.tests.test_plugins.TestPlugins.test_plugin_get_path_pyc_only"
+                        "-x" "breezy.tests.test_selftest.TestActuallyStartBzrSubprocess.test_start_and_stop_bzr_subprocess_send_signal"))))
+          (add-before 'strip 'rename-pth-file
+            (assoc-ref py:%standard-phases 'rename-pth-file)))))
+    (native-inputs (list gettext-minimal
+                         python-wrapper
+                         python-cython
+                         python-setuptools
+                         python-setuptools-gettext
+                         python-setuptools-rust
+                         python-tomli
+                         python-wheel
+                         ;; tests
+                         nano
+                         python-testtools
+                         python-packaging
+                         python-subunit))
+    (inputs (list python-configobj
+                  python-dulwich
+                  python-fastbencode
+                  python-fastimport
+                  python-launchpadlib
+                  python-merge3
+                  python-paramiko
+                  python-gpg
+                  python-patiencediff
+                  python-pygithub
+                  python-pyyaml
+                  python-tzlocal
+                  python-urllib3))
     (home-page "https://www.breezy-vcs.org/")
     (synopsis "Decentralized revision control system")
     (description
-- 
2.47.1





Information forwarded to guix-patches@HIDDEN:
bug#75859; Package guix-patches. Full text available.

Message received at 75859 <at> debbugs.gnu.org:


Received: (at 75859) by debbugs.gnu.org; 26 Jan 2025 12:28:31 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 07:28:31 2025
Received: from localhost ([127.0.0.1]:55086 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tc1kd-0004ya-Hs
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 07:28:31 -0500
Received: from mout01.posteo.de ([185.67.36.65]:59063)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <dariqq@HIDDEN>) id 1tc1kW-0004xl-Kq
 for 75859 <at> debbugs.gnu.org; Sun, 26 Jan 2025 07:28:25 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id B673D240028
 for <75859 <at> debbugs.gnu.org>; Sun, 26 Jan 2025 13:28:18 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1737894498; bh=lt7Q+kFiwYH+bL3M+rt5pJderXP3IS0ITW2QLhlsXS4=;
 h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:
 Content-Transfer-Encoding:From;
 b=Rrk5eJGbQvc7ZYs5+NhCxNZ7ey/KQJ7+a+J1QfwU6SsaADLsJP7CpZYWPRoSkzpQW
 OsyKIOpRtSDUTXfTZyHx7RgfgqjzQsA3csp+IJX5QA6CT9dxp8rRl7vtX9R05JSd4w
 xw8psvELfo5QgSMP7pZWwjwcoGNdPCWfYqYJ26L5d9R3YpMbu/qYGaE9ebLbAyYVTx
 IQ4jMSfL2HxIEYd/TvQACiz+uFsOKGlFbFN49/dvt+cTHMFpVGdtG2Qm+x4voG8toc
 rBjrduCDJS7T2r8JPeVRkR7f4RmhImS7z+2d6X7hP+wJo9o1xlZ+26tWRmw/Tk8eLn
 gKQ62KMXl5glw==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4YgrS22Cjzz6twB;
 Sun, 26 Jan 2025 13:28:18 +0100 (CET)
From: Dariqq <dariqq@HIDDEN>
To: 75859 <at> debbugs.gnu.org
Subject: [PATCH 3/4] gnu: Add python-merge3.
Date: Sun, 26 Jan 2025 12:27:09 +0000
Message-ID: <59fc6d54a44c0d3aa91a644a4cc9d48250b8442b.1737894063.git.dariqq@HIDDEN>
In-Reply-To: <cover.1737894063.git.dariqq@HIDDEN>
References: <cover.1737894063.git.dariqq@HIDDEN>
MIME-Version: 1.0
X-Debbugs-Cc: Lars-Dominik Braun <lars@HIDDEN>, Marius Bakke <marius@HIDDEN>,
 Munyoki Kilyungi <me@HIDDEN>,
 Sharlatan Hellseher <sharlatanus@HIDDEN>,
 Tanguy Le Carrour <tanguy@HIDDEN>, jgart <jgart@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75859
Cc: Dariqq <dariqq@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

* gnu/packages/python-xyz.scm (python-merge3): New variable.

Change-Id: If3238c86bb3c9b380facd02a238f5ebecc74d3de
---
 gnu/packages/python-xyz.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index ada1c78ce4..1d77330e1e 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -9728,6 +9728,23 @@ (define-public python-patiencediff
 humans, and implementation simplicity.")
     (license license:gpl2+)))
 
+(define-public python-merge3
+  (package
+    (name "python-merge3")
+    (version "0.0.15")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "merge3" version))
+       (sha256
+        (base32 "1brb97v24i5ym3cfxsv416a0m1n78s1aqllmwg4xymjdv09w5snk"))))
+    (build-system pyproject-build-system)
+    (native-inputs (list python-setuptools python-wheel))
+    (home-page "https://github.com/breezy-team/merge3")
+    (synopsis "Python implementation of 3-way merge")
+    (description "A Python implementation of 3-way merge of texts.")
+    (license license:gpl2+)))
+
 (define-public python-wmctrl
   (package
     (name "python-wmctrl")
-- 
2.47.1





Information forwarded to lars@HIDDEN, marius@HIDDEN, me@HIDDEN, sharlatanus@HIDDEN, tanguy@HIDDEN, jgart@HIDDEN, guix-patches@HIDDEN:
bug#75859; Package guix-patches. Full text available.

Message received at 75859 <at> debbugs.gnu.org:


Received: (at 75859) by debbugs.gnu.org; 26 Jan 2025 12:28:31 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 07:28:31 2025
Received: from localhost ([127.0.0.1]:55084 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tc1kd-0004yX-83
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 07:28:31 -0500
Received: from mout01.posteo.de ([185.67.36.65]:35879)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <dariqq@HIDDEN>) id 1tc1kW-0004xk-KG
 for 75859 <at> debbugs.gnu.org; Sun, 26 Jan 2025 07:28:25 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id C003D240027
 for <75859 <at> debbugs.gnu.org>; Sun, 26 Jan 2025 13:28:17 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1737894497; bh=BL9emI8167VHbtSUlHlUxK6JSuN2yWm75nqWhchfocc=;
 h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:
 Content-Transfer-Encoding:From;
 b=ANyQ+YZmQakB77N4WhBauWQKC+qJroVa7NkYgzLse0zU5vJnQyj9ePLgn+BlQtJ2s
 AgBUrOsKcqY0ggLTRgAWFDBXu6zyaGpU9fxeIA+SYRKA5+NmSbQMpvI4tgbJ8efAWQ
 aXgrjrqQTMYWLN7pOSBy1qkZCddg5L5TsL0SK7Z551xyonxQ+G149ZgDG6jb/6HEVc
 4SIysUv9pWd1F6CD/MeUpea04Iouoq224ag0s0jlTx5D12OLaZpofFq+rhut+Hd+QG
 KNh4+EOrtS2tAjowRWs+ybFttj2AHTFBIouQkeJ+iah5PsFQVCWvJh70adIRhVNM0G
 9c951yg0rK+OA==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4YgrS10zRXz6tyJ;
 Sun, 26 Jan 2025 13:28:17 +0100 (CET)
From: Dariqq <dariqq@HIDDEN>
To: 75859 <at> debbugs.gnu.org
Subject: [PATCH 2/4] gnu: Add python-setuptools-gettext.
Date: Sun, 26 Jan 2025 12:27:08 +0000
Message-ID: <d2c29b698cf0165c2588dd1a74db002982d99b34.1737894063.git.dariqq@HIDDEN>
In-Reply-To: <cover.1737894063.git.dariqq@HIDDEN>
References: <cover.1737894063.git.dariqq@HIDDEN>
MIME-Version: 1.0
X-Debbugs-Cc: Lars-Dominik Braun <lars@HIDDEN>, Marius Bakke <marius@HIDDEN>,
 Munyoki Kilyungi <me@HIDDEN>,
 Sharlatan Hellseher <sharlatanus@HIDDEN>,
 Tanguy Le Carrour <tanguy@HIDDEN>, jgart <jgart@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75859
Cc: Dariqq <dariqq@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

* gnu/packages/python-xyz.scm (python-setuptools-gettext): New variable.

Change-Id: If1c09c70db4c9a19106551df5a6629935ff704ff
---
 gnu/packages/python-xyz.scm | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index ce270846e8..ada1c78ce4 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -27617,6 +27617,25 @@ (define-public python-setuptools-rust
 Rust Python extensions implemented with @code{PyO3} or @code{rust-cpython}.")
     (license license:expat)))
 
+(define-public python-setuptools-gettext
+  (package
+    (name "python-setuptools-gettext")
+    (version "0.1.14")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "setuptools_gettext" version))
+       (sha256
+        (base32 "0b0d74cwa9lk32cajzpxxg9nwm5hch17xc6bzg6i4iqsygprkw23"))))
+    (build-system pyproject-build-system)
+    (native-inputs (list python-tomli
+                         python-setuptools
+                         python-wheel))
+    (home-page "https://github.com/breezy-team/setuptools-gettext")
+    (synopsis "Setuptools plugin for gettext")
+    (description "This package provides a plugin for Setuptools for gettext.")
+    (license license:gpl2+)))
+
 (define-public python-pyclipper
   (package
     (name "python-pyclipper")
-- 
2.47.1





Information forwarded to lars@HIDDEN, marius@HIDDEN, me@HIDDEN, sharlatanus@HIDDEN, tanguy@HIDDEN, jgart@HIDDEN, guix-patches@HIDDEN:
bug#75859; Package guix-patches. Full text available.

Message received at 75859 <at> debbugs.gnu.org:


Received: (at 75859) by debbugs.gnu.org; 26 Jan 2025 12:28:26 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 07:28:26 2025
Received: from localhost ([127.0.0.1]:55081 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tc1kW-0004y0-SC
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 07:28:26 -0500
Received: from mout02.posteo.de ([185.67.36.66]:49579)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <dariqq@HIDDEN>) id 1tc1kT-0004xd-Ih
 for 75859 <at> debbugs.gnu.org; Sun, 26 Jan 2025 07:28:22 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id EB4D1240101
 for <75859 <at> debbugs.gnu.org>; Sun, 26 Jan 2025 13:28:14 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1737894494; bh=HvPjD6FWm0SNKohd36X1HMrTmd5cNeSCASAsXYSsMyE=;
 h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:
 Content-Transfer-Encoding:From;
 b=EdjL3+gSmdal5ZOIWvaX2K72QLS+4Dvt+NRrIIBY17ScUo3j6YphV5kEKApQ2de6Z
 HMENLghS8HdKTL6oP6yEvwljMJv321S5RFxnZQLJhlwdCu8gYmHqfVkk4GjfjzdiMZ
 /sz/5o2ElmdVTw9pYfapgDa+uDFCVDrt8Wutv696GtFNdgVdjIe6XgPKvNRnPBsN7W
 7YqT+Q0TFIjsoZtqSZnI9I2n7Aftmoi/qj1jQGgsj4XKeApgWvCfGHiAgu7E0efne9
 jlHP5QAhxQfJvnJ6UHqTVJpW+KkydphCEIxDL6PKKiGVYoXmY7Y7UjquXr9SImsIvM
 2ymL812ae5dMQ==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4YgrRy2TR5z6twD;
 Sun, 26 Jan 2025 13:28:14 +0100 (CET)
From: Dariqq <dariqq@HIDDEN>
To: 75859 <at> debbugs.gnu.org
Subject: [PATCH 1/4] gnu: python-patiencediff: Update to 0.2.15.
Date: Sun, 26 Jan 2025 12:27:07 +0000
Message-ID: <3c5ea0b1236239abcce1f1d1f72eea13f5e9d210.1737894063.git.dariqq@HIDDEN>
In-Reply-To: <cover.1737894063.git.dariqq@HIDDEN>
References: <cover.1737894063.git.dariqq@HIDDEN>
MIME-Version: 1.0
X-Debbugs-Cc: Lars-Dominik Braun <lars@HIDDEN>, Marius Bakke <marius@HIDDEN>,
 Munyoki Kilyungi <me@HIDDEN>,
 Sharlatan Hellseher <sharlatanus@HIDDEN>,
 Tanguy Le Carrour <tanguy@HIDDEN>, jgart <jgart@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75859
Cc: Dariqq <dariqq@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

* gnu/packages/python-xyz.scm (python-patiencediff): Update to 0.2.15.
[build-system]: Use pyproject-build-system.
[arguments]: Skip sanity check
[native-inputs]: Add python-pytest, python-setuptools, python-wheel.
[license]: Correct to gpl2+.

Change-Id: I3afe082fafffc3c8d6e78d742d921a13f284428c
---
 gnu/packages/python-xyz.scm | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 7fcf9c3ba8..ce270846e8 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -9705,22 +9705,28 @@ (define-public python-pygit2
 (define-public python-patiencediff
   (package
     (name "python-patiencediff")
-    (version "0.2.0")
+    (version "0.2.15")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "patiencediff" version))
         (sha256
          (base32
-          "0yjk50lsd4gnllxls925xbcdxwvmda37w2a1shk0p1nvl3fcha6q"))))
-    (build-system python-build-system)
+          "012jjgkkpk563l1mgj2ax4z32h0l558adhr2qa3chfrfsgpi22fh"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:phases #~(modify-phases %standard-phases
+                   ;; Fails because bin/patiencediff expects two files to diff
+                   (delete 'sanity-check))))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://www.breezy-vcs.org/")
     (synopsis "Python implementation of the patiencediff algorithm")
     (description
      "This package contains a Python implementation of the @code{patiencediff}
 algorithm.  Patiencediff provides a good balance of performance, nice output for
 humans, and implementation simplicity.")
-    (license license:gpl2)))
+    (license license:gpl2+)))
 
 (define-public python-wmctrl
   (package
-- 
2.47.1





Information forwarded to lars@HIDDEN, marius@HIDDEN, me@HIDDEN, sharlatanus@HIDDEN, tanguy@HIDDEN, jgart@HIDDEN, guix-patches@HIDDEN:
bug#75859; Package guix-patches. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 26 Jan 2025 12:24:09 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 07:24:09 2025
Received: from localhost ([127.0.0.1]:55049 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tc1gO-0004j8-Vi
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 07:24:09 -0500
Received: from lists.gnu.org ([2001:470:142::17]:40826)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <dariqq@HIDDEN>) id 1tc1gM-0004id-Ev
 for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 07:24:07 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <dariqq@HIDDEN>) id 1tc1gG-0005xl-VE
 for guix-patches@HIDDEN; Sun, 26 Jan 2025 07:24:01 -0500
Received: from mout02.posteo.de ([185.67.36.66])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <dariqq@HIDDEN>) id 1tc1gF-0004dd-3G
 for guix-patches@HIDDEN; Sun, 26 Jan 2025 07:24:00 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id 7F479240101
 for <guix-patches@HIDDEN>; Sun, 26 Jan 2025 13:23:55 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1737894235; bh=a9BnC9OHnV/tB8Z8P1wtkeULvDFFZMRJjjUyEmUxtAk=;
 h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:
 Content-Transfer-Encoding:From;
 b=I6zDT3QRaW0xDkoiEnu76YLwUhsgC5xIJOy+Fl4D712TQURX3x8f7K8J8JqEaPCRz
 3MwEIddX6D4N6W20pFcOUJaf/O+daFVAqyTT7Nus4gDUKh9uO0YBhsK7q9J+Nl3Iug
 d1eNFKq/xF555HkLdtxBNIIhOfQWlMxWj6w3JcXh3v69tZS463OhWd9VIHtOPdJ973
 0x6RNkrgWwoBkJ6BdNeOUtwl69uYcmFl7nBEEIPgN/P65R9sZedqs95mWv08twbty5
 KHWCaByuL1fhrOBHZROjRfCvVEFTU6OW3JRe6OAiqtiMzoLsDw6cO3hn6xWl4tmolW
 BMQK3lqDI1/Fw==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4YgrLy4zJVz6txp;
 Sun, 26 Jan 2025 13:23:53 +0100 (CET)
From: Dariqq <dariqq@HIDDEN>
To: guix-patches@HIDDEN
Subject: [PATCH 0/4] breezy: Update to 3.3.9.
Date: Sun, 26 Jan 2025 12:22:47 +0000
Message-ID: <cover.1737894063.git.dariqq@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Received-SPF: pass client-ip=185.67.36.66; envelope-from=dariqq@HIDDEN;
 helo=mout02.posteo.de
X-Spam_score_int: -43
X-Spam_score: -4.4
X-Spam_bar: ----
X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01,
 RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,
 SPF_HELO_NONE=0.001, SPF_PASS=-0.001,
 T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: submit
Cc: Dariqq <dariqq@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.0 (/)

Hello,

Played around with breezy a bit and noticed that the package was outdated in Guix. 

Biggest change is that breezy now also uses some rust code which means I ahd to switch to cargo-build-system (to set up the cargo vendor) only to replace everything with the python-build-system code anyway.

Furthermore reenabled the test suite where most tests are now passing and skipped the few that fail. (might need adjustments for other architectures). Tried to explain in comments why certain tests are being skipped but for the last 3 i dont understand the error.
Not sure what to do with the extremely long test names which makes the linter complain

I also dropped the gio-patch because it didnt apply anymore and the gio transport backend does not work anyway.

One problem i noticed is that the rust dependency makes (guix bzr-download) unusable on systems not supported by our rust. This currently is already the case because some of the dependencies depend on python-cryptography but now also breezy itself directly uses rust.
Given that bzr-download is currently unused in the guix code i think is acceptable.

Also updated patiencediff along the way.

Testing:
 Build everything with --check --no-grafts on x86_64
 tried to build on aarch64-linux using qemu-binfmt but things hung at building python-cython-next


Dariqq (4):
  gnu: python-patiencediff: Update to 0.2.15.
  gnu: Add python-setuptools-gettext.
  gnu: Add python-merge3.
  gnu: breezy: Update to 3.3.9.

 gnu/local.mk                              |   1 -
 gnu/packages/patches/breezy-fix-gio.patch | 338 ----------------------
 gnu/packages/python-xyz.scm               |  50 +++-
 gnu/packages/version-control.scm          | 122 +++++---
 4 files changed, 135 insertions(+), 376 deletions(-)
 delete mode 100644 gnu/packages/patches/breezy-fix-gio.patch


base-commit: a895cc4c5bdb5d4bf8383077ef587ac18d069d7d
-- 
2.47.1





Acknowledgement sent to Dariqq <dariqq@HIDDEN>:
New bug report received and forwarded. Copy sent to guix-patches@HIDDEN. Full text available.
Report forwarded to guix-patches@HIDDEN:
bug#75859; Package guix-patches. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sun, 26 Jan 2025 12:30:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.