Subject: [PATCH] gnu: ganeti: Fix build.

From: [email-masked]
Date: Sat, 20 Jul 2024 13:48:49 +0200

From: Attila Lendvai <[email-masked]>

* gnu/packages/virtualization.scm (ganeti): Add backported patch
`ganeti-openssh-test-fix.patch`.  Disable test `py_compat_types` in
`test/hs/Test/Ganeti/OpCodes.hs`.  Disable test
`test/py/ganeti.ssh_unittest.py`.

Change-Id: Id317c3f159374c2568a762c42c821ec2ee879bc6
---
 .../patches/ganeti-openssh-test-fix.patch     | 46 +++++++++++++++++++
 gnu/packages/virtualization.scm               |  9 +++-
 2 files changed, 54 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/ganeti-openssh-test-fix.patch

diff --git a/gnu/packages/patches/ganeti-openssh-test-fix.patch b/gnu/packages/patches/ganeti-openssh-test-fix.patch
new file mode 100644
index 00000000000..ed7a498fab2
--- /dev/null
+++ b/gnu/packages/patches/ganeti-openssh-test-fix.patch
@@ -0,0 +1,46 @@
+From 8a06656acf8f6e3dfa907bea77bd57a469a8d3fb Mon Sep 17 00:00:00 2001
+From: codefritzel <[email-masked]>
+Date: Thu, 11 Jul 2024 23:10:41 +0200
+Subject: replace dsa with rsa in TestUpdateSshRoot
+
+DSA to be deactivated in OpenSSH from 2025. Since version 7.0 dsa is
+marked as deprecated.
+
+The TestUpdateSshRoot uses DSA, which will fail in the future with newer
+OpenSSH versions.
+
+fixes #1752
+
+Signed-off-by: codefritzel <[email-masked]>
+
+diff --git a/test/py/ganeti.tools.prepare_node_join_unittest.py b/test/py/ganeti.tools.prepare_node_join_unittest.py
+index fe7efdf8c..fe029b8f2 100755
+--- a/test/py/ganeti.tools.prepare_node_join_unittest.py
++++ b/test/py/ganeti.tools.prepare_node_join_unittest.py
+@@ -229,20 +229,20 @@ class TestUpdateSshRoot(unittest.TestCase):
+   def testUpdate(self):
+     data = {
+       constants.SSHS_SSH_ROOT_KEY: [
+-        (constants.SSHK_DSA, "privatedsa", "ssh-dss pubdsa"),
++        (constants.SSHK_RSA, "privatersa", "ssh-rsa pubrsa"),
+         ],
+-      constants.SSHS_SSH_KEY_TYPE: "dsa",
+-      constants.SSHS_SSH_KEY_BITS: 1024,
++      constants.SSHS_SSH_KEY_TYPE: "rsa",
++      constants.SSHS_SSH_KEY_BITS: 2048,
+       }
+ 
+     prepare_node_join.UpdateSshRoot(data, False,
+                                     _homedir_fn=self._GetHomeDir)
+     self.assertEqual(os.listdir(self.tmpdir), [".ssh"])
+     self.assertEqual(sorted(os.listdir(self.sshdir)),
+-                     sorted(["authorized_keys", "id_dsa", "id_dsa.pub"]))
+-    self.assertTrue(utils.ReadFile(utils.PathJoin(self.sshdir, "id_dsa"))
++                     sorted(["authorized_keys", "id_rsa", "id_rsa.pub"]))
++    self.assertTrue(utils.ReadFile(utils.PathJoin(self.sshdir, "id_rsa"))
+                     is not None)
+-    pub_key = utils.ReadFile(utils.PathJoin(self.sshdir, "id_dsa.pub"))
++    pub_key = utils.ReadFile(utils.PathJoin(self.sshdir, "id_rsa.pub"))
+     self.assertTrue(pub_key is not None)
+     self.assertEqual(utils.ReadFile(utils.PathJoin(self.sshdir,
+                                                     "authorized_keys")),
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index dfd0e19e4b2..100957d4106 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -749,6 +749,7 @@ (define-public ganeti
                                        "ganeti-procps-compat.patch"
                                        "ganeti-disable-version-symlinks.patch"
                                        "ganeti-lens-compat.patch"
+                                       "ganeti-openssh-test-fix.patch"
                                        "ganeti-template-haskell-2.17.patch"
                                        "ganeti-template-haskell-2.18.patch"
                                        "ganeti-reorder-arbitrary-definitions.patch"
@@ -896,13 +897,19 @@ (define-public ganeti
                (("test/py/ganeti\\.hypervisor\\.hv_kvm_unittest\\.py") "")
                (("test/py/ganeti\\.tools\\.ensure_dirs_unittest\\.py") "")
                (("test/py/ganeti\\.utils\\.io_unittest-runasroot\\.py") "")
+               ;; Tracked at: https://github.com/ganeti/ganeti/issues/1752
+               (("test/py/ganeti\\.ssh_unittest\\.py") "")
                ;; Disable the bash_completion test, as it requires the full
                ;; bash instead of bash-minimal.
                (("test/py/bash_completion\\.bash")
                 "")
                ;; This test requires networking.
                (("test/py/import-export_unittest\\.bash")
-                ""))))
+                ""))
+             (substitute* "test/hs/Test/Ganeti/OpCodes.hs"
+               ;; Some serdes failure, tracked at:
+               ;; https://github.com/ganeti/ganeti/issues/1753
+               ((", 'case_py_compat_types") ""))))
          (add-after 'build 'build-bash-completions
            (lambda _
              (setenv "PYTHONPATH" ".")

base-commit: 9df5289c6687cd5688c275d16417389fbab6d384
-- 
2.45.1