public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: profiles/, app-emulation/ganeti/files/, app-emulation/ganeti/
@ 2022-07-23 19:41 David Seifert
  0 siblings, 0 replies; only message in thread
From: David Seifert @ 2022-07-23 19:41 UTC (permalink / raw
  To: gentoo-commits

commit:     5bf91f5a2f1f31c230fadf7547badfc221f8f20b
Author:     David Seifert <soap <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 23 19:41:42 2022 +0000
Commit:     David Seifert <soap <AT> gentoo <DOT> org>
CommitDate: Sat Jul 23 19:41:42 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5bf91f5a

Reverts: [QA] 12c9e08 ("app-emulation/ganeti: import from infra overlay before cleanup")

The ebuilds added still have way too many QA issues:
- py3.7 (dead), best version is py3.8 which we're about to remove
- massive FILESDIR
- no BDEPEND
- more masked dependencies
- the ebuilds are a web of complicated patches/seds

Signed-off-by: David Seifert <soap <AT> gentoo.org>

 app-emulation/ganeti/Manifest                      |   2 -
 ...st_agent-QEMU-Guest-Agent-sup.stable-2.15.patch | 122 ------
 ...st_agent-QEMU-Guest-Agent-sup.stable-2.16.patch | 122 ------
 .../ganeti/files/fix_ftbfs_with_sphinx_1.4         |  47 ---
 .../ganeti/files/ganeti-2.10-rundir.patch          |  35 --
 .../ganeti/files/ganeti-2.11-add-pgrep.patch       |  25 --
 .../files/ganeti-2.11-daemon-util-tests.patch      |  38 --
 .../files/ganeti-2.11-dont-nest-libdir.patch       |  49 ---
 .../files/ganeti-2.11-dont-print-man-help.patch    |  13 -
 app-emulation/ganeti/files/ganeti-2.11-tests.patch |  13 -
 .../ganeti/files/ganeti-2.12-qemu-enable-kvm.patch |  12 -
 .../files/ganeti-2.12-start-stop-daemon-args.patch |  39 --
 .../files/ganeti-2.13-process_unittest.patch       |  21 --
 .../ganeti/files/ganeti-2.15-daemon-util.patch     |  53 ---
 .../ganeti/files/ganeti-2.15-disable-docs.patch    |  44 ---
 ...ont-invert-return-values-for-man-warnings.patch |  10 -
 .../ganeti-2.15-kvmd-run-as-daemon-user.patch      |  33 --
 .../files/ganeti-2.15-noded-must-run-as-root.patch |  50 ---
 .../ganeti/files/ganeti-2.15-python-mock.patch     |  26 --
 .../ganeti/files/ganeti-2.15-respect-HFLAGS.patch  |  12 -
 .../files/ganeti-2.15-use-balloon-device.patch     |  13 -
 .../ganeti/files/ganeti-2.15.2-bdev_py.patch       |  16 -
 .../files/ganeti-2.15.2-check-man-warnings.patch   |  13 -
 .../files/ganeti-2.15.2-ftbfs-sphinx-warning.patch |  41 --
 .../ganeti/files/ganeti-2.15.2-pyopenssl.patch     |  33 --
 ...aneti-2.15.2-remove-sandbox-failing-tests.patch |  58 ---
 .../ganeti-2.16-kvmd-run-as-daemon-user.patch      |  30 --
 .../files/ganeti-2.16-noded-must-run-as-root.patch |  26 --
 .../ganeti/files/ganeti-2.17-relax-deps.patch      |  21 --
 .../files/ganeti-2.9-disable-root-tests.patch      |  18 -
 .../ganeti/files/ganeti-2.9-skip-cli-test.patch    |  18 -
 .../ganeti/files/ganeti-3.0.1-buildfix.patch       |  79 ----
 .../ganeti/files/ganeti-3.0.1-docfixes.patch       |  10 -
 .../files/ganeti-3.0.1-gentoo-infra-hacks.patch    | 195 ----------
 .../ganeti/files/ganeti-3.0.1-sphinx.patch         |   9 -
 .../files/ganeti-3.0.1-template_haskell.patch      |  24 --
 .../ganeti/files/ganeti-3.0.2-docfixes.patch       |  11 -
 .../ganeti-3.0.2-gentoo-daemon-util-part2.patch    |  64 ----
 .../ganeti/files/ganeti-3.0.2-less-sleep.patch     |  20 -
 .../ganeti/files/ganeti-kvm-poweroff.confd         |   4 -
 .../ganeti/files/ganeti-kvm-poweroff.initd         |  57 ---
 app-emulation/ganeti/files/ganeti-lockdir.patch    |  15 -
 app-emulation/ganeti/files/ganeti-tmpfilesd        |  41 --
 app-emulation/ganeti/files/ganeti.confd-r2         |  19 -
 app-emulation/ganeti/files/ganeti.confd-r5         |  30 --
 app-emulation/ganeti/files/ganeti.initd-r3         |  96 -----
 app-emulation/ganeti/files/ganeti.initd-r4         |  96 -----
 app-emulation/ganeti/files/ganeti.initd-r5         | 103 -----
 app-emulation/ganeti/files/ganeti.initd-r6         | 108 ------
 app-emulation/ganeti/ganeti-3.0.2-r2.ebuild        | 413 ---------------------
 app-emulation/ganeti/ganeti-3.0.9999.ebuild        | 413 ---------------------
 app-emulation/ganeti/ganeti-3.1.9999.ebuild        | 413 ---------------------
 app-emulation/ganeti/metadata.xml                  |  32 --
 profiles/package.mask                              |   4 -
 54 files changed, 3309 deletions(-)

diff --git a/app-emulation/ganeti/Manifest b/app-emulation/ganeti/Manifest
deleted file mode 100644
index 3fa0d08d946d..000000000000
--- a/app-emulation/ganeti/Manifest
+++ /dev/null
@@ -1,2 +0,0 @@
-DIST ganeti-3.0.2.tar.gz 4941978 BLAKE2B d2d11554e202895e93531254ffe68f1ac69943870c9bb91cccbda17bf1f43dba27dcb869aff9f35aca23b4b3f7100597f71ebe3a46e464ec5b24d2f34606935d SHA512 8724888251ba952eb2861f9322adf7d022bbe92fcee0c92c033d07397907737e7f54a5a8751c24beb6343392e7b6ddba4b61981ef5879e47d821ffeae34fa1c1
-DIST ganeti_3.0.2-1.debian.tar.xz 45700 BLAKE2B 5b2c2285102f46b8e4bceaf040880fe38f999c4abe483b415065fc9408eb713643b69c16d2a468d9e159dcf6fd9388732db03db53955fa603e902a13faa2979e SHA512 49e4698998b87a3c204558b60be59d2b9810783d9c8d94b64eeb72302b3ed62c41decb4d24b54cf9c45f13ad3549362e4b837addc7de4a0e5efc646fb6f6c52f

diff --git a/app-emulation/ganeti/files/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.15.patch b/app-emulation/ganeti/files/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.15.patch
deleted file mode 100644
index 460636fa6340..000000000000
--- a/app-emulation/ganeti/files/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.15.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-From c3697936405ed8c95b674a7d412886e364306f5f Mon Sep 17 00:00:00 2001
-Message-Id: <c3697936405ed8c95b674a7d412886e364306f5f.1483650125.git.robbat2@gentoo.org>
-From: "Robin H. Johnson" <robbat2@gentoo.org>
-Date: Thu, 29 Sep 2016 08:57:28 -0700
-Subject: [PATCH-2.15] kvm: use_guest_agent: QEMU Guest Agent support
-
-Implement the QEMU Guest Agent sockets, so that code/scripts on the
-hypervisors can communicate with guest operating systems easily.
-
-Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
----
- lib/hypervisor/hv_kvm/__init__.py | 23 +++++++++++++++++++++++
- man/gnt-instance.rst              |  7 +++++++
- src/Ganeti/Constants.hs           |  5 +++++
- 3 files changed, 35 insertions(+)
-
-diff --git a/lib/hypervisor/hv_kvm/__init__.py b/lib/hypervisor/hv_kvm/__init__.py
-index cd29baa38..89bc18b85 100644
---- a/lib/hypervisor/hv_kvm/__init__.py
-+++ b/lib/hypervisor/hv_kvm/__init__.py
-@@ -351,6 +351,7 @@ class KVMHypervisor(hv_base.BaseHypervisor):
-     constants.HV_MIGRATION_BANDWIDTH: hv_base.REQ_NONNEGATIVE_INT_CHECK,
-     constants.HV_MIGRATION_DOWNTIME: hv_base.REQ_NONNEGATIVE_INT_CHECK,
-     constants.HV_MIGRATION_MODE: hv_base.MIGRATION_MODE_CHECK,
-+    constants.HV_USE_GUEST_AGENT: hv_base.NO_CHECK,
-     constants.HV_USE_LOCALTIME: hv_base.NO_CHECK,
-     constants.HV_DISK_CACHE:
-       hv_base.ParamInSet(True, constants.HT_VALID_CACHE_TYPES),
-@@ -581,6 +582,13 @@ class KVMHypervisor(hv_base.BaseHypervisor):
-     """
-     return utils.PathJoin(cls._CTRL_DIR, "%s.qmp" % instance_name)
- 
-+  @classmethod
-+  def _InstanceQemuGuestAgentMonitor(cls, instance_name):
-+    """Returns the instance serial QEMU Guest Agent socket name
-+
-+    """
-+    return utils.PathJoin(cls._CTRL_DIR, "%s.qga" % instance_name)
-+
-   @classmethod
-   def _InstanceKvmdMonitor(cls, instance_name):
-     """Returns the instance kvm daemon socket name
-@@ -667,6 +675,7 @@ class KVMHypervisor(hv_base.BaseHypervisor):
-     utils.RemoveFile(cls._InstanceMonitor(instance_name))
-     utils.RemoveFile(cls._InstanceSerial(instance_name))
-     utils.RemoveFile(cls._InstanceQmpMonitor(instance_name))
-+    utils.RemoveFile(cls._InstanceQemuGuestAgentMonitor(instance_name))
-     utils.RemoveFile(cls._InstanceKVMRuntime(instance_name))
-     utils.RemoveFile(cls._InstanceKeymapFile(instance_name))
-     uid_file = cls._InstanceUidFile(instance_name)
-@@ -1376,6 +1385,20 @@ class KVMHypervisor(hv_base.BaseHypervisor):
-     if self._UUID_RE.search(kvmhelp):
-       kvm_cmd.extend(["-uuid", instance.uuid])
- 
-+    # Add guest agent socket
-+    if hvp[constants.HV_USE_GUEST_AGENT]:
-+      qga_addr = utils.GetFreeSlot(pci_reservations, reserve=True)
-+      qga_pci_info = "bus=%s,addr=%s" % ('pci.0', hex(qga_addr))
-+      qga_path = self._InstanceQemuGuestAgentMonitor(instance.name)
-+      logging.info("KVM: Guest Agent available at %s", qga_path)
-+      # The 'qga0' identified can change, but the 'org.qemu.guest_agent.0' string is
-+      # the default expected by the Guest Agent.
-+      kvm_cmd.extend([
-+        "-chardev", "socket,path=%s,server,nowait,id=qga0" % qga_path,
-+        "-device", "virtio-serial,id=qga0,%s" % qga_pci_info,
-+        "-device", "virtserialport,chardev=qga0,name=org.qemu.guest_agent.0",
-+        ])
-+
-     if hvp[constants.HV_KVM_EXTRA]:
-       kvm_cmd.extend(hvp[constants.HV_KVM_EXTRA].split(" "))
- 
-diff --git a/man/gnt-instance.rst b/man/gnt-instance.rst
-index a29fd7972..433b1f3b1 100644
---- a/man/gnt-instance.rst
-+++ b/man/gnt-instance.rst
-@@ -526,6 +526,13 @@ viridian
-     viridian (Hyper-V) for this instance. The default is false,
-     disabling viridian support.
- 
-+use\_guest\_agent
-+    Valid for the KVM hypervisor.
-+
-+    A boolean option that specifies if the hypervisor should enable
-+    the QEMU Guest Agent protocol for this instance. By default, the
-+    Guest Agent is disabled.
-+
- use\_localtime
-     Valid for the Xen HVM and KVM hypervisors.
- 
-diff --git a/src/Ganeti/Constants.hs b/src/Ganeti/Constants.hs
-index 09783d4bf..cf5421946 100644
---- a/src/Ganeti/Constants.hs
-+++ b/src/Ganeti/Constants.hs
-@@ -1806,6 +1806,9 @@ hvUsbMouse = "usb_mouse"
- hvUseBootloader :: String
- hvUseBootloader = "use_bootloader"
- 
-+hvUseGuestAgent :: String
-+hvUseGuestAgent = "use_guest_agent"
-+
- hvUseLocaltime :: String
- hvUseLocaltime = "use_localtime"
- 
-@@ -1938,6 +1941,7 @@ hvsParameterTypes = Map.fromList
-   , (hvUsbDevices,                      VTypeString)
-   , (hvUsbMouse,                        VTypeString)
-   , (hvUseBootloader,                   VTypeBool)
-+  , (hvUseGuestAgent,                   VTypeBool)
-   , (hvUseLocaltime,                    VTypeBool)
-   , (hvVga,                             VTypeString)
-   , (hvVhostNet,                        VTypeBool)
-@@ -3996,6 +4000,7 @@ hvcDefaults =
-           , (hvMigrationBandwidth,              PyValueEx (32 :: Int))
-           , (hvMigrationDowntime,               PyValueEx (30 :: Int))
-           , (hvMigrationMode,                   PyValueEx htMigrationLive)
-+          , (hvUseGuestAgent,                   PyValueEx False)
-           , (hvUseLocaltime,                    PyValueEx False)
-           , (hvDiskCache,                       PyValueEx htCacheDefault)
-           , (hvSecurityModel,                   PyValueEx htSmNone)
--- 
-2.11.0.rc2
-

diff --git a/app-emulation/ganeti/files/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.16.patch b/app-emulation/ganeti/files/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.16.patch
deleted file mode 100644
index 6bca593a08d6..000000000000
--- a/app-emulation/ganeti/files/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.16.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-From 16a08ecb268062a2634dbfc081b4729cb749b7b4 Mon Sep 17 00:00:00 2001
-Message-Id: <16a08ecb268062a2634dbfc081b4729cb749b7b4.1483650125.git.robbat2@gentoo.org>
-From: "Robin H. Johnson" <robbat2@gentoo.org>
-Date: Thu, 29 Sep 2016 08:57:28 -0700
-Subject: [PATCH-2.16] kvm: use_guest_agent: QEMU Guest Agent support
-
-Implement the QEMU Guest Agent sockets, so that code/scripts on the
-hypervisors can communicate with guest operating systems easily.
-
-Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
----
- lib/hypervisor/hv_kvm/__init__.py | 23 +++++++++++++++++++++++
- man/gnt-instance.rst              |  7 +++++++
- src/Ganeti/Constants.hs           |  5 +++++
- 3 files changed, 35 insertions(+)
-
-diff --git a/lib/hypervisor/hv_kvm/__init__.py b/lib/hypervisor/hv_kvm/__init__.py
-index ac02ff56c..b865d6f3a 100644
---- a/lib/hypervisor/hv_kvm/__init__.py
-+++ b/lib/hypervisor/hv_kvm/__init__.py
-@@ -497,6 +497,7 @@ class KVMHypervisor(hv_base.BaseHypervisor):
-     constants.HV_MIGRATION_BANDWIDTH: hv_base.REQ_NONNEGATIVE_INT_CHECK,
-     constants.HV_MIGRATION_DOWNTIME: hv_base.REQ_NONNEGATIVE_INT_CHECK,
-     constants.HV_MIGRATION_MODE: hv_base.MIGRATION_MODE_CHECK,
-+    constants.HV_USE_GUEST_AGENT: hv_base.NO_CHECK,
-     constants.HV_USE_LOCALTIME: hv_base.NO_CHECK,
-     constants.HV_DISK_CACHE:
-       hv_base.ParamInSet(True, constants.HT_VALID_CACHE_TYPES),
-@@ -750,6 +751,13 @@ class KVMHypervisor(hv_base.BaseHypervisor):
-     """
-     return utils.PathJoin(cls._CTRL_DIR, "%s.qmp" % instance_name)
- 
-+  @classmethod
-+  def _InstanceQemuGuestAgentMonitor(cls, instance_name):
-+    """Returns the instance serial QEMU Guest Agent socket name
-+
-+    """
-+    return utils.PathJoin(cls._CTRL_DIR, "%s.qga" % instance_name)
-+
-   @classmethod
-   def _InstanceKvmdMonitor(cls, instance_name):
-     """Returns the instance kvm daemon socket name
-@@ -836,6 +844,7 @@ class KVMHypervisor(hv_base.BaseHypervisor):
-     utils.RemoveFile(cls._InstanceMonitor(instance_name))
-     utils.RemoveFile(cls._InstanceSerial(instance_name))
-     utils.RemoveFile(cls._InstanceQmpMonitor(instance_name))
-+    utils.RemoveFile(cls._InstanceQemuGuestAgentMonitor(instance_name))
-     utils.RemoveFile(cls._InstanceKVMRuntime(instance_name))
-     utils.RemoveFile(cls._InstanceKeymapFile(instance_name))
-     uid_file = cls._InstanceUidFile(instance_name)
-@@ -1544,6 +1553,20 @@ class KVMHypervisor(hv_base.BaseHypervisor):
-     if self._UUID_RE.search(kvmhelp):
-       kvm_cmd.extend(["-uuid", instance.uuid])
- 
-+    # Add guest agent socket
-+    if hvp[constants.HV_USE_GUEST_AGENT]:
-+      qga_addr = utils.GetFreeSlot(bus_slots[_PCI_BUS], reserve=True)
-+      qga_pci_info = "bus=%s,addr=%s" % (_PCI_BUS, hex(qga_addr))
-+      qga_path = self._InstanceQemuGuestAgentMonitor(instance.name)
-+      logging.info("KVM: Guest Agent available at %s", qga_path)
-+      # The 'qga0' identified can change, but the 'org.qemu.guest_agent.0' string is
-+      # the default expected by the Guest Agent.
-+      kvm_cmd.extend([
-+        "-chardev", "socket,path=%s,server,nowait,id=qga0" % qga_path,
-+        "-device", "virtio-serial,id=qga0,%s" % qga_pci_info,
-+        "-device", "virtserialport,chardev=qga0,name=org.qemu.guest_agent.0",
-+        ])
-+
-     if hvp[constants.HV_KVM_EXTRA]:
-       kvm_cmd.extend(hvp[constants.HV_KVM_EXTRA].split(" "))
- 
-diff --git a/man/gnt-instance.rst b/man/gnt-instance.rst
-index 283392cc8..493ae929d 100644
---- a/man/gnt-instance.rst
-+++ b/man/gnt-instance.rst
-@@ -545,6 +545,13 @@ viridian
-     viridian (Hyper-V) for this instance. The default is false,
-     disabling viridian support.
- 
-+use\_guest\_agent
-+    Valid for the KVM hypervisor.
-+
-+    A boolean option that specifies if the hypervisor should enable
-+    the QEMU Guest Agent protocol for this instance. By default, the
-+    Guest Agent is disabled.
-+
- use\_localtime
-     Valid for the Xen HVM and KVM hypervisors.
- 
-diff --git a/src/Ganeti/Constants.hs b/src/Ganeti/Constants.hs
-index 420ccb6cd..4aa5edf63 100644
---- a/src/Ganeti/Constants.hs
-+++ b/src/Ganeti/Constants.hs
-@@ -1814,6 +1814,9 @@ hvUsbMouse = "usb_mouse"
- hvUseBootloader :: String
- hvUseBootloader = "use_bootloader"
- 
-+hvUseGuestAgent :: String
-+hvUseGuestAgent = "use_guest_agent"
-+
- hvUseLocaltime :: String
- hvUseLocaltime = "use_localtime"
- 
-@@ -1948,6 +1951,7 @@ hvsParameterTypes = Map.fromList
-   , (hvUsbDevices,                      VTypeString)
-   , (hvUsbMouse,                        VTypeString)
-   , (hvUseBootloader,                   VTypeBool)
-+  , (hvUseGuestAgent,                   VTypeBool)
-   , (hvUseLocaltime,                    VTypeBool)
-   , (hvVga,                             VTypeString)
-   , (hvVhostNet,                        VTypeBool)
-@@ -4099,6 +4103,7 @@ hvcDefaults =
-           , (hvMigrationBandwidth,              PyValueEx (32 :: Int))
-           , (hvMigrationDowntime,               PyValueEx (30 :: Int))
-           , (hvMigrationMode,                   PyValueEx htMigrationLive)
-+          , (hvUseGuestAgent,                   PyValueEx False)
-           , (hvUseLocaltime,                    PyValueEx False)
-           , (hvDiskCache,                       PyValueEx htCacheDefault)
-           , (hvSecurityModel,                   PyValueEx htSmNone)
--- 
-2.11.0.rc2
-

diff --git a/app-emulation/ganeti/files/fix_ftbfs_with_sphinx_1.4 b/app-emulation/ganeti/files/fix_ftbfs_with_sphinx_1.4
deleted file mode 100644
index 0050203bf223..000000000000
--- a/app-emulation/ganeti/files/fix_ftbfs_with_sphinx_1.4
+++ /dev/null
@@ -1,47 +0,0 @@
-Copied from 2.15.2 Debian Patches, as it was missed in the 2.16.0~rc1 debian patches.
-
-Author: Apollon Oikonomopoulos <apoikos@debian.org>
-Description: Fix FTBFS with sphinx 1.4
- Suppress app.add_role warnings, as upstream knowingly overrides sphinx's
- built-in manpage role. Without this, a warning is emitted which then turns to
- an error when sphinx is run with the `-W' switch.
- .
- Also replace unicode ellipses in doc/design-query2.rst with three ascii dots,
- as sphinx emits another warning for not being able to properly highlight these
- lines as Python code.
-Last-Update: 2016-07-09
-Forwarded: no
---- a/doc/conf.py
-+++ b/doc/conf.py
-@@ -229,3 +229,8 @@
- 
- # If false, no module index is generated.
- latex_use_modindex = False
-+
-+# We override the manpage role and sphinx issues a warning, which is treated as
-+# error. Suppress role_add warnings to avoid FTBFS.
-+
-+suppress_warnings = ["app.add_role"]
---- a/doc/design-query2.rst
-+++ b/doc/design-query2.rst
-@@ -129,16 +129,16 @@
-   specific names, the filter must be specified as follows, with the
-   inner part repeated for each name::
- 
--    ["|", ["=", "name", "node1"], ["=", "name", "node2"], …]
-+    ["|", ["=", "name", "node1"], ["=", "name", "node2"], ...]
- 
--  Filters consist of S-expressions (``["operator", <operants…>]``) and
-+  Filters consist of S-expressions (``["operator", <operants...>]``) and
-   extensions will be made in the future to allow for more operators and
-   fields. Such extensions might include a Python-style "in" operator,
-   but for simplicity only "=" is supported in this implementation.
- 
-   To reiterate: Filters for this implementation must consist of exactly
--  one OR expression (``["|", …]``) and one or more name equality filters
--  (``["=", "name", "…"]``).
-+  one OR expression (``["|", ...]``) and one or more name equality filters
-+  (``["=", "name", "..."]``).
- 
- Support for synchronous queries, currently available in the interface
- but disabled in the master daemon, will be dropped. Direct calls to

diff --git a/app-emulation/ganeti/files/ganeti-2.10-rundir.patch b/app-emulation/ganeti/files/ganeti-2.10-rundir.patch
deleted file mode 100644
index a723f2b63d85..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.10-rundir.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-diff --git a/Makefile.am b/Makefile.am
-index df62fdf..b034d32 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1865,7 +1865,7 @@ $(SHELL_ENV_INIT): Makefile stamp-directories
- 	  echo; \
- 	  echo 'readonly PKGLIBDIR=$(libdir)/ganeti'; \
- 	  echo 'readonly LOG_DIR="$$LOCALSTATEDIR/log/ganeti"'; \
--	  echo 'readonly RUN_DIR="$$LOCALSTATEDIR/run/ganeti"'; \
-+	  echo 'readonly RUN_DIR="/run/ganeti"'; \
- 	  echo 'readonly DATA_DIR="$$LOCALSTATEDIR/lib/ganeti"'; \
- 	  echo 'readonly CONF_DIR="$$SYSCONFDIR/ganeti"'; \
- 	} > $@
-@@ -2208,7 +2208,7 @@ dist-release: dist
- install-exec-local:
- 	@mkdir_p@ "$(DESTDIR)${localstatedir}/lib/ganeti" \
- 	  "$(DESTDIR)${localstatedir}/log/ganeti" \
--	  "$(DESTDIR)${localstatedir}/run/ganeti"
-+	  "$(DESTDIR)/run/ganeti"
- 	for dir in $(SYMLINK_TARGET_DIRS); do \
- 	  @mkdir_p@  $(DESTDIR)$$dir; \
- 	done
-diff --git a/lib/pathutils.py b/lib/pathutils.py
-index f075e22..38b02e9 100644
---- a/lib/pathutils.py
-+++ b/lib/pathutils.py
-@@ -62,7 +62,7 @@ ETC_HOSTS = vcluster.ETC_HOSTS
- DATA_DIR = LOCALSTATEDIR + "/lib/ganeti"
- LOCK_DIR = LOCALSTATEDIR + "/lock"
- LOG_DIR = LOCALSTATEDIR + "/log/ganeti"
--RUN_DIR = LOCALSTATEDIR + "/run/ganeti"
-+RUN_DIR = "/run/ganeti"
- 
- #: Script to configure master IP address
- DEFAULT_MASTER_SETUP_SCRIPT = TOOLSDIR + "/master-ip-setup"

diff --git a/app-emulation/ganeti/files/ganeti-2.11-add-pgrep.patch b/app-emulation/ganeti/files/ganeti-2.11-add-pgrep.patch
deleted file mode 100644
index b0a8bd99cc0a..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.11-add-pgrep.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff --git a/daemons/daemon-util.in b/daemons/daemon-util.in
-index 656dc95..01f2cbb 100644
---- a/daemons/daemon-util.in
-+++ b/daemons/daemon-util.in
-@@ -246,12 +246,14 @@ start() {
-   @PKGLIBDIR@/ensure-dirs
- 
-   if type -p start-stop-daemon >/dev/null; then
--    start-stop-daemon --start --quiet \
--      --pidfile $pidfile \
--      --exec $daemonexec \
--      --user $usergroup \
--      --wait 300 \
--      -- $args "$@"
-+    if ! ret=$(/usr/bin/pgrep $name) ; then
-+      start-stop-daemon --start --quiet \
-+        --pidfile $pidfile \
-+        --exec $daemonexec \
-+        --user $usergroup \
-+        --wait 300 \
-+        -- $args "$@"
-+    fi
-   else
-     # TODO: Find a way to start daemon with a group, until then the group must
-     # be removed

diff --git a/app-emulation/ganeti/files/ganeti-2.11-daemon-util-tests.patch b/app-emulation/ganeti/files/ganeti-2.11-daemon-util-tests.patch
deleted file mode 100644
index b60a85057761..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.11-daemon-util-tests.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-diff --git a/test/py/daemon-util_unittest.bash b/test/py/daemon-util_unittest.bash
-index faacaed..002bfb4 100755
---- a/test/py/daemon-util_unittest.bash
-+++ b/test/py/daemon-util_unittest.bash
-@@ -72,21 +72,21 @@ done
- $daemon_util check-exitcode 11 >/dev/null 2>&1 ||
-   err "check-exitcode 11 (not master) didn't return 0"
- 
--tmp=$(echo $($daemon_util list-start-daemons))
--test "$tmp" == "$DAEMONS" ||
--  err "list-start-daemons didn't return correct list of daemons"
-+#tmp=$(echo $($daemon_util list-start-daemons))
-+#test "$tmp" == "$DAEMONS" ||
-+#  err "list-start-daemons didn't return correct list of daemons"
- 
--tmp=$(echo $($daemon_util list-stop-daemons))
--test "$tmp" == "$STOPDAEMONS" ||
--  err "list-stop-daemons didn't return correct list of daemons"
-+#tmp=$(echo $($daemon_util list-stop-daemons))
-+#test "$tmp" == "$STOPDAEMONS" ||
-+#  err "list-stop-daemons didn't return correct list of daemons"
- 
--$daemon_util is-daemon-name >/dev/null 2>&1 &&
--  err "is-daemon-name didn't require daemon name"
-+#$daemon_util is-daemon-name >/dev/null 2>&1 &&
-+#  err "is-daemon-name didn't require daemon name"
- 
--for i in '' '.' '..' '-' 'not-a-daemon'; do
--  $daemon_util is-daemon-name "$i" >/dev/null 2>&1 &&
--    err "is-daemon-name thinks '$i' is a daemon name"
--done
-+#for i in '' '.' '..' '-' 'not-a-daemon'; do
-+#  $daemon_util is-daemon-name "$i" >/dev/null 2>&1 &&
-+#    err "is-daemon-name thinks '$i' is a daemon name"
-+#done
- 
- for i in $DAEMONS; do
-   $daemon_util is-daemon-name $i >/dev/null 2>&1 ||

diff --git a/app-emulation/ganeti/files/ganeti-2.11-dont-nest-libdir.patch b/app-emulation/ganeti/files/ganeti-2.11-dont-nest-libdir.patch
deleted file mode 100644
index 134b9d7bcac2..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.11-dont-nest-libdir.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-diff --git a/Makefile.am b/Makefile.am
-index 66ad714..5bd2e9c 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -67,7 +67,7 @@ defaultversionedsharedir = $(prefix)/share/ganeti/default
- 
- # Note: these are automake-specific variables, and must be named after
- # the directory + 'dir' suffix
--pkglibdir = $(versiondir)$(libdir)/ganeti
-+pkglibdir = $(versiondir)/ganeti
- myexeclibdir = $(pkglibdir)
- bindir = $(versiondir)/$(BINDIR)
- sbindir = $(versiondir)$(SBINDIR)
-@@ -1025,7 +1025,7 @@ bin_SCRIPTS = $(HS_BIN_PROGS)
- install-exec-hook:
- 	@mkdir_p@ $(DESTDIR)$(iallocatorsdir)
- # FIXME: this is a hardcoded logic, instead of auto-resolving
--	$(LN_S) -f ../../../bin/htools \
-+	$(LN_S) -f ../../usr/bin/htools \
- 	  $(DESTDIR)$(iallocatorsdir)/hail
- 	for role in $(HS_BIN_ROLES); do \
- 	  $(LN_S) -f htools $(DESTDIR)$(bindir)/$$role ; \
-@@ -2297,7 +2297,7 @@ install-exec-local:
- 	for prog in $(HS_BIN_ROLES); do \
- 	  $(LN_S) -f $(defaultversiondir)$(BINDIR)/$$prog $(DESTDIR)$(BINDIR)/$$prog; \
- 	done
--	$(LN_S) -f $(defaultversiondir)$(libdir)/ganeti/iallocators/hail $(DESTDIR)$(libdir)/ganeti/iallocators/hail
-+	$(LN_S) -f $(defaultversiondir)/ganeti/iallocators/hail $(DESTDIR)$(libdir)/ganeti/iallocators/hail
- 	for prog in $(all_sbin_scripts); do \
- 	  $(LN_S) -f $(defaultversiondir)$(SBINDIR)/$$prog $(DESTDIR)$(SBINDIR)/$$prog; \
- 	done
-@@ -2311,7 +2311,7 @@ install-exec-local:
- 	  $(LN_S) -f $(defaultversionedsharedir)/$$prog $(DESTDIR)$(libdir)/ganeti/tools/$$prog; \
- 	done
- 	for prog in $(tools_basenames); do \
--	  $(LN_S) -f $(defaultversiondir)/$(libdir)/ganeti/tools/$$prog $(DESTDIR)$(libdir)/ganeti/tools/$$prog; \
-+	  $(LN_S) -f $(defaultversiondir)/ganeti/tools/$$prog $(DESTDIR)$(libdir)/ganeti/tools/$$prog; \
- 	done
- 	if ! test -n '$(ENABLE_MANPAGES)'; then \
- 	  for man in $(manfullpath); do \
-@@ -2319,7 +2319,7 @@ install-exec-local:
- 	  done; \
- 	fi
- 	for prog in $(myexeclib_scripts_basenames); do \
--	  $(LN_S) -f $(defaultversiondir)$(libdir)/ganeti/$$prog $(DESTDIR)$(libdir)/ganeti/$$prog; \
-+	  $(LN_S) -f $(defaultversiondir)/ganeti/$$prog $(DESTDIR)$(libdir)/ganeti/$$prog; \
- 	done
- if INSTALL_SYMLINKS
- 	$(LN_S) -f $(versionedsharedir) $(DESTDIR)$(sysconfdir)/ganeti/share

diff --git a/app-emulation/ganeti/files/ganeti-2.11-dont-print-man-help.patch b/app-emulation/ganeti/files/ganeti-2.11-dont-print-man-help.patch
deleted file mode 100644
index 42b90deb6596..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.11-dont-print-man-help.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/configure.ac b/configure.ac
-index dcb8aa0..7d7ab76 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -796,7 +796,7 @@ fi
- 
- AC_SUBST(SOCAT_USE_COMPRESS)
- 
--if man --help | grep -q -e --warnings
-+if man --help |& grep -q -e --warnings
- then
-   MAN_HAS_WARNINGS=1
- else

diff --git a/app-emulation/ganeti/files/ganeti-2.11-tests.patch b/app-emulation/ganeti/files/ganeti-2.11-tests.patch
deleted file mode 100644
index fd0a9f606718..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.11-tests.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/test/py/ganeti-cleaner_unittest.bash b/test/py/ganeti-cleaner_unittest.bash
-index bf57b76..ee3b90d 100755
---- a/test/py/ganeti-cleaner_unittest.bash
-+++ b/test/py/ganeti-cleaner_unittest.bash
-@@ -219,7 +219,7 @@ count_and_check_certs 10
- run_cleaner master
- count_and_check_certs 10
- run_cleaner node
--count_and_check_certs 5
-+count_and_check_certs 10
- 
- check_logfiles $maxlog node
- check_logfiles $maxlog master

diff --git a/app-emulation/ganeti/files/ganeti-2.12-qemu-enable-kvm.patch b/app-emulation/ganeti/files/ganeti-2.12-qemu-enable-kvm.patch
deleted file mode 100644
index b199ff09367c..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.12-qemu-enable-kvm.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/lib/hypervisor/hv_kvm/__init__.py b/lib/hypervisor/hv_kvm/__init__.py
-index d0c42c4..e6d3bcf 100644
---- a/lib/hypervisor/hv_kvm/__init__.py
-+++ b/lib/hypervisor/hv_kvm/__init__.py
-@@ -1061,6 +1061,7 @@ class KVMHypervisor(hv_base.BaseHypervisor):
-     pidfile = self._InstancePidFile(instance.name)
-     kvm = hvp[constants.HV_KVM_PATH]
-     kvm_cmd = [kvm]
-+    kvm_cmd.extend(["-enable-kvm"])
-     # used just by the vnc server, if enabled
-     kvm_cmd.extend(["-name", instance.name])
-     kvm_cmd.extend(["-m", instance.beparams[constants.BE_MAXMEM]])

diff --git a/app-emulation/ganeti/files/ganeti-2.12-start-stop-daemon-args.patch b/app-emulation/ganeti/files/ganeti-2.12-start-stop-daemon-args.patch
deleted file mode 100644
index 463ff26095a2..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.12-start-stop-daemon-args.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-diff --git a/daemons/daemon-util.in b/daemons/daemon-util.in
-index 6a47253..11eb9d1 100644
---- a/daemons/daemon-util.in
-+++ b/daemons/daemon-util.in
-@@ -294,10 +294,11 @@ start() {
-   @PKGLIBDIR@/ensure-dirs
- 
-   if type -p start-stop-daemon >/dev/null; then
--    start-stop-daemon --start --quiet --oknodo \
-+    start-stop-daemon --start --quiet \
-       --pidfile $pidfile \
--      --startas $daemonexec \
--      --chuid $usergroup \
-+      --exec $daemonexec \
-+      --user $usergroup \
-+      --wait 300 \
-       -- $args "$@"
-   else
-     # TODO: Find a way to start daemon with a group, until then the group must
-@@ -323,7 +324,7 @@ stop() {
-   if use_systemctl; then
-     systemctl stop "${name}.service"
-   elif type -p start-stop-daemon >/dev/null; then
--    start-stop-daemon --stop --quiet --oknodo --retry 30 \
-+    start-stop-daemon --stop --quiet --retry 30 \
-       --pidfile $pidfile
-   else
-     _ignore_error killproc -p $pidfile $name
-@@ -409,8 +410,8 @@ rotate_logs() {
-   local daemonexec=$(_daemon_executable $name)
- 
-   if type -p start-stop-daemon >/dev/null; then
--    start-stop-daemon --stop --signal HUP --quiet \
--      --oknodo --pidfile $pidfile
-+    start-stop-daemon --signal HUP --quiet \
-+      --pidfile $pidfile
-   else
-     _ignore_error killproc \
-       -p $pidfile \

diff --git a/app-emulation/ganeti/files/ganeti-2.13-process_unittest.patch b/app-emulation/ganeti/files/ganeti-2.13-process_unittest.patch
deleted file mode 100644
index 4001ac5aa4de..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.13-process_unittest.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff --git a/test/py/ganeti.utils.process_unittest.py b/test/py/ganeti.utils.process_unittest.py
-index 2cfb841..a5876a5 100755
---- a/test/py/ganeti.utils.process_unittest.py
-+++ b/test/py/ganeti.utils.process_unittest.py
-@@ -284,7 +284,7 @@ class TestRunCmd(testutils.GanetiTestCase):
-     result = utils.RunCmd(["/bin/sh", "-c", cmd], timeout=0.2,
-                           noclose_fds=[self.proc_ready_helper.write_fd],
-                           postfork_fn=self.proc_ready_helper.Ready)
--    self.assertEqual(result.exit_code, 0)
-+    self.assertEqual(result.exit_code, None)
- 
-   def testTimeoutKill(self):
-     cmd = ["/bin/sh", "-c", "trap '' TERM; echo >&%d; read < %s" %
-@@ -306,7 +306,6 @@ class TestRunCmd(testutils.GanetiTestCase):
-                           noclose_fds=[self.proc_ready_helper.write_fd],
-                           postfork_fn=self.proc_ready_helper.Ready)
-     self.assert_(result.failed)
--    self.assertEqual(result.stdout, "sigtermed\n")
- 
-   def testListRun(self):
-     """Test list runs"""

diff --git a/app-emulation/ganeti/files/ganeti-2.15-daemon-util.patch b/app-emulation/ganeti/files/ganeti-2.15-daemon-util.patch
deleted file mode 100644
index 25233c37a455..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.15-daemon-util.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-diff --git a/daemons/daemon-util.in b/daemons/daemon-util.in
-index 7636fc9..9c681ab 100644
---- a/daemons/daemon-util.in
-+++ b/daemons/daemon-util.in
-@@ -31,25 +31,26 @@ set -e
- 
- @SHELL_ENV_INIT@
- 
--readonly defaults_file="$SYSCONFDIR/default/ganeti"
--
--# This is a list of all daemons and the order in which they're started. The
--# order is important as there are dependencies between them. On shutdown,
--# they're stopped in reverse order.
--DAEMONS=(
--  ganeti-noded
--  ganeti-confd
--  ganeti-wconfd
--  ganeti-rapi
--  ganeti-luxid
--  ganeti-kvmd
--  )
-+readonly defaults_file="$SYSCONFDIR/conf.d/ganeti"
- 
- # This is the list of daemons that are loaded on demand; they should only be
- # stopped, not started.
- ON_DEMAND_DAEMONS=(
-   ganeti-metad
-   )
-+DAEMONS=( ganeti-noded ganeti-confd )
-+
-+_is_master() {
-+        [ -z "${GANETI_MASTER}" ] && GANETI_MASTER="$(gnt-cluster getmaster)"
-+        [ -z "${LOCAL_HOSTNAME}" ] && LOCAL_HOSTNAME="$(hostname -f)"
-+        [ "${GANETI_MASTER}" = "${LOCAL_HOSTNAME}" ]
-+}
-+
-+if _is_master; then
-+  DAEMONS+=( ganeti-wconfd ganeti-rapi ganeti-luxid )
-+fi
-+
-+DAEMONS+=( ganeti-kvmd )
- 
- _mond_enabled() {
-   [[ "@CUSTOM_ENABLE_MOND@" == True ]]
-@@ -246,7 +247,7 @@ check() {
-       return 1
-     fi
-   elif type -p start-stop-daemon >/dev/null; then
--    start-stop-daemon --stop --signal 0 --quiet \
-+    start-stop-daemon --signal 0 --quiet \
-       --pidfile $pidfile
-   else
-     _ignore_error status \

diff --git a/app-emulation/ganeti/files/ganeti-2.15-disable-docs.patch b/app-emulation/ganeti/files/ganeti-2.15-disable-docs.patch
deleted file mode 100644
index adc2813d6a30..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.15-disable-docs.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- a/Makefile.am	2020-08-04 18:21:12.395282115 +0000
-+++ b/Makefile.am       2020-08-04 18:21:48.636729501 +0000
-@@ -1160,41 +1160,6 @@
- # has to exist in order for the sphinx module to be loaded
- # successfully, but we certainly don't want the docs to be rebuilt if
- # it changes
--doc/html/index.html doc/man-html/index.html: $(docinput) doc/conf.py \
--	configure.ac $(RUN_IN_TEMPDIR) lib/build/sphinx_ext.py \
--	lib/build/shell_example_lexer.py lib/ht.py \
--	doc/css/style.css lib/rapi/connector.py lib/rapi/rlib2.py \
--	autotools/sphinx-wrapper | $(built_python_sources)
--	@test -n "$(SPHINX)" || \
--	    { echo 'sphinx-build' not found during configure; exit 1; }
--if !MANPAGES_IN_DOC
--	if test -n '$(ENABLE_MANPAGES)'; then \
--	  echo 'Man pages in documentation were disabled at configure time' >&2; \
--	  exit 1; \
--	fi
--endif
--## Sphinx provides little control over what content should be included. Some
--## mechanisms exist, but they all have drawbacks or actual issues. Since we
--## build two different versions of the documentation--once without man pages and
--## once, if enabled, with them--some control is necessary. xmpp-wrapper provides
--## us with this, but requires running in a temporary directory. It moves the
--## correct files into place depending on environment variables.
--	dir=$(dir $@) && \
--	@mkdir_p@ $$dir && \
--	PYTHONPATH=. ENABLE_MANPAGES=$(ENABLE_MANPAGES) COPY_DOC=1 \
--        HTML_THEME=$(SPHINX_HTML_THEME) \
--	$(RUN_IN_TEMPDIR) autotools/sphinx-wrapper $(SPHINX) -q -W -b html \
--	    -d . \
--	    -D version="$(VERSION_MAJOR).$(VERSION_MINOR)" \
--	    -D release="$(PACKAGE_VERSION)" \
--	    -D graphviz_dot="$(DOT)" \
--	    doc $(CURDIR)/$$dir && \
--	rm -f $$dir/.buildinfo $$dir/objects.inv
--	touch $@
--
--doc/html: doc/html/index.html
--
--doc/man-html: doc/man-html/index.html
- 
- doc/install-quick.rst: INSTALL
- doc/news.rst: NEWS

diff --git a/app-emulation/ganeti/files/ganeti-2.15-dont-invert-return-values-for-man-warnings.patch b/app-emulation/ganeti/files/ganeti-2.15-dont-invert-return-values-for-man-warnings.patch
deleted file mode 100644
index 37a687530873..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.15-dont-invert-return-values-for-man-warnings.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/autotools/check-man-warnings	2015-12-03 19:50:34.000000000 +0000
-+++ b/autotools/check-man-warnings	2016-05-22 11:19:31.678635696 +0000
-@@ -35,6 +35,6 @@
- 	loc="en_US.UTF-8"
- fi
- 
--! LANG="$loc" LC_ALL="$loc" MANWIDTH=80 \
-+LANG="$loc" LC_ALL="$loc" MANWIDTH=80 \
-   man --warnings --encoding=utf8 --local-file "$1" 2>&1 >/dev/null | \
-   grep -v -e "cannot adjust line" -e "can't break line" | \

diff --git a/app-emulation/ganeti/files/ganeti-2.15-kvmd-run-as-daemon-user.patch b/app-emulation/ganeti/files/ganeti-2.15-kvmd-run-as-daemon-user.patch
deleted file mode 100644
index ce347ceaad84..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.15-kvmd-run-as-daemon-user.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff --git a/Makefile.am b/Makefile.am
-index 8910b08..1bbe5fd 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -2452,12 +2452,14 @@ $(REPLACE_VARS_SED): $(SHELL_ENV_INIT) Makefile stamp-directories
- 	  echo 's#@''PKGLIBDIR@#$(libdir)/ganeti#g'; \
- 	  echo 's#@''GNTMASTERUSER@#$(MASTERD_USER)#g'; \
- 	  echo 's#@''GNTRAPIUSER@#$(RAPI_USER)#g'; \
-+	  echo 's#@''GNTKVMDUSER@#$(KVMD_USER)#g'; \
- 	  echo 's#@''GNTCONFDUSER@#$(CONFD_USER)#g'; \
- 	  echo 's#@''GNTWCONFDUSER@#$(WCONFD_USER)#g'; \
- 	  echo 's#@''GNTLUXIDUSER@#$(LUXID_USER)#g'; \
- 	  echo 's#@''GNTNODEDUSER@#$(NODED_USER)#g'; \
- 	  echo 's#@''GNTMONDUSER@#$(MOND_USER)#g'; \
- 	  echo 's#@''GNTRAPIGROUP@#$(RAPI_GROUP)#g'; \
-+	  echo 's#@''GNTKVMDGROUP@#$(KVMD_GROUP)#g'; \
- 	  echo 's#@''GNTADMINGROUP@#$(ADMIN_GROUP)#g'; \
- 	  echo 's#@''GNTCONFDGROUP@#$(CONFD_GROUP)#g'; \
- 	  echo 's#@''GNTNODEDGROUP@#$(NODED_GROUP)#g'; \
-diff --git a/daemons/daemon-util.in b/daemons/daemon-util.in
-index 7636fc9..91ea20b 100644
---- a/daemons/daemon-util.in
-+++ b/daemons/daemon-util.in
-@@ -102,6 +102,9 @@ _daemon_usergroup() {
-     rapi)
-       echo "@GNTRAPIUSER@:@GNTRAPIGROUP@"
-       ;;
-+    kvmd)
-+      echo "@GNTKVMDUSER@:@GNTKVMDGROUP@"
-+	;;
-     noded)
-       echo "@GNTNODEDUSER@:@GNTNODEDGROUP@"
-       ;;

diff --git a/app-emulation/ganeti/files/ganeti-2.15-noded-must-run-as-root.patch b/app-emulation/ganeti/files/ganeti-2.15-noded-must-run-as-root.patch
deleted file mode 100644
index 22413e3e2ea5..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.15-noded-must-run-as-root.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-diff --git a/configure.ac b/configure.ac
-index 9b5d06f..d099bd2 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -343,8 +343,8 @@ AC_ARG_WITH([user-prefix],
-    user_wconfd="${withval}masterd";
-    user_kvmd="$user_default";
-    user_luxid="${withval}masterd";
--   user_noded="$user_default";
--   user_mond="$user_default"],
-+   user_noded="root";
-+   user_mond="root"],
-   [user_masterd="$user_default";
-    user_metad="$user_default";
-    user_rapi="$user_default";
-@@ -352,8 +352,8 @@ AC_ARG_WITH([user-prefix],
-    user_wconfd="$user_default";
-    user_kvmd="$user_default";
-    user_luxid="$user_default";
--   user_noded="$user_default";
--   user_mond="$user_default"])
-+   user_noded="root";
-+   user_mond="root"])
- AC_SUBST(MASTERD_USER, $user_masterd)
- AC_SUBST(METAD_USER, $user_metad)
- AC_SUBST(RAPI_USER, $user_rapi)
-@@ -379,9 +379,9 @@ AC_ARG_WITH([group-prefix],
-    group_luxid="${withval}luxid";
-    group_masterd="${withval}masterd";
-    group_metad="$group_default";
--   group_noded="$group_default";
-+   group_noded="root";
-    group_daemons="${withval}daemons";
--   group_mond="$group_default"],
-+   group_mond="root"],
-   [group_rapi="$group_default";
-    group_admin="$group_default";
-    group_confd="$group_default";
-@@ -390,9 +390,9 @@ AC_ARG_WITH([group-prefix],
-    group_luxid="$group_default";
-    group_masterd="$group_default";
-    group_metad="$group_default";
--   group_noded="$group_default";
-+   group_noded="root";
-    group_daemons="$group_default";
--   group_mond="$group_default"])
-+   group_mond="root"])
- AC_SUBST(RAPI_GROUP, $group_rapi)
- AC_SUBST(ADMIN_GROUP, $group_admin)
- AC_SUBST(CONFD_GROUP, $group_confd)

diff --git a/app-emulation/ganeti/files/ganeti-2.15-python-mock.patch b/app-emulation/ganeti/files/ganeti-2.15-python-mock.patch
deleted file mode 100644
index e51525b89cd7..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.15-python-mock.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff --git a/test/py/cmdlib/test_unittest.py b/test/py/cmdlib/test_unittest.py
-index f93f99d..2d0d083 100644
---- a/test/py/cmdlib/test_unittest.py
-+++ b/test/py/cmdlib/test_unittest.py
-@@ -85,7 +85,7 @@ class TestLUTestDelay(CmdlibTestCase):
- 
-     self.ExecOpCode(op)
- 
--    self.rpc.call_test_delay.assert_called_once()
-+    assert self.rpc.call_test_delay.called
- 
-   def testFailingRpc(self):
-     op = opcodes.OpTestDelay(duration=DELAY_DURATION,
-diff --git a/test/py/testutils/__init__.py b/test/py/testutils/__init__.py
-index 27ca425..04ea0ee 100644
---- a/test/py/testutils/__init__.py
-+++ b/test/py/testutils/__init__.py
-@@ -242,7 +242,7 @@ def patch_object(*args, **kwargs):
-   This function unifies the different variations.
- 
-   """
--  import mock
-+  from mock import mock
-   try:
-     # pylint: disable=W0212
-     return mock._patch_object(*args, **kwargs)

diff --git a/app-emulation/ganeti/files/ganeti-2.15-respect-HFLAGS.patch b/app-emulation/ganeti/files/ganeti-2.15-respect-HFLAGS.patch
deleted file mode 100644
index ffab1838bf1c..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.15-respect-HFLAGS.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/Makefile.am b/Makefile.am
-index a04b95ae3..e26508ad9 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -803,6 +803,7 @@ HFLAGS = \
- 	-fwarn-tabs \
- 	-optP-include -optP$(HASKELL_PACKAGE_VERSIONS_FILE) \
- 	-hide-all-packages \
-+	$(HCFLAGS) \
- 	`cat $(HASKELL_PACKAGE_IDS_FILE)` \
- 	$(GHC_BYVERSION_FLAGS)
- if DEVELOPER_MODE

diff --git a/app-emulation/ganeti/files/ganeti-2.15-use-balloon-device.patch b/app-emulation/ganeti/files/ganeti-2.15-use-balloon-device.patch
deleted file mode 100644
index ae57a213fc00..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.15-use-balloon-device.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/lib/hypervisor/hv_kvm/__init__.py b/lib/hypervisor/hv_kvm/__init__.py
-index 174621fcc..1f598e7ef 100644
---- a/lib/hypervisor/hv_kvm/__init__.py
-+++ b/lib/hypervisor/hv_kvm/__init__.py
-@@ -1094,7 +1094,7 @@ class KVMHypervisor(hv_base.BaseHypervisor):
-     # Add id to ballon and place to the first available slot (3 or 4)
-     addr = utils.GetFreeSlot(pci_reservations, reserve=True)
-     pci_info = ",bus=pci.0,addr=%s" % hex(addr)
--    kvm_cmd.extend(["-balloon", "virtio,id=balloon%s" % pci_info])
-+    kvm_cmd.extend(["-device", "virtio-balloon,id=balloon%s" % pci_info])
-     kvm_cmd.extend(["-daemonize"])
-     if not instance.hvparams[constants.HV_ACPI]:
-       kvm_cmd.extend(["-no-acpi"])

diff --git a/app-emulation/ganeti/files/ganeti-2.15.2-bdev_py.patch b/app-emulation/ganeti/files/ganeti-2.15.2-bdev_py.patch
deleted file mode 100644
index a1fea1665804..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.15.2-bdev_py.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- a/lib/storage/bdev.py       2018-09-06 19:20:03.970318746 +0000
-+++ b/lib/storage/bdev.py       2018-09-06 19:18:59.799346241 +0000
-@@ -413,6 +413,16 @@
-     if not self.minor and not self.Attach():
-       # the LV does not exist
-       return
-+
-+    import glob
-+
-+    for partdev in glob.glob("/dev/mapper/%s-%sp*" % (self._vg_name, self._lv_name.replace("-", "--"))):
-+        result = utils.RunCmd(["dmsetup", "remove", partdev])
-+
-+        if result.failed:
-+          base.ThrowError("Can't dmsetup remove %s: %s-%s",
-+                          partdev, result.fail_reason, result.output)
-+

diff --git a/app-emulation/ganeti/files/ganeti-2.15.2-check-man-warnings.patch b/app-emulation/ganeti/files/ganeti-2.15.2-check-man-warnings.patch
deleted file mode 100644
index 913033dde4b4..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.15.2-check-man-warnings.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-# https://bugs.gentoo.org/719846
-# Redirecting both stdout and stderr to /dev/null leaves nothing for grep to search
-# Given that there aren't any warnings in the manpages, no need to filter, either
---- a/autotools/check-man-warnings	2020-04-30 23:10:08.140721582 +0000
-+++ b/autotools/check-man-warnings	2020-04-30 23:21:06.708945592 +0000
-@@ -37,6 +37,4 @@
- fi
- 
- LANG="$loc" LC_ALL="$loc" MANWIDTH=80 \
--  man --warnings --encoding=utf8 --local-file "$1" 2>&1 >/dev/null | \
--  grep -v -e "cannot adjust line" -e "can't break line" | \
--  grep .
-+  man --warnings --encoding=utf8 --local-file "$1" >/dev/null

diff --git a/app-emulation/ganeti/files/ganeti-2.15.2-ftbfs-sphinx-warning.patch b/app-emulation/ganeti/files/ganeti-2.15.2-ftbfs-sphinx-warning.patch
deleted file mode 100644
index 3da34eed165f..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.15.2-ftbfs-sphinx-warning.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-# https://bugs.gentoo.org/719846
-# Probably related to https://github.com/sphinx-doc/sphinx/issues/4225
-#
-# Warning, treated as error:
-# /var/tmp/portage/app-emulation/ganeti-2.15.2-r9/temp/gntbuild.tiR1shJ6/doc/design-impexp2.rst:512:Could not lex literal_block as "python". Highlighting skipped.
-
---- a/doc/design-impexp2.rst	2020-04-30 23:40:50.121698365 +0000
-+++ b/doc/design-impexp2.rst	2020-04-30 23:41:05.692129339 +0000
-@@ -507,32 +507,6 @@
- respective system (measured for the CGI/FastCGI program using ``time
- -v``).
- 
--::
--
--  ----------------------------------------------------------------------
--  Block size                      4 KB    64 KB   128 KB    1 MB    4 MB
--  ======================================================================
--  Plain CGI script reading          83      174      180     122     120
--  from ``/dev/zero``
--                               0.6/3.9  0.1/2.4  0.1/2.2 0.0/1.9 0.0/2.1
--  ----------------------------------------------------------------------
--  FastCGI with ``fcgiwrap``,        86      167      170     177     174
--  ``dd`` reading from
--  ``/dev/zero``                  1.1/5  0.5/2.9  0.5/2.7 0.7/3.1 0.7/2.8
--  ----------------------------------------------------------------------
--  FastCGI with ``fcgiwrap``,        68      146      150     170     170
--  Python script copying from
--  ``/dev/zero`` to stdout
--                               1.3/5.1  0.8/3.7  0.7/3.3  0.9/2.9  0.8/3
--  ----------------------------------------------------------------------
--  FastCGI, Python script using      31       48       47       5       1
--  ``flup`` library (version
--  1.0.2) reading from
--  ``/dev/zero``
--                              23.5/9.8 14.3/8.5   16.1/8       -       -
--  ----------------------------------------------------------------------
--
--
- It should be mentioned that the ``flup`` library is not implemented in
- the most efficient way, but even with some changes it doesn't get much
- faster. It is fine for small amounts of data, but not for huge

diff --git a/app-emulation/ganeti/files/ganeti-2.15.2-pyopenssl.patch b/app-emulation/ganeti/files/ganeti-2.15.2-pyopenssl.patch
deleted file mode 100644
index 882c4f19acbe..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.15.2-pyopenssl.patch
+++ /dev/null
@@ -1,33 +0,0 @@
---- a/lib/http/__init__.py
-+++ b/lib/http/__init__.py
-@@ -88,6 +88,12 @@
- # send/receive quantum
- SOCK_BUF_SIZE = 32768
- 
-+# OpenSSL.SSL.ConnectionType was deprecated in pyopenssl-19.1.0:
-+try:
-+    ssl_conn_type = OpenSSL.SSL.Connection
-+except AttributeError:
-+    ssl_conn_type = OpenSSL.SSL.ConnectionType
-+
- 
- class HttpError(Exception):
-   """Internal exception for HTTP errors.
-@@ -377,7 +383,7 @@
- 
-   # Handshake is only supported by SSL sockets
-   if (op == SOCKOP_HANDSHAKE and
--      not isinstance(sock, OpenSSL.SSL.ConnectionType)):
-+      not isinstance(sock, ssl_conn_type)):
-     return
- 
-   # No override by default
-@@ -414,7 +420,7 @@
-           return sock.recv(arg1)
- 
-         elif op == SOCKOP_SHUTDOWN:
--          if isinstance(sock, OpenSSL.SSL.ConnectionType):
-+          if isinstance(sock, ssl_conn_type):
-             # PyOpenSSL's shutdown() doesn't take arguments
-             return sock.shutdown()
-           else:

diff --git a/app-emulation/ganeti/files/ganeti-2.15.2-remove-sandbox-failing-tests.patch b/app-emulation/ganeti/files/ganeti-2.15.2-remove-sandbox-failing-tests.patch
deleted file mode 100644
index bc79bbbcad29..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.15.2-remove-sandbox-failing-tests.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff --git a/test/py/ganeti.hooks_unittest.py b/test/py/ganeti.hooks_unittest.py
-index 19d41bb..3382c7f 100755
---- a/test/py/ganeti.hooks_unittest.py
-+++ b/test/py/ganeti.hooks_unittest.py
-@@ -193,17 +193,17 @@ class TestHooksRunner(unittest.TestCase):
-       expect.sort()
-       self.failUnlessEqual(self.hr.RunHooks(self.hpath, phase, {}), expect)
- 
--  def testEnv(self):
--    """Test environment execution"""
--    for phase in (constants.HOOKS_PHASE_PRE, constants.HOOKS_PHASE_POST):
--      fbase = "success"
--      fname = "%s/%s" % (self.ph_dirs[phase], fbase)
--      os.symlink("/usr/bin/env", fname)
--      self.torm.append((fname, False))
--      env_snt = {"PHASE": phase}
--      env_exp = "PHASE=%s" % phase
--      self.failUnlessEqual(self.hr.RunHooks(self.hpath, phase, env_snt),
--                           [(self._rname(fname), HKR_SUCCESS, env_exp)])
-+  #def testEnv(self):
-+  #  """Test environment execution"""
-+  #  for phase in (constants.HOOKS_PHASE_PRE, constants.HOOKS_PHASE_POST):
-+  #    fbase = "success"
-+  #    fname = "%s/%s" % (self.ph_dirs[phase], fbase)
-+  #    os.symlink("/usr/bin/env", fname)
-+  #    self.torm.append((fname, False))
-+  #    env_snt = {"PHASE": phase}
-+  #    env_exp = "PHASE=%s" % phase
-+  #    self.failUnlessEqual(self.hr.RunHooks(self.hpath, phase, env_snt),
-+  #                         [(self._rname(fname), HKR_SUCCESS, env_exp)])
- 
- 
- def FakeHooksRpcSuccess(node_list, hpath, phase, env):
-diff --git a/test/py/ganeti.utils.process_unittest.py b/test/py/ganeti.utils.process_unittest.py
-index 82fc81e..4a59aa4 100755
---- a/test/py/ganeti.utils.process_unittest.py
-+++ b/test/py/ganeti.utils.process_unittest.py
-@@ -358,13 +358,13 @@ class TestRunCmd(testutils.GanetiTestCase):
-     cwd = os.getcwd()
-     self.failUnlessEqual(utils.RunCmd(["pwd"], cwd=cwd).stdout.strip(), cwd)
- 
--  def testResetEnv(self):
--    """Test environment reset functionality"""
--    self.failUnlessEqual(utils.RunCmd(["env"], reset_env=True).stdout.strip(),
--                         "")
--    self.failUnlessEqual(utils.RunCmd(["env"], reset_env=True,
--                                      env={"FOO": "bar",}).stdout.strip(),
--                         "FOO=bar")
-+  #def testResetEnv(self):
-+  #  """Test environment reset functionality"""
-+  #  self.failUnlessEqual(utils.RunCmd(["env"], reset_env=True).stdout.strip(),
-+  #                       "")
-+  #  self.failUnlessEqual(utils.RunCmd(["env"], reset_env=True,
-+  #                                    env={"FOO": "bar",}).stdout.strip(),
-+  #                       "FOO=bar")
- 
-   def testNoFork(self):
-     """Test that nofork raise an error"""

diff --git a/app-emulation/ganeti/files/ganeti-2.16-kvmd-run-as-daemon-user.patch b/app-emulation/ganeti/files/ganeti-2.16-kvmd-run-as-daemon-user.patch
deleted file mode 100644
index d74a6ca59b50..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.16-kvmd-run-as-daemon-user.patch
+++ /dev/null
@@ -1,30 +0,0 @@
---- ganeti-2.16.0~rc1.orig/Makefile.am	2017-01-05 10:09:56.568213273 -0800
-+++ ganeti-2.16.0~rc1/Makefile.am	2017-01-05 10:10:51.260260697 -0800
-@@ -2477,6 +2477,7 @@
- 	  echo 's#@''PKGLIBDIR@#$(libdir)/ganeti#g'; \
- 	  echo 's#@''GNTMASTERUSER@#$(MASTERD_USER)#g'; \
- 	  echo 's#@''GNTRAPIUSER@#$(RAPI_USER)#g'; \
-+	  echo 's#@''GNTKVMDUSER@#$(KVMD_USER)#g'; \
- 	  echo 's#@''GNTCONFDUSER@#$(CONFD_USER)#g'; \
- 	  echo 's#@''GNTWCONFDUSER@#$(WCONFD_USER)#g'; \
- 	  echo 's#@''GNTLUXIDUSER@#$(LUXID_USER)#g'; \
-@@ -2484,6 +2485,7 @@
- 	  echo 's#@''GNTMONDUSER@#$(MOND_USER)#g'; \
- 	  echo 's#@''GNTMETADUSER@#$(METAD_USER)#g'; \
- 	  echo 's#@''GNTRAPIGROUP@#$(RAPI_GROUP)#g'; \
-+	  echo 's#@''GNTKVMDGROUP@#$(KVMD_GROUP)#g'; \
- 	  echo 's#@''GNTADMINGROUP@#$(ADMIN_GROUP)#g'; \
- 	  echo 's#@''GNTCONFDGROUP@#$(CONFD_GROUP)#g'; \
- 	  echo 's#@''GNTNODEDGROUP@#$(NODED_GROUP)#g'; \
---- ganeti-2.16.0~rc1.orig/daemons/daemon-util.in	2017-01-05 10:09:56.450211013 -0800
-+++ ganeti-2.16.0~rc1/daemons/daemon-util.in	2017-01-05 10:11:17.804769059 -0800
-@@ -103,6 +103,9 @@
-     rapi)
-       echo "@GNTRAPIUSER@:@GNTRAPIGROUP@"
-       ;;
-+    kvmd)
-+      echo "@GNTKVMDUSER@:@GNTKVMDGROUP@"
-+	;;
-     noded)
-       echo "@GNTNODEDUSER@:@GNTNODEDGROUP@"
-       ;;

diff --git a/app-emulation/ganeti/files/ganeti-2.16-noded-must-run-as-root.patch b/app-emulation/ganeti/files/ganeti-2.16-noded-must-run-as-root.patch
deleted file mode 100644
index d6c440b51ee6..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.16-noded-must-run-as-root.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- ganeti-2.16.0~rc1.orig/configure.ac	2017-01-05 10:09:56.480211588 -0800
-+++ ganeti-2.16.0~rc1/configure.ac	2017-01-05 10:15:34.462684390 -0800
-@@ -380,9 +380,9 @@
-    group_luxid="${withval}luxid";
-    group_masterd="${withval}masterd";
-    group_metad="${withval}metad";
--   group_noded="$group_default";
-+   group_noded="root";
-    group_daemons="${withval}daemons";
--   group_mond="$group_default"],
-+   group_mond="root"],
-   [group_rapi="$group_default";
-    group_admin="$group_default";
-    group_confd="$group_default";
-@@ -391,9 +391,9 @@
-    group_luxid="$group_default";
-    group_masterd="$group_default";
-    group_metad="$group_default";
--   group_noded="$group_default";
-+   group_noded="root";
-    group_daemons="$group_default";
--   group_mond="$group_default"])
-+   group_mond="root"])
- AC_SUBST(RAPI_GROUP, $group_rapi)
- AC_SUBST(ADMIN_GROUP, $group_admin)
- AC_SUBST(CONFD_GROUP, $group_confd)

diff --git a/app-emulation/ganeti/files/ganeti-2.17-relax-deps.patch b/app-emulation/ganeti/files/ganeti-2.17-relax-deps.patch
deleted file mode 100644
index ef4be0869560..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.17-relax-deps.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- ganeti-2.17.0~beta1/cabal/ganeti.template.cabal	2017-01-05 10:29:49.936067812 -0800
-+++ ganeti-2.17.0~beta1/cabal/ganeti.template.cabal	2017-01-05 10:33:03.248770000 -0800
-@@ -54,15 +54,15 @@
-     , transformers                  >= 0.3.0.0
-     , unix                          >= 2.5.1.0
- 
--    , attoparsec                    >= 0.10.1.1   && < 0.13
-+    , attoparsec                    >= 0.10.1.1   && < 0.14
-     , base64-bytestring             >= 1.0.0.1    && < 1.1
-     , case-insensitive              >= 0.4.0.1    && < 1.3
-     , Crypto                        >= 4.2.4      && < 4.3
-     , curl                          >= 1.3.7      && < 1.4
-     , hinotify                      >= 0.3.2      && < 0.4
-     , hslogger                      >= 1.1.4      && < 1.3
--    , json                          >= 0.5        && < 1.0
--    , lens                          >= 3.10       && < 4.13
-+    , json                          >= 0.5
-+    , lens                          >= 3.10
-     , lifted-base                   >= 0.2.0.3    && < 0.3
-     , monad-control                 >= 0.3.1.3    && < 1.1
-     , MonadCatchIO-transformers     >= 0.3.0.0    && < 0.4

diff --git a/app-emulation/ganeti/files/ganeti-2.9-disable-root-tests.patch b/app-emulation/ganeti/files/ganeti-2.9-disable-root-tests.patch
deleted file mode 100644
index 932258b93a3d..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.9-disable-root-tests.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/Makefile.am	2013-11-13 01:48:34.733493100 +0000
-+++ b/Makefile.am	2013-11-13 01:48:46.623657315 +0000
-@@ -1245,7 +1245,6 @@
- 	test/py/cfgupgrade_unittest.py \
- 	test/py/docs_unittest.py \
- 	test/py/ganeti.asyncnotifier_unittest.py \
--	test/py/ganeti.backend_unittest-runasroot.py \
- 	test/py/ganeti.backend_unittest.py \
- 	test/py/ganeti.bootstrap_unittest.py \
- 	test/py/ganeti.cli_unittest.py \
-@@ -1308,7 +1307,6 @@
- 	test/py/ganeti.utils.algo_unittest.py \
- 	test/py/ganeti.utils.filelock_unittest.py \
- 	test/py/ganeti.utils.hash_unittest.py \
--	test/py/ganeti.utils.io_unittest-runasroot.py \
- 	test/py/ganeti.utils.io_unittest.py \
- 	test/py/ganeti.utils.log_unittest.py \
- 	test/py/ganeti.utils.lvm_unittest.py \

diff --git a/app-emulation/ganeti/files/ganeti-2.9-skip-cli-test.patch b/app-emulation/ganeti/files/ganeti-2.9-skip-cli-test.patch
deleted file mode 100644
index c0977cae8b17..000000000000
--- a/app-emulation/ganeti/files/ganeti-2.9-skip-cli-test.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/Makefile.am.orig	2013-11-13 02:19:49.198992622 +0000
-+++ b/Makefile.am	2013-11-13 02:20:12.709305182 +0000
-@@ -1332,7 +1332,6 @@
- 	test/py/daemon-util_unittest.bash \
- 	test/py/ganeti-cleaner_unittest.bash \
- 	test/py/import-export_unittest.bash \
--	test/py/cli-test.bash \
- 	test/py/bash_completion.bash
- 
- if PY_UNIT
-@@ -1397,7 +1396,6 @@
- 	test/py/daemon-util_unittest.bash \
- 	test/py/ganeti-cleaner_unittest.bash \
- 	test/py/import-export_unittest.bash \
--	test/py/cli-test.bash \
- 	test/py/bash_completion.bash \
- 	test/hs/offline-test.sh \
- 	test/hs/cli-tests-defs.sh \

diff --git a/app-emulation/ganeti/files/ganeti-3.0.1-buildfix.patch b/app-emulation/ganeti/files/ganeti-3.0.1-buildfix.patch
deleted file mode 100644
index 3c3bf2c7af90..000000000000
--- a/app-emulation/ganeti/files/ganeti-3.0.1-buildfix.patch
+++ /dev/null
@@ -1,79 +0,0 @@
---- ganeti-3.0.1.orig/autotools/check-python-code	2021-02-03 09:24:44.000000000 -0800
-+++ ganeti-3.0.1/autotools/check-python-code	2021-08-17 22:09:01.279286516 -0700
-@@ -32,9 +32,10 @@
- # Ensure the checks always use the same locale
- export LC_ALL=C
-
--readonly maxlinelen=$(for ((i=0; i<81; ++i)); do echo -n .; done)
-+readonly maxlinelen_num=120
-+readonly maxlinelen=$(for ((i=0; i<$maxlinelen_num; ++i)); do echo -n .; done)
-
--if [[ "${#maxlinelen}" != 81 ]]; then
-+if [[ "${#maxlinelen}" != $maxlinelen_num ]]; then
-   echo "Internal error: Check for line length is incorrect" >&2
-   exit 1
- fi
-@@ -68,7 +69,7 @@
-
-   if grep -n -H "^$maxlinelen" "$script"; then
-     let ++problems
--    echo "Longest line in $script is longer than 80 characters" >&2
-+    echo "Longest line in $script is longer than $maxlinelen_num characters" >&2
-   fi
-
-   if grep -n -H -E -i \
---- ganeti-3.0.1.orig/test/py/ganeti.cli_unittest.py	2021-02-03 09:24:44.000000000 -0800
-+++ ganeti-3.0.1/test/py/ganeti.cli_unittest.py	2021-08-17 22:40:45.098873762 -0700
-@@ -1140,7 +1140,7 @@
-         if len(keyparts) > 1:
-           self._RenameDictItem(minmax, key, keyparts[0])
-     self.assertTrue(constants.IPOLICY_DTS in parsed)
--    parsed[constants.IPOLICY_DTS] = yaml.load("[%s]" %
-+    parsed[constants.IPOLICY_DTS] = yaml.full_load("[%s]" %
-                                               parsed[constants.IPOLICY_DTS])
-
-   @staticmethod
-@@ -1148,7 +1148,7 @@
-     formatted = cli.FormatPolicyInfo(custom, effective, iscluster)
-     buf = StringIO()
-     cli._SerializeGenericInfo(buf, formatted, 0)
--    return yaml.load(buf.getvalue())
-+    return yaml.full_load(buf.getvalue())
-
-   def _PrintAndCheckParsed(self, policy):
-     parsed = self._PrintAndParsePolicy(policy, NotImplemented, True)
---- ganeti-3.0.1.orig/qa/qa_utils.py	2021-02-03 09:24:44.000000000 -0800
-+++ ganeti-3.0.1/qa/qa_utils.py	2021-08-17 22:40:45.099873801 -0700
-@@ -450,7 +450,7 @@
-   master = qa_config.GetMasterNode()
-   cmdline = utils.ShellQuoteArgs(infocmd)
-   info_out = GetCommandOutput(master.primary, cmdline)
--  return yaml.load(info_out)
-+  return yaml.full_load(info_out)
-
-
- def UploadFile(node, src):
-diff -Nuar ganeti-3.0.1.orig/test/py/ganeti.hooks_unittest.py ganeti-3.0.1/test/py/ganeti.hooks_unittest.py
---- ganeti-3.0.1.orig/test/py/ganeti.hooks_unittest.py	2021-08-17 22:49:00.459354704 -0700
-+++ ganeti-3.0.1/test/py/ganeti.hooks_unittest.py	2021-08-17 23:16:29.276890680 -0700
-@@ -66,6 +66,8 @@
- class TestHooksRunner(unittest.TestCase):
-   """Testing case for HooksRunner"""
-   def setUp(self):
-+    # See all differences in env
-+    self.maxDiff = None
-     self.torm = []
-     self.tmpdir = tempfile.mkdtemp()
-     self.torm.append((self.tmpdir, True))
-diff -Nuar ganeti-3.0.1.orig/test/py/ganeti.utils.process_unittest.py ganeti-3.0.1/test/py/ganeti.utils.process_unittest.py
---- ganeti-3.0.1.orig/test/py/ganeti.utils.process_unittest.py	2021-08-17 22:49:00.458354624 -0700
-+++ ganeti-3.0.1/test/py/ganeti.utils.process_unittest.py	2021-08-17 23:19:04.413002771 -0700
-@@ -208,6 +208,8 @@
-
-   def setUp(self):
-     testutils.GanetiTestCase.setUp(self)
-+    # See all differences in env
-+    self.maxDiff = None
-     self.magic = time.ctime() + " ganeti test"
-     self.fname = self._CreateTempFile()
-     self.fifo_tmpdir = tempfile.mkdtemp()

diff --git a/app-emulation/ganeti/files/ganeti-3.0.1-docfixes.patch b/app-emulation/ganeti/files/ganeti-3.0.1-docfixes.patch
deleted file mode 100644
index efca5af7d39a..000000000000
--- a/app-emulation/ganeti/files/ganeti-3.0.1-docfixes.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- ganeti-3.0.1.orig/doc/index.rst	2021-02-03 09:24:44.000000000 -0800
-+++ ganeti-3.0.1/doc/index.rst	2021-08-14 22:04:20.028241843 -0700
-@@ -121,7 +121,6 @@
-    design-kvmd.rst
-    design-location.rst
-    design-linuxha.rst
--   design-location.rst
-    design-lu-generated-jobs.rst
-    design-monitoring-agent.rst
-    design-move-instance-improvements.rst

diff --git a/app-emulation/ganeti/files/ganeti-3.0.1-gentoo-infra-hacks.patch b/app-emulation/ganeti/files/ganeti-3.0.1-gentoo-infra-hacks.patch
deleted file mode 100644
index 649083314839..000000000000
--- a/app-emulation/ganeti/files/ganeti-3.0.1-gentoo-infra-hacks.patch
+++ /dev/null
@@ -1,195 +0,0 @@
-This is Robin's hacky set of patches for Ganeti
-
-Issue A:
-* OpenRC start-stop-daemon no longer supports --oknodo option, which Ganeti
-  uses for idempotent stop/start daemons.
-* OpenRC treats "--stop --signal 0" as a stop, rather than just doing SIG0.
-* Resolve the above by adding using --signal 0 on it's own, and forcing the
-  stop/start functions to check before doing things.
-
-Issue B: http/client, rapi/client
-* curl is stricter than it used to be!
-* Explicitly pass Ganeti's CA cert to Curl when the client is making calls, so
-  that it can be trusted.
-* Ensure that ONLY the Ganeti CA is used, and not other system certs.
-
-Bonus:
-* Extra stuff to make it easier to debug
-
-Open Bugs:
-* When using ganeti-vcluster, some tools don't apply the vcluster prefix to the socket path.
-  E.g. they try to open /run/ganeti/socket/ganeti-query instead of /var/lib/ganeti-vcluster/node1/run/ganeti/socket/ganeti-query
-
---- a/lib/bootstrap.py	2021-08-18 22:14:52.728930451 -0700
-+++ b/lib/bootstrap.py	2021-08-18 15:29:54.125248452 -0700
-@@ -63,7 +63,7 @@
- _INITCONF_ECID = "initconfig-ecid"
- 
- #: After how many seconds daemon must be responsive
--_DAEMON_READY_TIMEOUT = 10.0
-+_DAEMON_READY_TIMEOUT = 10.0 # Useful to raise during debug
- 
- 
- def GenerateHmacKey(file_name):
---- a/lib/utils/log.py	2021-08-18 22:14:52.750932142 -0700
-+++ b/lib/utils/log.py	2021-08-18 15:51:27.044122859 -0700
-@@ -186,9 +186,13 @@
-   logging.info("Received request to reopen log files")
- 
- 
--def SetupLogging(logfile, program, debug=0, stderr_logging=False,
--                 multithreaded=False, syslog=constants.SYSLOG_USAGE,
--                 console_logging=False, root_logger=None):
-+def SetupLogging(logfile, program, debug=0, stderr_logging=False,
-+                 multithreaded=False, syslog=constants.SYSLOG_USAGE,
-+                 console_logging=False, root_logger=None):
-+#Useful to use during debug
-+#def SetupLogging(logfile, program, debug=10, stderr_logging=True,
-+#                 multithreaded=False, syslog=constants.SYSLOG_YES,
-+#                 console_logging=True, root_logger=None):
-   """Configures the logging module.
- 
-   @type logfile: str
---- a/lib/rapi/client.py	2021-08-18 22:14:52.667925763 -0700
-+++ b/lib/rapi/client.py	2021-08-18 16:56:32.569894199 -0700
-@@ -361,6 +361,9 @@
-     if cafile or capath or use_curl_cabundle:
-       # Require certificates to be checked
-       curl.setopt(pycurl.SSL_VERIFYPEER, True)
-+      if not use_curl_cabundle:
-+        curl.setopt(pycurl.CAINFO, str(''))
-+        curl.setopt(pycurl.CAPATH, str(''))
-       if cafile:
-         curl.setopt(pycurl.CAINFO, str(cafile))
-       if capath:
---- a/lib/http/client.py	2021-08-18 22:14:52.470910624 -0700
-+++ b/lib/http/client.py	2021-08-18 17:02:50.196376211 -0700
-@@ -42,6 +42,7 @@
- from ganeti import compat
- from ganeti import netutils
- from ganeti import locking
-+from ganeti import pathutils
- 
- 
- class HttpClientRequest(object):
-@@ -141,7 +142,9 @@
-   @param req: HTTP request
- 
-   """
-+  noded_cert = pathutils.NODED_CERT_FILE
-   logging.debug("Starting request %r", req)
-+  #logging.debug("request2 %s", req.url)
- 
-   url = req.url
-   method = req.method
-@@ -152,8 +155,13 @@
-   resp_buffer = BytesIO()
- 
-   # Configure client for request
--  curl.setopt(pycurl.VERBOSE, False)
-+  curl.setopt(pycurl.VERBOSE, False)
-+  #curl.setopt(pycurl.VERBOSE, True)
-   curl.setopt(pycurl.NOSIGNAL, True)
-+  #curl.setopt(pycurl.SSL_VERIFYPEER, False)
-+  #curl.setopt(pycurl.SSL_VERIFYHOST, 0)
-+  curl.setopt(pycurl.CAINFO, noded_cert)
-+  curl.setopt(pycurl.CAPATH, noded_cert)
-   curl.setopt(pycurl.USERAGENT, http.HTTP_GANETI_VERSION)
-   curl.setopt(pycurl.PROXY, "")
-   curl.setopt(pycurl.CUSTOMREQUEST, method)
-
---- a/daemons/daemon-util.in	2021-08-18 22:14:52.442908473 -0700
-+++ b/daemons/daemon-util.in	2021-08-18 20:00:53.111847248 -0700
-@@ -260,6 +260,8 @@
-     echo 'Missing daemon name.' >&2
-     return 1
-   fi
-+  #echo "DEBUG: $0: check $1" 1>&2
-+  #set -x
- 
-   local name="$1"; shift
-   local pidfile=$(_daemon_pidfile $name)
-@@ -273,21 +275,24 @@
-       return 1
-     fi
-   elif type -p start-stop-daemon >/dev/null; then
--    start-stop-daemon --stop --signal 0 --quiet \
-+    start-stop-daemon --test --signal 0 --quiet \
-       --pidfile $pidfile --name "$name"
-+    return $?
-   else
-     _ignore_error status \
-       -p $pidfile \
-       $daemonexec
-+    return $?
-   fi
- }
- 
- # Starts a daemon
--start() {
-+_start() {
-   if [[ "$#" -lt 1 ]]; then
-     echo 'Missing daemon name.' >&2
-     return 1
-   fi
-+  #echo "DEBUG: $0: _start $1" 1>&2
- 
-   local name="$1"; shift
-   # Convert daemon name to uppercase after removing "ganeti-" prefix
-@@ -342,11 +347,12 @@
- }
- 
- # Stops a daemon
--stop() {
-+_stop() {
-   if [[ "$#" -lt 1 ]]; then
-     echo 'Missing daemon name.' >&2
-     return 1
-   fi
-+  #echo "DEBUG: $0: stop $1" 1>&2
- 
-   local name="$1"; shift
-   local pidfile=$(_daemon_pidfile $name)
-@@ -371,10 +377,32 @@
-       return 1
-     fi
- 
--    start $name
-+    _start $name
-+  fi
-+}
-+
-+# Stop a daemon only if running
-+check_and_stop() {
-+  local name="$1"
-+
-+  if check $name; then
-+    if use_systemctl; then
-+      echo "${name} supervised by systemd but not running, will not restart."
-+      return 1
-+    fi
-+
-+    _stop $name
-   fi
- }
- 
-+stop() {
-+    check_and_stop "$@"
-+}
-+
-+start() {
-+    check_and_start "$@"
-+}
-+
- # Starts the master role
- start_master() {
-   if use_systemctl; then
-@@ -423,7 +451,7 @@
-     systemctl stop ganeti.target
-   else
-     for i in $(list_stop_daemons); do
--      stop $i
-+      stop $i
-     done
-   fi
- }

diff --git a/app-emulation/ganeti/files/ganeti-3.0.1-sphinx.patch b/app-emulation/ganeti/files/ganeti-3.0.1-sphinx.patch
deleted file mode 100644
index 5b2fb4e3dc98..000000000000
--- a/app-emulation/ganeti/files/ganeti-3.0.1-sphinx.patch
+++ /dev/null
@@ -1,9 +0,0 @@
-diff -Nuar ganeti-3.0.1.orig/lib/build/shell_example_lexer.py ganeti-3.0.1/lib/build/shell_example_lexer.py
---- ganeti-3.0.1.orig/lib/build/shell_example_lexer.py	2021-02-03 09:24:44.000000000 -0800
-+++ ganeti-3.0.1/lib/build/shell_example_lexer.py	2021-08-17 21:30:34.049432703 -0700
-@@ -79,4 +79,4 @@
-
-
- def setup(app):
--  app.add_lexer("shell-example", ShellExampleLexer())
-+  app.add_lexer("shell-example", ShellExampleLexer)

diff --git a/app-emulation/ganeti/files/ganeti-3.0.1-template_haskell.patch b/app-emulation/ganeti/files/ganeti-3.0.1-template_haskell.patch
deleted file mode 100644
index 7ac02d020796..000000000000
--- a/app-emulation/ganeti/files/ganeti-3.0.1-template_haskell.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-API change in version 2.16 (shipped with ghc-8.10) which changed the type for
-the TupE constructor from [Exp] to [Maybe Exp].
-
-Thanks-To: solpeth in #gentoo-haskell
-Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
-
---- ganeti-3.0.1/src/Ganeti/THH/Types.hs	2021-02-03 09:24:44.000000000 -0800
-+++ ganeti-3.0.1.modified//src/Ganeti/THH/Types.hs	2021-08-14 21:37:38.027556528 -0700
-@@ -122,5 +122,13 @@
- curryN n = do
-   f <- newName "f"
-   ps <- replicateM n (newName "x")
--  return $ LamE (VarP f : map VarP ps)
--             (AppE (VarE f) (TupE $ map VarE ps))
-+  -- return $ LamE (VarP f : map VarP ps)
-+  --            (AppE (VarE f) (TupE $ map VarE ps))
-+  let args = map VarP (f:ps)
-+      ntup = TupE
-+#if MIN_VERSION_template_haskell(2,16,0)
-+                   $ map Just (map VarE ps)
-+#else
-+	               (map VarE ps)
-+#endif
-+  return $ LamE args (AppE (VarE f) ntup)

diff --git a/app-emulation/ganeti/files/ganeti-3.0.2-docfixes.patch b/app-emulation/ganeti/files/ganeti-3.0.2-docfixes.patch
deleted file mode 100644
index 8c50d38a5c4e..000000000000
--- a/app-emulation/ganeti/files/ganeti-3.0.2-docfixes.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Nuar ganeti-3.0.2.orig/doc/index.rst ganeti-3.0.2/doc/index.rst
---- ganeti-3.0.2.orig/doc/index.rst	2022-06-21 22:50:29.119540902 -0700
-+++ ganeti-3.0.2/doc/index.rst	2022-06-21 22:55:40.645219873 -0700
-@@ -120,6 +120,7 @@
-    design-internal-shutdown.rst
-    design-kvmd.rst
-    design-linuxha.rst
-+   design-location.rst
-    design-lu-generated-jobs.rst
-    design-monitoring-agent.rst
-    design-move-instance-improvements.rst

diff --git a/app-emulation/ganeti/files/ganeti-3.0.2-gentoo-daemon-util-part2.patch b/app-emulation/ganeti/files/ganeti-3.0.2-gentoo-daemon-util-part2.patch
deleted file mode 100644
index 48a93d403b4a..000000000000
--- a/app-emulation/ganeti/files/ganeti-3.0.2-gentoo-daemon-util-part2.patch
+++ /dev/null
@@ -1,64 +0,0 @@
---- a/daemons/daemon-util.in	2021-08-18 22:14:52.442908473 -0700
-+++ b/daemons/daemon-util.in	2022-07-04 13:17:29.914663427 -0700
-@@ -28,6 +28,7 @@
- # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- 
- set -e
-+#set -x
- 
- # Allow overriding for tests
- readonly LOCALSTATEDIR=${LOCALSTATEDIR:-${GANETI_ROOTDIR:-}/var}
-@@ -330,11 +331,14 @@
-   fi
- 
-   if type -p start-stop-daemon >/dev/null; then
--    start-stop-daemon --start --quiet --oknodo \
-+    start-stop-daemon --start \
-+      --wait 200 \
-       --pidfile $pidfile \
--      --startas $daemonexec \
--      --chuid $usergroup \
-+      --exec $daemonexec \
-+      --user $usergroup \
-       -- $args "$@"
-+    rc=$?
-+    return $?
-   else
-     # TODO: Find a way to start daemon with a group, until then the group must
-     # be removed
-@@ -360,7 +364,7 @@
-   if use_systemctl; then
-     systemctl stop "${name}.service"
-   elif type -p start-stop-daemon >/dev/null; then
--    start-stop-daemon --stop --quiet --oknodo --retry 30 \
-+    start-stop-daemon --stop --quiet --retry 30 \
-       --pidfile $pidfile --name "$name"
-   else
-     _ignore_error killproc -p $pidfile $name
-@@ -369,7 +373,7 @@
- 
- # Starts a daemon if it's not yet running
- check_and_start() {
--  local name="$1"
-+  local name="$1" ; shift
- 
-   if ! check $name; then
-     if use_systemctl; then
-@@ -377,7 +381,7 @@
-       return 1
-     fi
- 
--    _start $name
-+    _start $name "$@"
-   fi
- }
- 
-@@ -469,7 +473,7 @@
- 
-   if type -p start-stop-daemon >/dev/null; then
-     start-stop-daemon --stop --signal HUP --quiet \
--      --oknodo --pidfile $pidfile --name "$name"
-+      --pidfile $pidfile --name "$name"
-   else
-     _ignore_error killproc \
-       -p $pidfile \

diff --git a/app-emulation/ganeti/files/ganeti-3.0.2-less-sleep.patch b/app-emulation/ganeti/files/ganeti-3.0.2-less-sleep.patch
deleted file mode 100644
index d13347160d0d..000000000000
--- a/app-emulation/ganeti/files/ganeti-3.0.2-less-sleep.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -Nuar ganeti-3.0.2.orig/lib/cmdlib/instance_storage.py ganeti-3.0.2/lib/cmdlib/instance_storage.py
---- ganeti-3.0.2.orig/lib/cmdlib/instance_storage.py	2022-02-28 12:37:07.000000000 -0800
-+++ ganeti-3.0.2/lib/cmdlib/instance_storage.py	2022-06-25 15:35:20.742784824 -0700
-@@ -58,6 +58,7 @@
- import ganeti.masterd.instance
- 
- 
-+_SLEEP_MIN_TIME = 10
- _DISK_TEMPLATE_NAME_PREFIX = {
-   constants.DT_PLAIN: "",
-   constants.DT_RBD: ".rbd",
-@@ -1501,7 +1502,7 @@
-     if done or oneshot:
-       break
- 
--    time.sleep(min(60, max_time))
-+    time.sleep(min(_SLEEP_MIN_TIME, max_time))
- 
-   if done:
-     lu.LogInfo("Instance %s's disks are in sync", instance.name)

diff --git a/app-emulation/ganeti/files/ganeti-kvm-poweroff.confd b/app-emulation/ganeti/files/ganeti-kvm-poweroff.confd
deleted file mode 100644
index 6ab21c3709a5..000000000000
--- a/app-emulation/ganeti/files/ganeti-kvm-poweroff.confd
+++ /dev/null
@@ -1,4 +0,0 @@
-# /etc/conf.d/ganeti-kvm-poweroff: config file for /etc/init.d/ganeti-kvm-poweroff
-
-# Maximum time in seconds to wait until KVM VMs shutdown before giving up. 
-# GANETI_KVM_TIMEOUT="60"

diff --git a/app-emulation/ganeti/files/ganeti-kvm-poweroff.initd b/app-emulation/ganeti/files/ganeti-kvm-poweroff.initd
deleted file mode 100644
index 44fc861d1601..000000000000
--- a/app-emulation/ganeti/files/ganeti-kvm-poweroff.initd
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2011 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-depend() {
-    after ganeti
-    after bootmisc
-}
-
-CONTROL_PATH="/var/run/ganeti/kvm-hypervisor/ctrl"
-GANETI_KVM_TIMEOUT=${GANETI_KVM_TIMEOUT:-60}
-
-start() {
-    return 0
-}
-
-# Taken from doc/examples/ganeti-kvm-poweroff.initd.in in ganeti package
-stop() {
-    ebegin "Stopping Ganeti KVM VMs"
-    # shutdown VMs and remove sockets of those not running
-    for vm_monitor in $(find $CONTROL_PATH -type s -name '*.monitor') ; do
-        if ! echo system_powerdown | \
-            socat -U UNIX:$vm_monitor STDIO > /dev/null 2>&1; then
-            # remove disconnected socket
-            rm -f $vm_monitor
-        fi
-    done
-
-    einfo " Waiting for VMs to poweroff"
-    waiting=true
-    remaining=$GANETI_KVM_TIMEOUT
-    while $waiting && [ $remaining -ne 0 ]; do
-        if [ -z "$(find $CONTROL_PATH -type s -name '*.monitor')" ] ; then
-            break
-        fi
-
-        printf "."
-        for vm_monitor in $(find $CONTROL_PATH -type s -name '*.monitor') ; do
-            if ! echo | socat -U UNIX:$vm_monitor STDIO > /dev/null 2>&1; then
-                rm -rf $vm_monitor
-            fi
-        done
-
-        sleep 5
-        remaining=$((remaining - 5))
-    done
-
-    if [ -n "$(find $CONTROL_PATH -type s -name '*.monitor')" ] ; then
-        eerror " Some ganeti VMs did not shutdown"
-    fi
-    echo
-    eend $? 
-}
-
-restart() {
-    eerror "restart not supported"
-}

diff --git a/app-emulation/ganeti/files/ganeti-lockdir.patch b/app-emulation/ganeti/files/ganeti-lockdir.patch
deleted file mode 100644
index dad084fa4306..000000000000
--- a/app-emulation/ganeti/files/ganeti-lockdir.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/lib/pathutils.py b/lib/pathutils.py
-index db860ff..53a9cc4 100644
---- a/lib/pathutils.py
-+++ b/lib/pathutils.py
-@@ -63,9 +63,9 @@ ETC_HOSTS = vcluster.ETC_HOSTS
- 
- # Top-level paths
- DATA_DIR = LOCALSTATEDIR + "/lib/ganeti"
--LOCK_DIR = LOCALSTATEDIR + "/lock"
-+LOCK_DIR = "/run/lock"
- LOG_DIR = LOCALSTATEDIR + "/log/ganeti"
- RUN_DIR = "/run/ganeti"
- 
- #: Script to configure master IP address
- DEFAULT_MASTER_SETUP_SCRIPT = TOOLSDIR + "/master-ip-setup"

diff --git a/app-emulation/ganeti/files/ganeti-tmpfilesd b/app-emulation/ganeti/files/ganeti-tmpfilesd
deleted file mode 100644
index 681bb6c366e8..000000000000
--- a/app-emulation/ganeti/files/ganeti-tmpfilesd
+++ /dev/null
@@ -1,41 +0,0 @@
-# needs to be readable by ganeti
-f /etc/ganeti/file-storage-paths 0640 root root -
-
-# stateful ganeti stuff
-d /var/lib/ganeti 0755 root root -
-d /var/lib/ganeti/queue 0750 root root -
-d /var/lib/ganeti/queue/archive 0750 root root -
-d /var/lib/ganeti/rapi 0750 root root -
-
-# places to store data
-d /srv/ganeti/file-storage - - - -
-d /srv/ganeti/shared-file-storage - - - -
-d /srv/ganeti/export - - - -
-d /srv/ganeti/os - - -
-d /srv/ganeti/extstorage - - - -
-
-# Needed to run ganeti
-d /run/ganeti/ 0775 root root
-d /run/ganeti/bdev-cache 0755 root root
-d /run/ganeti/chroot-hypervisor 0775 root root
-d /run/ganeti/crypto 0700 root root
-d /run/ganeti/fake-hypervisor 0775 root root
-d /run/ganeti/gluster 0750 root root -
-d /run/ganeti/import-export 0755 root root
-d /run/ganeti/instance-disks 0755 root root
-d /run/ganeti/instance-reason 0755 root root
-d /run/ganeti/kvm-hypervisor 0775 root root
-d /run/ganeti/kvm-hypervisor/chroot 0775 root root
-d /run/ganeti/kvm-hypervisor/chroot-quarantine 0775 root root
-d /run/ganeti/kvm-hypervisor/conf 0775 root root
-d /run/ganeti/kvm-hypervisor/ctrl 0775 root root
-d /run/ganeti/kvm-hypervisor/keymap 0775 root root
-d /run/ganeti/kvm-hypervisor/nic 0775 root root
-d /run/ganeti/kvm-hypervisor/pid 0775 root root
-d /run/ganeti/kvm-hypervisor/uid 0775 root root
-d /run/ganeti/livelocks 0750 root root
-d /run/ganeti/luxidmessages 0750 root root
-d /run/ganeti/lxc 0755 root root
-d /run/ganeti/lxc/instance 0750 root root
-d /run/ganeti/socket 0770 root root
-d /run/ganeti/uid-pool 0750 root root

diff --git a/app-emulation/ganeti/files/ganeti.confd-r2 b/app-emulation/ganeti/files/ganeti.confd-r2
deleted file mode 100644
index 0f2e69f3d5ea..000000000000
--- a/app-emulation/ganeti/files/ganeti.confd-r2
+++ /dev/null
@@ -1,19 +0,0 @@
-# /etc/conf.d/ganeti: config file for /etc/init.d/ganeti
-
-# Extra options to pass to all of the ganeti daemons
-# GANETI_OPTS="-d"
-
-# Options to pass to ganeti-masterd
-# GANETI_MASTERD_OPTS=""
-
-# Options to pass to ganeti-rapi
-# GANETI_RAPI_OPTS=""
-
-# Options to pass to ganeti-noded
-# GANETI_NODED_OPTS=""
-
-# Options to pass to ganeti-confd
-# GANETI_CONFD_OPTS=""
-
-# Options to pass to ganeti-luxid
-# GANETI_LUXID_OPTS=""

diff --git a/app-emulation/ganeti/files/ganeti.confd-r5 b/app-emulation/ganeti/files/ganeti.confd-r5
deleted file mode 100644
index c283bb166232..000000000000
--- a/app-emulation/ganeti/files/ganeti.confd-r5
+++ /dev/null
@@ -1,30 +0,0 @@
-# /etc/conf.d/ganeti: config file for /etc/init.d/ganeti
-
-# Extra options to pass to all of the ganeti daemons
-# GANETI_OPTS="-d"
-
-# daemon-util may pass arguments via the _ARGS variant!
-
-# Options to pass to ganeti-noded
-GANETI_NODED_OPTS="${GANETI_NODED_OPTS:-${NODED_ARGS:-}}"
-
-# Options to pass to ganeti-masterd
-GANETI_MASTERD_OPTS="${GANETI_MASTERD_OPTS:-${MASTERD_ARGS:-}}"
-
-# Options to pass to ganeti-rapi
-GANETI_RAPI_OPTS="${GANETI_RAPI_OPTS:-${RAPI_ARGS:-}}"
-
-# Options to pass to ganeti-confd
-GANETI_CONFD_OPTS="${GANETI_CONFD_OPTS:-${CONFD_ARGS:-}}"
-
-# Options to pass to ganeti-mond
-GANETI_MOND_OPTS="${GANETI_MOND_OPTS:-${MOND_ARGS:-}}"
-
-# Options to pass to ganeti-wconfd
-GANETI_WCONFD_OPTS="${GANETI_WCONFD_OPTS:-${WCONFD_ARGS:-}}"
-
-# Options to pass to ganeti-luxid
-GANETI_LUXID_OPTS="${GANETI_LUXID_OPTS:-${LUXID_ARGS:-}}"
-
-# Options to pass to ganeti-kvmd
-GANETI_KVMD_OPTS="${GANETI_KVMD_OPTS:-${KVMD_ARGS:-}}"

diff --git a/app-emulation/ganeti/files/ganeti.initd-r3 b/app-emulation/ganeti/files/ganeti.initd-r3
deleted file mode 100644
index 18b3116a517f..000000000000
--- a/app-emulation/ganeti/files/ganeti.initd-r3
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-extra_commands="forcestart is_master"
-
-depend() {
-	need localmount logger
-	after bootmisc sshd
-	use net
-}
-
-DAEMON_UTIL="/usr/lib/ganeti/daemon-util"
-
-is_master() {
-	[ -z "${ganeti_master}" ] && ganeti_master="$(gnt-cluster getmaster)"
-	[ -z "${local_hostname}" ] && local_hostname="$(hostname -f)"
-	[ "${ganeti_master}" = "${local_hostname}" ]
-}
-
-# This exists specifically for restarting a 2-node cluster where quorum might
-# not be available.
-forcestart() {
-	ewarn "Forcing non-quorum Ganeti master start"
-	GANETI_WCONFD_OPTS="${GANETI_WCONFD_OPTS} --no-voting --yes-do-it"
-	GANETI_LUXID_OPTS="${GANETI_LUXID_OPTS} --no-voting --yes-do-it"
-	GANETI_MASTERD_OPTS="${GANETI_LUXID_OPTS} --no-voting --yes-do-it"
-	export GANETI_WCONFD_OPTS GANETI_LUXID_OPTS GANETI_MASTERD_OPTS
-	start
-}
-
-start() {
-	if ! [ -e ${DAEMON_UTIL} ]; then
-		eerror "Could not find daemon utility at ${DAEMON_UTIL}"
-		return 1
-	elif ! ${DAEMON_UTIL} check-config ; then
-		eerror "Incomplete configuration, will not run."
-		return 1
-	fi
-
-	local daemon retval=0 optsvar started_daemons daemon_opts
-
-	for daemon in $(${DAEMON_UTIL} list-start-daemons); do
-		optsvar="$(printf "${daemon}_OPTS" | tr - _ | LC_ALL=C tr '[:lower:]' '[:upper:]')"
-
-		case "${daemon#ganeti-}" in
-			masterd|rapi|luxid) is_master || continue;;
-		esac
-
-		eval daemon_opts=\"\$\{${optsvar}\}\"
-
-		ebegin "Starting ${daemon}"
-		eindent
-		veinfo ${DAEMON_UTIL} start ${daemon} ${GANETI_OPTS} ${daemon_opts}
-		${DAEMON_UTIL} start ${daemon} ${GANETI_OPTS} ${daemon_opts} || retval=${?}
-
-		if [ ${retval} != 0  ] && [ -n "${started_daemons}" ]; then
-			case ${daemon} in
-				*-kvmd) retval=0; ewarn "Failed to start kvmd, continuing anyway";;
-				*)
-					eerror "Stopping already started daemons"
-					eindent
-					eend ${code} "$(${DAEMON_UTIL} check-exitcode ${code})"
-
-					for daemon in ${started_daemons}; do
-						ebegin "Stopping ${daemon}"
-						${DAEMON_UTIL} stop ${daemon} ${GANETI_OPTS}
-						eend ${?}
-					done
-					eoutdent; eoutdent
-					return ${retval}
-				;;
-			esac
-		fi
-		eoutdent
-		started_daemons="${started_daemons} ${daemon}"
-	done
-}
-
-stop() {
-	if ! [ -e ${DAEMON_UTIL} ]; then
-		eerror "Could not find daemon utility at ${DAEMON_UTIL}"
-		return 1
-	fi
-
-	local daemon
-
-	for daemon in $(${DAEMON_UTIL} list-stop-daemons) ; do \
-		case "${daemon#ganeti-}" in
-			masterd|rapi|luxid) is_master || continue;;
-		esac
-		${DAEMON_UTIL} stop ${daemon} ${GANETI_OPTS}
-	done
-}
-
-# vim:ft=gentoo-init-d:ts=4:sts=4:sw=4:noet:

diff --git a/app-emulation/ganeti/files/ganeti.initd-r4 b/app-emulation/ganeti/files/ganeti.initd-r4
deleted file mode 100644
index 6393de8e2803..000000000000
--- a/app-emulation/ganeti/files/ganeti.initd-r4
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-extra_commands="forcestart is_master"
-
-depend() {
-	need localmount logger
-	after bootmisc sshd
-	use net
-}
-
-DAEMON_UTIL="/usr/%LIBDIR%/ganeti/daemon-util"
-
-is_master() {
-	[ -z "${ganeti_master}" ] && ganeti_master="$(gnt-cluster getmaster)"
-	[ -z "${local_hostname}" ] && local_hostname="$(hostname -f)"
-	[ "${ganeti_master}" = "${local_hostname}" ]
-}
-
-# This exists specifically for restarting a 2-node cluster where quorum might
-# not be available.
-forcestart() {
-	ewarn "Forcing non-quorum Ganeti master start"
-	GANETI_WCONFD_OPTS="${GANETI_WCONFD_OPTS} --no-voting --yes-do-it"
-	GANETI_LUXID_OPTS="${GANETI_LUXID_OPTS} --no-voting --yes-do-it"
-	GANETI_MASTERD_OPTS="${GANETI_LUXID_OPTS} --no-voting --yes-do-it"
-	export GANETI_WCONFD_OPTS GANETI_LUXID_OPTS GANETI_MASTERD_OPTS
-	start
-}
-
-start() {
-	if ! [ -e ${DAEMON_UTIL} ]; then
-		eerror "Could not find daemon utility at ${DAEMON_UTIL}"
-		return 1
-	elif ! ${DAEMON_UTIL} check-config ; then
-		eerror "Incomplete configuration, will not run."
-		return 1
-	fi
-
-	local daemon retval=0 optsvar started_daemons daemon_opts
-
-	for daemon in $(${DAEMON_UTIL} list-start-daemons); do
-		optsvar="$(printf "${daemon}_OPTS" | tr - _ | LC_ALL=C tr '[:lower:]' '[:upper:]')"
-
-		case "${daemon#ganeti-}" in
-			masterd|rapi|luxid) is_master || continue;;
-		esac
-
-		eval daemon_opts=\"\$\{${optsvar}\}\"
-
-		ebegin "Starting ${daemon}"
-		eindent
-		veinfo ${DAEMON_UTIL} start ${daemon} ${GANETI_OPTS} ${daemon_opts}
-		${DAEMON_UTIL} start ${daemon} ${GANETI_OPTS} ${daemon_opts} || retval=${?}
-
-		if [ ${retval} != 0  ] && [ -n "${started_daemons}" ]; then
-			case ${daemon} in
-				*-kvmd) retval=0; ewarn "Failed to start kvmd, continuing anyway";;
-				*)
-					eerror "Stopping already started daemons"
-					eindent
-					eend ${code} "$(${DAEMON_UTIL} check-exitcode ${code})"
-
-					for daemon in ${started_daemons}; do
-						ebegin "Stopping ${daemon}"
-						${DAEMON_UTIL} stop ${daemon} ${GANETI_OPTS}
-						eend ${?}
-					done
-					eoutdent; eoutdent
-					return ${retval}
-				;;
-			esac
-		fi
-		eoutdent
-		started_daemons="${started_daemons} ${daemon}"
-	done
-}
-
-stop() {
-	if ! [ -e ${DAEMON_UTIL} ]; then
-		eerror "Could not find daemon utility at ${DAEMON_UTIL}"
-		return 1
-	fi
-
-	local daemon
-
-	for daemon in $(${DAEMON_UTIL} list-stop-daemons) ; do \
-		case "${daemon#ganeti-}" in
-			masterd|rapi|luxid) is_master || continue;;
-		esac
-		${DAEMON_UTIL} stop ${daemon} ${GANETI_OPTS}
-	done
-}
-
-# vim:ft=gentoo-init-d:ts=4:sts=4:sw=4:noet:

diff --git a/app-emulation/ganeti/files/ganeti.initd-r5 b/app-emulation/ganeti/files/ganeti.initd-r5
deleted file mode 100644
index 72dd0cdd6ac1..000000000000
--- a/app-emulation/ganeti/files/ganeti.initd-r5
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-extra_commands="forcestart is_master"
-
-depend() {
-	need localmount logger
-	after bootmisc sshd
-	use net
-}
-
-DAEMON_UTIL="/usr/lib/ganeti/daemon-util"
-readonly LOCALSTATEDIR=${LOCALSTATEDIR:-${GANETI_ROOTDIR:-}/var}
-readonly SYSCONFDIR=${SYSCONFDIR:-${GANETI_ROOTDIR:-}/etc}
-readonly PKGLIBDIR=/usr/lib64/ganeti
-readonly LOG_DIR="$LOCALSTATEDIR/log/ganeti"
-readonly RUN_DIR="/run/ganeti"
-readonly DATA_DIR="$LOCALSTATEDIR/lib/ganeti"
-readonly CONF_DIR="$SYSCONFDIR/ganeti"
-
-is_master() {
-	[ -z "${ganeti_master}" ] && ganeti_master="$(gnt-cluster getmaster)"
-	[ -z "${local_hostname}" ] && local_hostname="$(hostname -f)"
-	[ "${ganeti_master}" = "${local_hostname}" ]
-}
-
-# This exists specifically for restarting a 2-node cluster where quorum might
-# not be available.
-forcestart() {
-	ewarn "Forcing non-quorum Ganeti master start"
-	GANETI_WCONFD_OPTS="${GANETI_WCONFD_OPTS} --no-voting --yes-do-it"
-	GANETI_LUXID_OPTS="${GANETI_LUXID_OPTS} --no-voting --yes-do-it"
-	GANETI_MASTERD_OPTS="${GANETI_LUXID_OPTS} --no-voting --yes-do-it"
-	export GANETI_WCONFD_OPTS GANETI_LUXID_OPTS GANETI_MASTERD_OPTS
-	start
-}
-
-start() {
-	if ! [ -e ${DAEMON_UTIL} ]; then
-		eerror "Could not find daemon utility at ${DAEMON_UTIL}"
-		return 1
-	elif ! ${DAEMON_UTIL} check-config ; then
-		eerror "Incomplete configuration, will not run."
-		return 1
-	fi
-
-	local daemon retval=0 optsvar started_daemons daemon_opts
-
-	for daemon in $(${DAEMON_UTIL} list-start-daemons); do
-		optsvar="$(printf "${daemon}_OPTS" | tr - _ | LC_ALL=C tr '[:lower:]' '[:upper:]')"
-
-		case "${daemon#ganeti-}" in
-			masterd|rapi|luxid) is_master || continue;;
-		esac
-
-		eval daemon_opts=\"\$\{${optsvar}\}\"
-
-		ebegin "Starting ${daemon}"
-		eindent
-		veinfo ${DAEMON_UTIL} start ${daemon} ${GANETI_OPTS} ${daemon_opts}
-		${DAEMON_UTIL} start ${daemon} ${GANETI_OPTS} ${daemon_opts} || retval=${?}
-
-		if [ ${retval} != 0  ] && [ -n "${started_daemons}" ]; then
-			case ${daemon} in
-				*-kvmd) retval=0; ewarn "Failed to start kvmd, continuing anyway";;
-				*)
-					eerror "Stopping already started daemons"
-					eindent
-					eend ${code} "$(${DAEMON_UTIL} check-exitcode ${code})"
-
-					for daemon in ${started_daemons}; do
-						ebegin "Stopping ${daemon}"
-						${DAEMON_UTIL} stop ${daemon} ${GANETI_OPTS}
-						eend ${?}
-					done
-					eoutdent; eoutdent
-					return ${retval}
-				;;
-			esac
-		fi
-		eoutdent
-		started_daemons="${started_daemons} ${daemon}"
-	done
-}
-
-stop() {
-	if ! [ -e ${DAEMON_UTIL} ]; then
-		eerror "Could not find daemon utility at ${DAEMON_UTIL}"
-		return 1
-	fi
-
-	local daemon
-
-	for daemon in $(${DAEMON_UTIL} list-stop-daemons) ; do \
-		case "${daemon#ganeti-}" in
-			masterd|rapi|luxid|wconfd) is_master || continue;;
-		esac
-		${DAEMON_UTIL} stop ${daemon} ${GANETI_OPTS}
-	done
-}
-
-# vim:ft=gentoo-init-d:ts=4:sts=4:sw=4:noet:

diff --git a/app-emulation/ganeti/files/ganeti.initd-r6 b/app-emulation/ganeti/files/ganeti.initd-r6
deleted file mode 100644
index eb5843ef0084..000000000000
--- a/app-emulation/ganeti/files/ganeti.initd-r6
+++ /dev/null
@@ -1,108 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-extra_commands="forcestart is_master"
-
-depend() {
-	need localmount logger
-	after bootmisc sshd
-	use net
-}
-
-DAEMON_UTIL="/usr/lib/ganeti/daemon-util"
-readonly LOCALSTATEDIR=${LOCALSTATEDIR:-${GANETI_ROOTDIR:-}/var}
-readonly SYSCONFDIR=${SYSCONFDIR:-${GANETI_ROOTDIR:-}/etc}
-readonly PKGLIBDIR=/usr/lib64/ganeti
-readonly LOG_DIR="$LOCALSTATEDIR/log/ganeti"
-readonly RUN_DIR="/run/ganeti"
-readonly DATA_DIR="$LOCALSTATEDIR/lib/ganeti"
-readonly CONF_DIR="$SYSCONFDIR/ganeti"
-
-is_master() {
-	[ -z "${ganeti_master}" ] && ganeti_master="$(gnt-cluster getmaster)"
-	[ -z "${local_hostname}" ] && local_hostname="$(hostname -f)"
-	[ "${ganeti_master}" = "${local_hostname}" ]
-}
-
-# This exists specifically for restarting a 2-node cluster where quorum might
-# not be available.
-forcestart() {
-	ewarn "Forcing non-quorum Ganeti master start"
-	GANETI_WCONFD_OPTS="${GANETI_WCONFD_OPTS} --no-voting --yes-do-it"
-	GANETI_LUXID_OPTS="${GANETI_LUXID_OPTS} --no-voting --yes-do-it"
-	GANETI_MASTERD_OPTS="${GANETI_LUXID_OPTS} --no-voting --yes-do-it"
-	export GANETI_WCONFD_OPTS GANETI_LUXID_OPTS GANETI_MASTERD_OPTS
-	start
-}
-
-start() {
-	if ! [ -e ${DAEMON_UTIL} ]; then
-		eerror "Could not find daemon utility at ${DAEMON_UTIL}"
-		return 1
-	elif ! ${DAEMON_UTIL} check-config ; then
-		eerror "Incomplete configuration, will not run."
-		return 1
-	fi
-
-	local daemon retval=0 optsvar started_daemons daemon_opts
-
-	daemons_to_start=$(${DAEMON_UTIL} list-start-daemons)
-	veinfo "Daemons to start: "${daemons_to_start}
-
-	for daemon in $daemons_to_start ; do
-		optsvar="$(printf "${daemon}_OPTS" | tr - _ | LC_ALL=C tr '[:lower:]' '[:upper:]')"
-
-		case "${daemon#ganeti-}" in
-			masterd|rapi|luxid|wconfd) is_master || continue;;
-		esac
-
-		eval daemon_opts=\"\$\{${optsvar}\}\"
-
-		ebegin "Starting ${daemon}"
-		eindent
-		veinfo ${DAEMON_UTIL} start ${daemon} ${GANETI_OPTS} ${daemon_opts}
-		${DAEMON_UTIL} start ${daemon} ${GANETI_OPTS} ${daemon_opts} || retval=${?}
-
-		if [ ${retval} != 0  ] && [ -n "${started_daemons}" ]; then
-			case ${daemon} in
-				*-kvmd) retval=0; ewarn "Failed to start kvmd, continuing anyway";;
-				*)
-					eerror "Stopping already started daemons"
-					eindent
-					eend ${code} "$(${DAEMON_UTIL} check-exitcode ${code})"
-
-					for daemon in ${started_daemons}; do
-						ebegin "Stopping ${daemon}"
-						${DAEMON_UTIL} stop ${daemon} ${GANETI_OPTS}
-						eend ${?}
-					done
-					eoutdent; eoutdent
-					return ${retval}
-				;;
-			esac
-		fi
-		eoutdent
-		started_daemons="${started_daemons} ${daemon}"
-	done
-}
-
-stop() {
-	if ! [ -e ${DAEMON_UTIL} ]; then
-		eerror "Could not find daemon utility at ${DAEMON_UTIL}"
-		return 1
-	fi
-
-	local daemon
-	daemons_to_stop=$(${DAEMON_UTIL} list-stop-daemons)
-	veinfo "Daemons to stop: "${daemons_to_stop}
-
-	for daemon in $daemons_to_stop ; do
-		case "${daemon#ganeti-}" in
-			masterd|rapi|luxid|wconfd) is_master || continue;;
-		esac
-		${DAEMON_UTIL} stop ${daemon} ${GANETI_OPTS}
-	done
-}
-
-# vim:ft=gentoo-init-d:ts=4:sts=4:sw=4:noet:

diff --git a/app-emulation/ganeti/ganeti-3.0.2-r2.ebuild b/app-emulation/ganeti/ganeti-3.0.2-r2.ebuild
deleted file mode 100644
index ea66aef7fbf0..000000000000
--- a/app-emulation/ganeti/ganeti-3.0.2-r2.ebuild
+++ /dev/null
@@ -1,413 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-# As of 3.0.2, Upstream does NOT yet support newer than python3.8
-PYTHON_COMPAT=(python3_{7..8})
-PYTHON_REQ_USE="ipv6(+)?"
-
-inherit autotools bash-completion-r1 python-single-r1 tmpfiles
-
-MY_PV="${PV/_rc/~rc}"
-MY_PV="${MY_PV/_beta/~beta}"
-MY_P="${PN}-${MY_PV}"
-SERIES="3.0"
-
-if [[ ${PV} =~ [9]{4,} ]] ; then
-	EGIT_REPO_URI="https://github.com/ganeti/ganeti"
-	EGIT_BRANCH="stable-$SERIES"
-	inherit git-r3
-	PATCHES=()
-else
-	DEBIAN_PV="${PV}"
-	#http://deb.debian.org/debian/pool/main/g/ganeti/ganeti_3.0.1-2.debian.tar.xz
-	DEBIAN_PATCH=1
-	SRC_URI="https://github.com/ganeti/ganeti/releases/download/v${PV}/${P}.tar.gz"
-	[[ -n "${DEBIAN_PATCH}" ]] && SRC_URI+=" mirror://debian/pool/main/${PN:0:1}/${PN}/${PN}_${DEBIAN_PV}-${DEBIAN_PATCH}.debian.tar.xz"
-	KEYWORDS="~amd64 ~x86"
-	PATCHES=(
-		"${WORKDIR}"/debian/patches/0001-verify-warn-about-weak-certs.patch
-		"${WORKDIR}"/debian/patches/0002-remove-hardcoded-libc-linux-constants.patch
-	)
-fi
-
-DESCRIPTION="Ganeti is a virtual server management software tool"
-HOMEPAGE="http://www.ganeti.org/"
-
-LICENSE="GPL-2"
-SLOT="0"
-IUSE="drbd experimental ipv6 kvm lxc monitoring rbd syslog test xen restricted-commands"
-RESTRICT="!test? ( test )"
-
-REQUIRED_USE="|| ( kvm xen lxc )
-	test? ( ipv6 )
-	kvm? ( || ( amd64 x86 ) )
-	${PYTHON_REQUIRED_USE}"
-
-USER_PREFIX="${GANETI_USER_PREFIX:-"gnt-"}"
-GROUP_PREFIX="${GANETI_GROUP_PREFIX:-"${USER_PREFIX}"}"
-
-DEPEND="
-	dev-libs/openssl:0
-	$(python_gen_cond_dep '
-		dev-python/paramiko[${PYTHON_USEDEP}]
-		dev-python/pyopenssl[${PYTHON_USEDEP}]
-		dev-python/simplejson[${PYTHON_USEDEP}]
-		dev-python/pyparsing[${PYTHON_USEDEP}]
-		dev-python/pyinotify[${PYTHON_USEDEP}]
-		dev-python/pycurl[${PYTHON_USEDEP}]
-		dev-python/ipaddr[${PYTHON_USEDEP}]
-		dev-python/bitarray[${PYTHON_USEDEP}]
-		dev-python/docutils[${PYTHON_USEDEP}]
-		dev-python/fdsend[${PYTHON_USEDEP}]
-	')
-	|| (
-		net-misc/iputils[arping]
-		net-analyzer/arping
-	)
-	net-analyzer/fping
-	net-misc/bridge-utils
-	net-misc/curl[ssl]
-	net-misc/openssh
-	net-misc/socat
-	sys-apps/iproute2
-	sys-fs/lvm2
-	>=sys-apps/baselayout-2.0
-	>=dev-lang/ghc-8.0:0=
-	<dev-lang/ghc-9:0=
-	>=dev-haskell/cabal-3:0=
-	dev-haskell/cabal-install:0=
-	>=dev-haskell/mtl-2.1.1:0=
-	>=dev-haskell/old-time-1.1.0.0:0=
-	>=dev-haskell/random-1.0.1.1:0=
-	>=dev-haskell/text-0.11.1.13:0=
-	>=dev-haskell/transformers-0.3.0.0:0=
-
-	>=dev-haskell/attoparsec-0.10.1.1:0=
-	<dev-haskell/attoparsec-0.14:0
-	>=dev-haskell/base64-bytestring-1.0.0.1:0=
-	<dev-haskell/base64-bytestring-1.1:0=
-	>=dev-haskell/cryptonite-0.23:0=
-	>=dev-haskell/curl-1.3.7:0=
-	<dev-haskell/curl-1.4:0=
-	>=dev-haskell/hinotify-0.3.2:0=
-	<dev-haskell/hinotify-0.5:0=
-	>=dev-haskell/hslogger-1.1.4:0=
-	<dev-haskell/hslogger-1.4:0=
-	>=dev-haskell/json-0.5:0=
-	<dev-haskell/json-1.0:0=
-	>=dev-haskell/lens-3.10:0=
-	<dev-haskell/lens-5.0:0=
-	>=dev-haskell/lifted-base-0.2.0.3:0=
-	<dev-haskell/lifted-base-0.3:0=
-	>=dev-haskell/monad-control-0.3.1.3:0=
-	<dev-haskell/monad-control-1.1:0=
-	>=dev-haskell/parallel-3.2.0.2:3=
-	<dev-haskell/parallel-3.3:3=
-	>=dev-haskell/regex-pcre-0.94.2:0=
-	<dev-haskell/regex-pcre-0.96:0=
-	>=dev-haskell/temporary-1.1.2.3:0=
-	<dev-haskell/temporary-1.4:0=
-	>=dev-haskell/transformers-base-0.4.1:0=
-	<dev-haskell/transformers-base-0.5:0=
-	>=dev-haskell/utf8-string-0.3.7:0=
-	>=dev-haskell/zlib-0.5.3.3:0=
-	<dev-haskell/zlib-0.7:0=
-
-	>=dev-haskell/network-2.9:0=
-	<dev-haskell/network-3.2:0=
-	>=dev-haskell/network-bsd-2.8:0=
-	<dev-haskell/network-bsd-2.9:0=
-
-	>=dev-haskell/psqueue-1.1:0=
-	<dev-haskell/psqueue-1.2:0=
-	>=dev-haskell/snap-core-1.0.0:0=
-	>=dev-haskell/snap-server-1.0.0:0=
-	>=dev-haskell/case-insensitive-0.4.0.1:0=
-	<dev-haskell/case-insensitive-1.3:0=
-
-	dev-haskell/vector:0=
-	xen? ( >=app-emulation/xen-3.0 )
-	kvm? (
-		dev-python/psutil
-		app-emulation/qemu
-	)
-	lxc? ( app-containers/lxc )
-	drbd? ( sys-cluster/drbd-utils )
-	rbd? ( sys-cluster/ceph )
-	ipv6? ( net-misc/ndisc6 )
-	${PYTHON_DEPS}"
-RDEPEND="${DEPEND}"
-DEPEND+="
-	sys-devel/m4
-	app-text/pandoc
-	$(python_gen_cond_dep '
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-	media-fonts/urw-fonts
-	media-gfx/graphviz
-	test? (
-		dev-python/mock
-		dev-python/pyyaml
-		dev-haskell/haddock:0=
-		>=dev-haskell/hunit-1.2.4.2:0=
-		<dev-haskell/hunit-1.7:0=
-		>=dev-haskell/quickcheck-2.8:2=
-		<dev-haskell/quickcheck-2.14:2=
-		>=dev-haskell/test-framework-0.6:0=
-		<dev-haskell/test-framework-0.9:0=
-		>=dev-haskell/test-framework-hunit-0.2.7:0=
-		<dev-haskell/test-framework-hunit-0.4:0=
-		>=dev-haskell/test-framework-quickcheck2-0.2.12.1:0=
-		<dev-haskell/test-framework-quickcheck2-0.4:0=
-		sys-apps/fakeroot
-		>=net-misc/socat-1.7
-		dev-util/shelltestrunner
-	)"
-
-PATCHES+=(
-	#"${FILESDIR}/${PN}-2.12-start-stop-daemon-args.patch"
-	#"${FILESDIR}/${PN}-2.11-add-pgrep.patch"
-	#"${FILESDIR}/${PN}-2.15-daemon-util.patch"
-
-	"${FILESDIR}/${PN}-2.9-disable-root-tests.patch"
-	"${FILESDIR}/${PN}-2.9-skip-cli-test.patch"
-	"${FILESDIR}/${PN}-2.10-rundir.patch"
-	"${FILESDIR}/${PN}-2.12-qemu-enable-kvm.patch"
-	"${FILESDIR}/${PN}-2.11-tests.patch"
-	"${FILESDIR}/${PN}-lockdir.patch"
-	"${FILESDIR}/${PN}-2.11-dont-nest-libdir.patch"
-	"${FILESDIR}/${PN}-2.11-dont-print-man-help.patch"
-	"${FILESDIR}/${PN}-2.11-daemon-util-tests.patch"
-	#"${FILESDIR}/${PN}-2.13-process_unittest.patch"
-	#"${FILESDIR}/${PN}-2.15-python-mock.patch"
-	#"${FILESDIR}/${PN}-2.15.2-remove-sandbox-failing-tests.patch"
-	"${FILESDIR}/${PN}-2.16-noded-must-run-as-root.patch"
-	"${FILESDIR}/${PN}-2.16-kvmd-run-as-daemon-user.patch"
-	"${FILESDIR}/${PN}-2.15-dont-invert-return-values-for-man-warnings.patch"
-	#"${FILESDIR}/fix_ftbfs_with_sphinx_1.4"
-	#"${FILESDIR}/${PN}-2.17-relax-deps.patch"
-	##"${FILESDIR}"/${PN}-3.0.1-template_haskell.patch
-	##"${FILESDIR}"/${PN}-3.0.1-docfixes.patch
-	##"${FILESDIR}"/${PN}-3.0.1-sphinx.patch
-	"${FILESDIR}"/${PN}-3.0.1-buildfix.patch
-	"${FILESDIR}"/${PN}-3.0.1-gentoo-infra-hacks.patch
-	"${FILESDIR}"/ganeti-3.0.2-less-sleep.patch
-	"${FILESDIR}"/${PN}-3.0.2-gentoo-daemon-util-part2.patch
-)
-
-S="${WORKDIR}/${MY_P}"
-
-QA_WX_LOAD="
-	usr/lib*/${PN}/${SERIES}/usr/sbin/ganeti-*d
-	usr/lib*/${PN}/${SERIES}/ganeti/mon-collector
-	usr/lib*/${PN}/${SERIES}/usr/bin/htools
-"
-
-pkg_setup() {
-	local user
-	python-single-r1_pkg_setup
-
-	# Unknown if this functionality was ever used. Maybe re-introduce if issues
-	# reported.
-	#if use multiple-users; then
-	#	for user in gnt-{masterd,confd,luxid,rapi,daemons,admin}; do
-	#		enewgroup ${user}
-	#		enewuser ${user} -1 -1 -1 ${user}
-	#	done
-	#fi
-}
-
-# These flags get applied in src_prepare and src_configure
-GNT_HASKELL_FLAGS="-optl -Wl,-z,relro -optl -Wl,--as-needed -Wno-unused-imports -Wno-deprecations -Wno-monomorphism-restriction"
-
-src_prepare() {
-	local testfile
-	if has_version '>=dev-lang/ghc-8.10'; then
-		# Breaks the build on 7.8
-		PATCHES+=(
-			#"${WORKDIR}"/debian/patches/ghc-7.10-compatibility.patch
-		)
-	fi
-	if use experimental; then
-		ewarn "Experimental patches have been applied! RPC between daemons with different patches applied may cause breakage!"
-		PATCHES+=(
-		)
-	fi
-
-	# Some debian patches have trailing whitespace, which trips upstream testing
-	if test -d "${WORKDIR}"/debian/patches ; then
-		sed -r -i -e 's,[[:space:]]+$,,g' "${WORKDIR}"/debian/patches/* || die "sed failed"
-	fi
-
-	eapply "${PATCHES[@]}"
-	# Upstream commits:
-	# 4c3c2ca2a97a69c0287a3d23e064bc17978105eb
-	# 24618882737fd7c189adf99f4acc767d48f572c3
-	sed -i \
-		-e '/QuickCheck/s,< 2.8,< 2.8.3,g' \
-		cabal/ganeti.template.cabal
-	# Neuter -Werror
-	sed -i \
-		-e '/^if DEVELOPER_MODE/,/^endif/s/-Werror//' \
-		Makefile.am
-
-	# not sure why these tests are failing
-	# should remove this on next version bump if possible
-	for testfile in test/py/import-export_unittest.bash; do
-		printf '#!/bin/bash\ntrue\n' > "${testfile}"
-	done
-
-	# take the sledgehammer approach to bug #526270
-	grep -lr '/bin/sh' "${S}" | xargs -r -- sed -i 's:/bin/sh:/bin/bash:g'
-
-	eapply_user
-
-	[[ ${PV} =~ [9]{4,} ]] && ./autogen.sh
-	rm autotools/missing
-	eautoreconf
-	# Disable warnings to make it easier to see failure
-	sed -i -e "/^GHC_BYVERSION_FLAGS = @GHC_BYVERSION_FLAGS@/s/$/ ${GNT_HASKELL_FLAGS}/g" "${S}"/Makefile.in
-}
-
-src_compile() {
-	export TMPDIR="${T}/tmp"
-	mkdir -p "${TMPDIR}"
-	default
-}
-
-src_configure() {
-	# this is kind of a hack to work around the removal of the qemu-kvm wrapper
-	local kvm_arch
-
-	if use amd64; then
-		kvm_arch=x86_64
-	elif use x86; then
-		kvm_arch=i386
-	elif use kvm; then
-		die "Could not determine qemu system to use for kvm"
-	fi
-
-	econf_opt=(
-		--localstatedir=/var
-		--sharedstatedir=/var
-		--disable-symlinks
-		--with-sshd-restart-command='/etc/init.d/sshd restart'
-		#--with-export-dir=/var/lib/ganeti-storage/export # Old gentoo
-		--with-export-dir=/srv/ganeti/export # Upstream recommended
-
-		#--with-extstorage-search-path=/var/lib/ganeti-storage/ # Old Gentoo
-		--with-extstorage-search-path=/srv/ganeti/extstorage,/var/lib/ganeti-storage/ext # Upstream + Gentoo
-
-		--with-os-search-path=/srv/ganeti/os,/usr/share/${PN}/os # Upstream + Gentoo
-
-		--disable-manpages-in-doc
-		--enable-metadata
-		$(use_enable restricted-commands)
-		$(use_enable test haskell-tests)
-		#$(usex multiple-users "--with-default-user=" "" "gnt-daemons" "")
-		#$(usex multiple-users "--with-user-prefix=" "" "${USER_PREFIX}" "")
-		#$(usex multiple-users "--with-default-group=" "" "gnt-daemons" "")
-		#$(usex multiple-users "--with-group-prefix=" "" "${GROUP_PREFIX}" "")
-		$(use_enable syslog)
-		$(use_enable monitoring)
-		$(usex kvm '--with-kvm-path=' '' "/usr/bin/qemu-system-${kvm_arch}" '')
-		--with-haskell-flags="${GNT_HASKELL_FLAGS}"
-		--enable-socat-escape
-		--enable-socat-compress
-		--disable-maintainer-mode
-		# Upstream ships some weird defaults for filenames
-		--with-xen-kernel=/boot/kernel
-		--with-kvm-kernel=/boot/kernel
-		--with-xen-initrd=/boot/initramfs
-		--with-kvm-initrd=/boot/initramfs
-
-		# Force this split haskell module
-		ENABLE_NETWORK_BSD=1
-	)
-	econf "${econf_opt[@]}"
-}
-
-src_compile() {
-	emake ENABLE_MANPAGES="" MAN_HAS_WARNINGS=""
-}
-
-src_install() {
-	emake V=1 DESTDIR="${D}" ENABLE_MANPAGES="" MAN_HAS_WARNINGS="" install
-
-	newinitd "${FILESDIR}"/ganeti.initd-r6 ${PN}
-	newconfd "${FILESDIR}"/ganeti.confd-r5 ${PN}
-
-	if use kvm; then
-		newinitd "${FILESDIR}"/ganeti-kvm-poweroff.initd ganeti-kvm-poweroff
-		newconfd "${FILESDIR}"/ganeti-kvm-poweroff.confd ganeti-kvm-poweroff
-	fi
-
-	# ganeti installs it's own docs in a generic location
-	rm -rf "${D}"/{usr/share/doc/${PN},run}
-
-	sed -i "s:/usr/$(get_libdir)/${PN}/tools/burnin:burnin:" doc/examples/bash_completion
-	newbashcomp doc/examples/bash_completion gnt-instance
-	bashcomp_alias gnt-instance burnin ganeti-{cleaner,confd} \
-		h{space,check,scan,info,ail,arep,roller,squeeze,bal} \
-		gnt-{os,job,filter,debug,storage,group,node,network,backup,cluster}
-
-	use monitoring && bashcomp_alias gnt-instance mon-collector
-
-	dodoc INSTALL UPGRADE NEWS README doc/*.rst
-
-	docinto html
-	dodoc -r doc/html/*
-
-	docinto examples
-	dodoc doc/examples/{ganeti.cron,gnt-config-backup} doc/examples/*.ocf
-
-	docinto examples/hooks
-	dodoc doc/examples/hooks/{ipsec,ethers}
-
-	insinto /etc/cron.d
-	newins doc/examples/ganeti.cron ${PN}
-
-	insinto /etc/logrotate.d
-	newins doc/examples/ganeti.logrotate ${PN}
-
-	newtmpfiles "${FILESDIR}"/ganeti-tmpfilesd ${PN}.conf
-
-	keepdir /var/log/${PN}/
-	keepdir /usr/share/${PN}/${SERIES}/os/
-	# These are the older Gentoo paths
-	keepdir /var/lib/ganeti-storage/{export,file,shared}/
-
-	# This is handled by tmpfiles. You cannot use keepdir here as Ganeti refuses to have other files in it!
-	rmdir "${D}"/var/lib/ganeti || true
-
-	dosym ${SERIES} "/usr/share/${PN}/default"
-	dosym ${SERIES} "/usr/$(get_libdir)/${PN}/default"
-
-	python_fix_shebang "${ED}" "${D}"/usr/"$(get_libdir)"/${PN}/${SERIES}
-
-	# Be opinionated, this is the paths that upstream suggests and uses as defaults in configure.
-	# ganeti-tmpfilesd will ensure they are created
-	touch "${D}"/etc/ganeti/file-storage-paths
-	echo /srv/ganeti/file-storage >>"${D}"/etc/ganeti/file-storage-paths
-	echo /srv/ganeti/shared-file-storage >>"${D}"/etc/ganeti/file-storage-paths
-}
-
-pkg_postinst() {
-	if use multiple-users; then
-		elog "You have enable multiple user support, the users for this must"
-		elog "be created. You can use the provided tool for this, which is"
-		elog "located at:"
-		elog "    /usr/$(get_libdir)/${PN}/tools/users-setup"
-	fi
-}
-
-src_test() {
-	# locale is used in some of the doc checks
-	export LC_ALL=C
-	PATH="${S}/scripts:${S}/src:${PATH}" \
-	TMPDIR="/tmp" \
-	LC_ALL=C \
-	GANETI_MASTER="$(hostname -f)" \
-	emake check
-}

diff --git a/app-emulation/ganeti/ganeti-3.0.9999.ebuild b/app-emulation/ganeti/ganeti-3.0.9999.ebuild
deleted file mode 100644
index ea66aef7fbf0..000000000000
--- a/app-emulation/ganeti/ganeti-3.0.9999.ebuild
+++ /dev/null
@@ -1,413 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-# As of 3.0.2, Upstream does NOT yet support newer than python3.8
-PYTHON_COMPAT=(python3_{7..8})
-PYTHON_REQ_USE="ipv6(+)?"
-
-inherit autotools bash-completion-r1 python-single-r1 tmpfiles
-
-MY_PV="${PV/_rc/~rc}"
-MY_PV="${MY_PV/_beta/~beta}"
-MY_P="${PN}-${MY_PV}"
-SERIES="3.0"
-
-if [[ ${PV} =~ [9]{4,} ]] ; then
-	EGIT_REPO_URI="https://github.com/ganeti/ganeti"
-	EGIT_BRANCH="stable-$SERIES"
-	inherit git-r3
-	PATCHES=()
-else
-	DEBIAN_PV="${PV}"
-	#http://deb.debian.org/debian/pool/main/g/ganeti/ganeti_3.0.1-2.debian.tar.xz
-	DEBIAN_PATCH=1
-	SRC_URI="https://github.com/ganeti/ganeti/releases/download/v${PV}/${P}.tar.gz"
-	[[ -n "${DEBIAN_PATCH}" ]] && SRC_URI+=" mirror://debian/pool/main/${PN:0:1}/${PN}/${PN}_${DEBIAN_PV}-${DEBIAN_PATCH}.debian.tar.xz"
-	KEYWORDS="~amd64 ~x86"
-	PATCHES=(
-		"${WORKDIR}"/debian/patches/0001-verify-warn-about-weak-certs.patch
-		"${WORKDIR}"/debian/patches/0002-remove-hardcoded-libc-linux-constants.patch
-	)
-fi
-
-DESCRIPTION="Ganeti is a virtual server management software tool"
-HOMEPAGE="http://www.ganeti.org/"
-
-LICENSE="GPL-2"
-SLOT="0"
-IUSE="drbd experimental ipv6 kvm lxc monitoring rbd syslog test xen restricted-commands"
-RESTRICT="!test? ( test )"
-
-REQUIRED_USE="|| ( kvm xen lxc )
-	test? ( ipv6 )
-	kvm? ( || ( amd64 x86 ) )
-	${PYTHON_REQUIRED_USE}"
-
-USER_PREFIX="${GANETI_USER_PREFIX:-"gnt-"}"
-GROUP_PREFIX="${GANETI_GROUP_PREFIX:-"${USER_PREFIX}"}"
-
-DEPEND="
-	dev-libs/openssl:0
-	$(python_gen_cond_dep '
-		dev-python/paramiko[${PYTHON_USEDEP}]
-		dev-python/pyopenssl[${PYTHON_USEDEP}]
-		dev-python/simplejson[${PYTHON_USEDEP}]
-		dev-python/pyparsing[${PYTHON_USEDEP}]
-		dev-python/pyinotify[${PYTHON_USEDEP}]
-		dev-python/pycurl[${PYTHON_USEDEP}]
-		dev-python/ipaddr[${PYTHON_USEDEP}]
-		dev-python/bitarray[${PYTHON_USEDEP}]
-		dev-python/docutils[${PYTHON_USEDEP}]
-		dev-python/fdsend[${PYTHON_USEDEP}]
-	')
-	|| (
-		net-misc/iputils[arping]
-		net-analyzer/arping
-	)
-	net-analyzer/fping
-	net-misc/bridge-utils
-	net-misc/curl[ssl]
-	net-misc/openssh
-	net-misc/socat
-	sys-apps/iproute2
-	sys-fs/lvm2
-	>=sys-apps/baselayout-2.0
-	>=dev-lang/ghc-8.0:0=
-	<dev-lang/ghc-9:0=
-	>=dev-haskell/cabal-3:0=
-	dev-haskell/cabal-install:0=
-	>=dev-haskell/mtl-2.1.1:0=
-	>=dev-haskell/old-time-1.1.0.0:0=
-	>=dev-haskell/random-1.0.1.1:0=
-	>=dev-haskell/text-0.11.1.13:0=
-	>=dev-haskell/transformers-0.3.0.0:0=
-
-	>=dev-haskell/attoparsec-0.10.1.1:0=
-	<dev-haskell/attoparsec-0.14:0
-	>=dev-haskell/base64-bytestring-1.0.0.1:0=
-	<dev-haskell/base64-bytestring-1.1:0=
-	>=dev-haskell/cryptonite-0.23:0=
-	>=dev-haskell/curl-1.3.7:0=
-	<dev-haskell/curl-1.4:0=
-	>=dev-haskell/hinotify-0.3.2:0=
-	<dev-haskell/hinotify-0.5:0=
-	>=dev-haskell/hslogger-1.1.4:0=
-	<dev-haskell/hslogger-1.4:0=
-	>=dev-haskell/json-0.5:0=
-	<dev-haskell/json-1.0:0=
-	>=dev-haskell/lens-3.10:0=
-	<dev-haskell/lens-5.0:0=
-	>=dev-haskell/lifted-base-0.2.0.3:0=
-	<dev-haskell/lifted-base-0.3:0=
-	>=dev-haskell/monad-control-0.3.1.3:0=
-	<dev-haskell/monad-control-1.1:0=
-	>=dev-haskell/parallel-3.2.0.2:3=
-	<dev-haskell/parallel-3.3:3=
-	>=dev-haskell/regex-pcre-0.94.2:0=
-	<dev-haskell/regex-pcre-0.96:0=
-	>=dev-haskell/temporary-1.1.2.3:0=
-	<dev-haskell/temporary-1.4:0=
-	>=dev-haskell/transformers-base-0.4.1:0=
-	<dev-haskell/transformers-base-0.5:0=
-	>=dev-haskell/utf8-string-0.3.7:0=
-	>=dev-haskell/zlib-0.5.3.3:0=
-	<dev-haskell/zlib-0.7:0=
-
-	>=dev-haskell/network-2.9:0=
-	<dev-haskell/network-3.2:0=
-	>=dev-haskell/network-bsd-2.8:0=
-	<dev-haskell/network-bsd-2.9:0=
-
-	>=dev-haskell/psqueue-1.1:0=
-	<dev-haskell/psqueue-1.2:0=
-	>=dev-haskell/snap-core-1.0.0:0=
-	>=dev-haskell/snap-server-1.0.0:0=
-	>=dev-haskell/case-insensitive-0.4.0.1:0=
-	<dev-haskell/case-insensitive-1.3:0=
-
-	dev-haskell/vector:0=
-	xen? ( >=app-emulation/xen-3.0 )
-	kvm? (
-		dev-python/psutil
-		app-emulation/qemu
-	)
-	lxc? ( app-containers/lxc )
-	drbd? ( sys-cluster/drbd-utils )
-	rbd? ( sys-cluster/ceph )
-	ipv6? ( net-misc/ndisc6 )
-	${PYTHON_DEPS}"
-RDEPEND="${DEPEND}"
-DEPEND+="
-	sys-devel/m4
-	app-text/pandoc
-	$(python_gen_cond_dep '
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-	media-fonts/urw-fonts
-	media-gfx/graphviz
-	test? (
-		dev-python/mock
-		dev-python/pyyaml
-		dev-haskell/haddock:0=
-		>=dev-haskell/hunit-1.2.4.2:0=
-		<dev-haskell/hunit-1.7:0=
-		>=dev-haskell/quickcheck-2.8:2=
-		<dev-haskell/quickcheck-2.14:2=
-		>=dev-haskell/test-framework-0.6:0=
-		<dev-haskell/test-framework-0.9:0=
-		>=dev-haskell/test-framework-hunit-0.2.7:0=
-		<dev-haskell/test-framework-hunit-0.4:0=
-		>=dev-haskell/test-framework-quickcheck2-0.2.12.1:0=
-		<dev-haskell/test-framework-quickcheck2-0.4:0=
-		sys-apps/fakeroot
-		>=net-misc/socat-1.7
-		dev-util/shelltestrunner
-	)"
-
-PATCHES+=(
-	#"${FILESDIR}/${PN}-2.12-start-stop-daemon-args.patch"
-	#"${FILESDIR}/${PN}-2.11-add-pgrep.patch"
-	#"${FILESDIR}/${PN}-2.15-daemon-util.patch"
-
-	"${FILESDIR}/${PN}-2.9-disable-root-tests.patch"
-	"${FILESDIR}/${PN}-2.9-skip-cli-test.patch"
-	"${FILESDIR}/${PN}-2.10-rundir.patch"
-	"${FILESDIR}/${PN}-2.12-qemu-enable-kvm.patch"
-	"${FILESDIR}/${PN}-2.11-tests.patch"
-	"${FILESDIR}/${PN}-lockdir.patch"
-	"${FILESDIR}/${PN}-2.11-dont-nest-libdir.patch"
-	"${FILESDIR}/${PN}-2.11-dont-print-man-help.patch"
-	"${FILESDIR}/${PN}-2.11-daemon-util-tests.patch"
-	#"${FILESDIR}/${PN}-2.13-process_unittest.patch"
-	#"${FILESDIR}/${PN}-2.15-python-mock.patch"
-	#"${FILESDIR}/${PN}-2.15.2-remove-sandbox-failing-tests.patch"
-	"${FILESDIR}/${PN}-2.16-noded-must-run-as-root.patch"
-	"${FILESDIR}/${PN}-2.16-kvmd-run-as-daemon-user.patch"
-	"${FILESDIR}/${PN}-2.15-dont-invert-return-values-for-man-warnings.patch"
-	#"${FILESDIR}/fix_ftbfs_with_sphinx_1.4"
-	#"${FILESDIR}/${PN}-2.17-relax-deps.patch"
-	##"${FILESDIR}"/${PN}-3.0.1-template_haskell.patch
-	##"${FILESDIR}"/${PN}-3.0.1-docfixes.patch
-	##"${FILESDIR}"/${PN}-3.0.1-sphinx.patch
-	"${FILESDIR}"/${PN}-3.0.1-buildfix.patch
-	"${FILESDIR}"/${PN}-3.0.1-gentoo-infra-hacks.patch
-	"${FILESDIR}"/ganeti-3.0.2-less-sleep.patch
-	"${FILESDIR}"/${PN}-3.0.2-gentoo-daemon-util-part2.patch
-)
-
-S="${WORKDIR}/${MY_P}"
-
-QA_WX_LOAD="
-	usr/lib*/${PN}/${SERIES}/usr/sbin/ganeti-*d
-	usr/lib*/${PN}/${SERIES}/ganeti/mon-collector
-	usr/lib*/${PN}/${SERIES}/usr/bin/htools
-"
-
-pkg_setup() {
-	local user
-	python-single-r1_pkg_setup
-
-	# Unknown if this functionality was ever used. Maybe re-introduce if issues
-	# reported.
-	#if use multiple-users; then
-	#	for user in gnt-{masterd,confd,luxid,rapi,daemons,admin}; do
-	#		enewgroup ${user}
-	#		enewuser ${user} -1 -1 -1 ${user}
-	#	done
-	#fi
-}
-
-# These flags get applied in src_prepare and src_configure
-GNT_HASKELL_FLAGS="-optl -Wl,-z,relro -optl -Wl,--as-needed -Wno-unused-imports -Wno-deprecations -Wno-monomorphism-restriction"
-
-src_prepare() {
-	local testfile
-	if has_version '>=dev-lang/ghc-8.10'; then
-		# Breaks the build on 7.8
-		PATCHES+=(
-			#"${WORKDIR}"/debian/patches/ghc-7.10-compatibility.patch
-		)
-	fi
-	if use experimental; then
-		ewarn "Experimental patches have been applied! RPC between daemons with different patches applied may cause breakage!"
-		PATCHES+=(
-		)
-	fi
-
-	# Some debian patches have trailing whitespace, which trips upstream testing
-	if test -d "${WORKDIR}"/debian/patches ; then
-		sed -r -i -e 's,[[:space:]]+$,,g' "${WORKDIR}"/debian/patches/* || die "sed failed"
-	fi
-
-	eapply "${PATCHES[@]}"
-	# Upstream commits:
-	# 4c3c2ca2a97a69c0287a3d23e064bc17978105eb
-	# 24618882737fd7c189adf99f4acc767d48f572c3
-	sed -i \
-		-e '/QuickCheck/s,< 2.8,< 2.8.3,g' \
-		cabal/ganeti.template.cabal
-	# Neuter -Werror
-	sed -i \
-		-e '/^if DEVELOPER_MODE/,/^endif/s/-Werror//' \
-		Makefile.am
-
-	# not sure why these tests are failing
-	# should remove this on next version bump if possible
-	for testfile in test/py/import-export_unittest.bash; do
-		printf '#!/bin/bash\ntrue\n' > "${testfile}"
-	done
-
-	# take the sledgehammer approach to bug #526270
-	grep -lr '/bin/sh' "${S}" | xargs -r -- sed -i 's:/bin/sh:/bin/bash:g'
-
-	eapply_user
-
-	[[ ${PV} =~ [9]{4,} ]] && ./autogen.sh
-	rm autotools/missing
-	eautoreconf
-	# Disable warnings to make it easier to see failure
-	sed -i -e "/^GHC_BYVERSION_FLAGS = @GHC_BYVERSION_FLAGS@/s/$/ ${GNT_HASKELL_FLAGS}/g" "${S}"/Makefile.in
-}
-
-src_compile() {
-	export TMPDIR="${T}/tmp"
-	mkdir -p "${TMPDIR}"
-	default
-}
-
-src_configure() {
-	# this is kind of a hack to work around the removal of the qemu-kvm wrapper
-	local kvm_arch
-
-	if use amd64; then
-		kvm_arch=x86_64
-	elif use x86; then
-		kvm_arch=i386
-	elif use kvm; then
-		die "Could not determine qemu system to use for kvm"
-	fi
-
-	econf_opt=(
-		--localstatedir=/var
-		--sharedstatedir=/var
-		--disable-symlinks
-		--with-sshd-restart-command='/etc/init.d/sshd restart'
-		#--with-export-dir=/var/lib/ganeti-storage/export # Old gentoo
-		--with-export-dir=/srv/ganeti/export # Upstream recommended
-
-		#--with-extstorage-search-path=/var/lib/ganeti-storage/ # Old Gentoo
-		--with-extstorage-search-path=/srv/ganeti/extstorage,/var/lib/ganeti-storage/ext # Upstream + Gentoo
-
-		--with-os-search-path=/srv/ganeti/os,/usr/share/${PN}/os # Upstream + Gentoo
-
-		--disable-manpages-in-doc
-		--enable-metadata
-		$(use_enable restricted-commands)
-		$(use_enable test haskell-tests)
-		#$(usex multiple-users "--with-default-user=" "" "gnt-daemons" "")
-		#$(usex multiple-users "--with-user-prefix=" "" "${USER_PREFIX}" "")
-		#$(usex multiple-users "--with-default-group=" "" "gnt-daemons" "")
-		#$(usex multiple-users "--with-group-prefix=" "" "${GROUP_PREFIX}" "")
-		$(use_enable syslog)
-		$(use_enable monitoring)
-		$(usex kvm '--with-kvm-path=' '' "/usr/bin/qemu-system-${kvm_arch}" '')
-		--with-haskell-flags="${GNT_HASKELL_FLAGS}"
-		--enable-socat-escape
-		--enable-socat-compress
-		--disable-maintainer-mode
-		# Upstream ships some weird defaults for filenames
-		--with-xen-kernel=/boot/kernel
-		--with-kvm-kernel=/boot/kernel
-		--with-xen-initrd=/boot/initramfs
-		--with-kvm-initrd=/boot/initramfs
-
-		# Force this split haskell module
-		ENABLE_NETWORK_BSD=1
-	)
-	econf "${econf_opt[@]}"
-}
-
-src_compile() {
-	emake ENABLE_MANPAGES="" MAN_HAS_WARNINGS=""
-}
-
-src_install() {
-	emake V=1 DESTDIR="${D}" ENABLE_MANPAGES="" MAN_HAS_WARNINGS="" install
-
-	newinitd "${FILESDIR}"/ganeti.initd-r6 ${PN}
-	newconfd "${FILESDIR}"/ganeti.confd-r5 ${PN}
-
-	if use kvm; then
-		newinitd "${FILESDIR}"/ganeti-kvm-poweroff.initd ganeti-kvm-poweroff
-		newconfd "${FILESDIR}"/ganeti-kvm-poweroff.confd ganeti-kvm-poweroff
-	fi
-
-	# ganeti installs it's own docs in a generic location
-	rm -rf "${D}"/{usr/share/doc/${PN},run}
-
-	sed -i "s:/usr/$(get_libdir)/${PN}/tools/burnin:burnin:" doc/examples/bash_completion
-	newbashcomp doc/examples/bash_completion gnt-instance
-	bashcomp_alias gnt-instance burnin ganeti-{cleaner,confd} \
-		h{space,check,scan,info,ail,arep,roller,squeeze,bal} \
-		gnt-{os,job,filter,debug,storage,group,node,network,backup,cluster}
-
-	use monitoring && bashcomp_alias gnt-instance mon-collector
-
-	dodoc INSTALL UPGRADE NEWS README doc/*.rst
-
-	docinto html
-	dodoc -r doc/html/*
-
-	docinto examples
-	dodoc doc/examples/{ganeti.cron,gnt-config-backup} doc/examples/*.ocf
-
-	docinto examples/hooks
-	dodoc doc/examples/hooks/{ipsec,ethers}
-
-	insinto /etc/cron.d
-	newins doc/examples/ganeti.cron ${PN}
-
-	insinto /etc/logrotate.d
-	newins doc/examples/ganeti.logrotate ${PN}
-
-	newtmpfiles "${FILESDIR}"/ganeti-tmpfilesd ${PN}.conf
-
-	keepdir /var/log/${PN}/
-	keepdir /usr/share/${PN}/${SERIES}/os/
-	# These are the older Gentoo paths
-	keepdir /var/lib/ganeti-storage/{export,file,shared}/
-
-	# This is handled by tmpfiles. You cannot use keepdir here as Ganeti refuses to have other files in it!
-	rmdir "${D}"/var/lib/ganeti || true
-
-	dosym ${SERIES} "/usr/share/${PN}/default"
-	dosym ${SERIES} "/usr/$(get_libdir)/${PN}/default"
-
-	python_fix_shebang "${ED}" "${D}"/usr/"$(get_libdir)"/${PN}/${SERIES}
-
-	# Be opinionated, this is the paths that upstream suggests and uses as defaults in configure.
-	# ganeti-tmpfilesd will ensure they are created
-	touch "${D}"/etc/ganeti/file-storage-paths
-	echo /srv/ganeti/file-storage >>"${D}"/etc/ganeti/file-storage-paths
-	echo /srv/ganeti/shared-file-storage >>"${D}"/etc/ganeti/file-storage-paths
-}
-
-pkg_postinst() {
-	if use multiple-users; then
-		elog "You have enable multiple user support, the users for this must"
-		elog "be created. You can use the provided tool for this, which is"
-		elog "located at:"
-		elog "    /usr/$(get_libdir)/${PN}/tools/users-setup"
-	fi
-}
-
-src_test() {
-	# locale is used in some of the doc checks
-	export LC_ALL=C
-	PATH="${S}/scripts:${S}/src:${PATH}" \
-	TMPDIR="/tmp" \
-	LC_ALL=C \
-	GANETI_MASTER="$(hostname -f)" \
-	emake check
-}

diff --git a/app-emulation/ganeti/ganeti-3.1.9999.ebuild b/app-emulation/ganeti/ganeti-3.1.9999.ebuild
deleted file mode 100644
index 10ff7a522300..000000000000
--- a/app-emulation/ganeti/ganeti-3.1.9999.ebuild
+++ /dev/null
@@ -1,413 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-# As of 3.0.2, Upstream does NOT yet support newer than python3.8
-PYTHON_COMPAT=(python3_{7..8})
-PYTHON_REQ_USE="ipv6(+)?"
-
-inherit autotools bash-completion-r1 python-single-r1 tmpfiles
-
-MY_PV="${PV/_rc/~rc}"
-MY_PV="${MY_PV/_beta/~beta}"
-MY_P="${PN}-${MY_PV}"
-SERIES="3.1"
-
-if [[ ${PV} =~ [9]{4,} ]] ; then
-	EGIT_REPO_URI="https://github.com/ganeti/ganeti"
-	EGIT_BRANCH="master" # not branched yet
-	inherit git-r3
-	PATCHES=()
-else
-	DEBIAN_PV="${PV}"
-	#http://deb.debian.org/debian/pool/main/g/ganeti/ganeti_3.0.1-2.debian.tar.xz
-	DEBIAN_PATCH=1
-	SRC_URI="https://github.com/ganeti/ganeti/releases/download/v${PV}/${P}.tar.gz"
-	[[ -n "${DEBIAN_PATCH}" ]] && SRC_URI+=" mirror://debian/pool/main/${PN:0:1}/${PN}/${PN}_${DEBIAN_PV}-${DEBIAN_PATCH}.debian.tar.xz"
-	KEYWORDS="~amd64 ~x86"
-	PATCHES=(
-		"${WORKDIR}"/debian/patches/0001-verify-warn-about-weak-certs.patch
-		"${WORKDIR}"/debian/patches/0002-remove-hardcoded-libc-linux-constants.patch
-	)
-fi
-
-DESCRIPTION="Ganeti is a virtual server management software tool"
-HOMEPAGE="http://www.ganeti.org/"
-
-LICENSE="GPL-2"
-SLOT="0"
-IUSE="drbd experimental ipv6 kvm lxc monitoring rbd syslog test xen restricted-commands"
-RESTRICT="!test? ( test )"
-
-REQUIRED_USE="|| ( kvm xen lxc )
-	test? ( ipv6 )
-	kvm? ( || ( amd64 x86 ) )
-	${PYTHON_REQUIRED_USE}"
-
-USER_PREFIX="${GANETI_USER_PREFIX:-"gnt-"}"
-GROUP_PREFIX="${GANETI_GROUP_PREFIX:-"${USER_PREFIX}"}"
-
-DEPEND="
-	dev-libs/openssl:0
-	$(python_gen_cond_dep '
-		dev-python/paramiko[${PYTHON_USEDEP}]
-		dev-python/pyopenssl[${PYTHON_USEDEP}]
-		dev-python/simplejson[${PYTHON_USEDEP}]
-		dev-python/pyparsing[${PYTHON_USEDEP}]
-		dev-python/pyinotify[${PYTHON_USEDEP}]
-		dev-python/pycurl[${PYTHON_USEDEP}]
-		dev-python/ipaddr[${PYTHON_USEDEP}]
-		dev-python/bitarray[${PYTHON_USEDEP}]
-		dev-python/docutils[${PYTHON_USEDEP}]
-		dev-python/fdsend[${PYTHON_USEDEP}]
-	')
-	|| (
-		net-misc/iputils[arping]
-		net-analyzer/arping
-	)
-	net-analyzer/fping
-	net-misc/bridge-utils
-	net-misc/curl[ssl]
-	net-misc/openssh
-	net-misc/socat
-	sys-apps/iproute2
-	sys-fs/lvm2
-	>=sys-apps/baselayout-2.0
-	>=dev-lang/ghc-8.0:0=
-	<dev-lang/ghc-9:0=
-	>=dev-haskell/cabal-3:0=
-	dev-haskell/cabal-install:0=
-	>=dev-haskell/mtl-2.1.1:0=
-	>=dev-haskell/old-time-1.1.0.0:0=
-	>=dev-haskell/random-1.0.1.1:0=
-	>=dev-haskell/text-0.11.1.13:0=
-	>=dev-haskell/transformers-0.3.0.0:0=
-
-	>=dev-haskell/attoparsec-0.10.1.1:0=
-	<dev-haskell/attoparsec-0.14:0
-	>=dev-haskell/base64-bytestring-1.0.0.1:0=
-	<dev-haskell/base64-bytestring-1.1:0=
-	>=dev-haskell/cryptonite-0.23:0=
-	>=dev-haskell/curl-1.3.7:0=
-	<dev-haskell/curl-1.4:0=
-	>=dev-haskell/hinotify-0.3.2:0=
-	<dev-haskell/hinotify-0.5:0=
-	>=dev-haskell/hslogger-1.1.4:0=
-	<dev-haskell/hslogger-1.4:0=
-	>=dev-haskell/json-0.5:0=
-	<dev-haskell/json-1.0:0=
-	>=dev-haskell/lens-3.10:0=
-	<dev-haskell/lens-5.0:0=
-	>=dev-haskell/lifted-base-0.2.0.3:0=
-	<dev-haskell/lifted-base-0.3:0=
-	>=dev-haskell/monad-control-0.3.1.3:0=
-	<dev-haskell/monad-control-1.1:0=
-	>=dev-haskell/parallel-3.2.0.2:3=
-	<dev-haskell/parallel-3.3:3=
-	>=dev-haskell/regex-pcre-0.94.2:0=
-	<dev-haskell/regex-pcre-0.96:0=
-	>=dev-haskell/temporary-1.1.2.3:0=
-	<dev-haskell/temporary-1.4:0=
-	>=dev-haskell/transformers-base-0.4.1:0=
-	<dev-haskell/transformers-base-0.5:0=
-	>=dev-haskell/utf8-string-0.3.7:0=
-	>=dev-haskell/zlib-0.5.3.3:0=
-	<dev-haskell/zlib-0.7:0=
-
-	>=dev-haskell/network-2.9:0=
-	<dev-haskell/network-3.2:0=
-	>=dev-haskell/network-bsd-2.8:0=
-	<dev-haskell/network-bsd-2.9:0=
-
-	>=dev-haskell/psqueue-1.1:0=
-	<dev-haskell/psqueue-1.2:0=
-	>=dev-haskell/snap-core-1.0.0:0=
-	>=dev-haskell/snap-server-1.0.0:0=
-	>=dev-haskell/case-insensitive-0.4.0.1:0=
-	<dev-haskell/case-insensitive-1.3:0=
-
-	dev-haskell/vector:0=
-	xen? ( >=app-emulation/xen-3.0 )
-	kvm? (
-		dev-python/psutil
-		app-emulation/qemu
-	)
-	lxc? ( app-containers/lxc )
-	drbd? ( sys-cluster/drbd-utils )
-	rbd? ( sys-cluster/ceph )
-	ipv6? ( net-misc/ndisc6 )
-	${PYTHON_DEPS}"
-RDEPEND="${DEPEND}"
-DEPEND+="
-	sys-devel/m4
-	app-text/pandoc
-	$(python_gen_cond_dep '
-		dev-python/sphinx[${PYTHON_USEDEP}]
-	')
-	media-fonts/urw-fonts
-	media-gfx/graphviz
-	test? (
-		dev-python/mock
-		dev-python/pyyaml
-		dev-haskell/haddock:0=
-		>=dev-haskell/hunit-1.2.4.2:0=
-		<dev-haskell/hunit-1.7:0=
-		>=dev-haskell/quickcheck-2.8:2=
-		<dev-haskell/quickcheck-2.14:2=
-		>=dev-haskell/test-framework-0.6:0=
-		<dev-haskell/test-framework-0.9:0=
-		>=dev-haskell/test-framework-hunit-0.2.7:0=
-		<dev-haskell/test-framework-hunit-0.4:0=
-		>=dev-haskell/test-framework-quickcheck2-0.2.12.1:0=
-		<dev-haskell/test-framework-quickcheck2-0.4:0=
-		sys-apps/fakeroot
-		>=net-misc/socat-1.7
-		dev-util/shelltestrunner
-	)"
-
-PATCHES+=(
-	#"${FILESDIR}/${PN}-2.12-start-stop-daemon-args.patch"
-	#"${FILESDIR}/${PN}-2.11-add-pgrep.patch"
-	#"${FILESDIR}/${PN}-2.15-daemon-util.patch"
-
-	"${FILESDIR}/${PN}-2.9-disable-root-tests.patch"
-	"${FILESDIR}/${PN}-2.9-skip-cli-test.patch"
-	"${FILESDIR}/${PN}-2.10-rundir.patch"
-	"${FILESDIR}/${PN}-2.12-qemu-enable-kvm.patch"
-	"${FILESDIR}/${PN}-2.11-tests.patch"
-	"${FILESDIR}/${PN}-lockdir.patch"
-	"${FILESDIR}/${PN}-2.11-dont-nest-libdir.patch"
-	"${FILESDIR}/${PN}-2.11-dont-print-man-help.patch"
-	"${FILESDIR}/${PN}-2.11-daemon-util-tests.patch"
-	#"${FILESDIR}/${PN}-2.13-process_unittest.patch"
-	#"${FILESDIR}/${PN}-2.15-python-mock.patch"
-	#"${FILESDIR}/${PN}-2.15.2-remove-sandbox-failing-tests.patch"
-	"${FILESDIR}/${PN}-2.16-noded-must-run-as-root.patch"
-	"${FILESDIR}/${PN}-2.16-kvmd-run-as-daemon-user.patch"
-	"${FILESDIR}/${PN}-2.15-dont-invert-return-values-for-man-warnings.patch"
-	#"${FILESDIR}/fix_ftbfs_with_sphinx_1.4"
-	#"${FILESDIR}/${PN}-2.17-relax-deps.patch"
-	##"${FILESDIR}"/${PN}-3.0.1-template_haskell.patch
-	##"${FILESDIR}"/${PN}-3.0.1-docfixes.patch
-	##"${FILESDIR}"/${PN}-3.0.1-sphinx.patch
-	"${FILESDIR}"/${PN}-3.0.1-buildfix.patch
-	"${FILESDIR}"/${PN}-3.0.1-gentoo-infra-hacks.patch
-	"${FILESDIR}"/ganeti-3.0.2-less-sleep.patch
-	"${FILESDIR}"/${PN}-3.0.2-gentoo-daemon-util-part2.patch
-)
-
-S="${WORKDIR}/${MY_P}"
-
-QA_WX_LOAD="
-	usr/lib*/${PN}/${SERIES}/usr/sbin/ganeti-*d
-	usr/lib*/${PN}/${SERIES}/ganeti/mon-collector
-	usr/lib*/${PN}/${SERIES}/usr/bin/htools
-"
-
-pkg_setup() {
-	local user
-	python-single-r1_pkg_setup
-
-	# Unknown if this functionality was ever used. Maybe re-introduce if issues
-	# reported.
-	#if use multiple-users; then
-	#	for user in gnt-{masterd,confd,luxid,rapi,daemons,admin}; do
-	#		enewgroup ${user}
-	#		enewuser ${user} -1 -1 -1 ${user}
-	#	done
-	#fi
-}
-
-# These flags get applied in src_prepare and src_configure
-GNT_HASKELL_FLAGS="-optl -Wl,-z,relro -optl -Wl,--as-needed -Wno-unused-imports -Wno-deprecations -Wno-monomorphism-restriction"
-
-src_prepare() {
-	local testfile
-	if has_version '>=dev-lang/ghc-8.10'; then
-		# Breaks the build on 7.8
-		PATCHES+=(
-			#"${WORKDIR}"/debian/patches/ghc-7.10-compatibility.patch
-		)
-	fi
-	if use experimental; then
-		ewarn "Experimental patches have been applied! RPC between daemons with different patches applied may cause breakage!"
-		PATCHES+=(
-		)
-	fi
-
-	# Some debian patches have trailing whitespace, which trips upstream testing
-	if test -d "${WORKDIR}"/debian/patches ; then
-		sed -r -i -e 's,[[:space:]]+$,,g' "${WORKDIR}"/debian/patches/* || die "sed failed"
-	fi
-
-	eapply "${PATCHES[@]}"
-	# Upstream commits:
-	# 4c3c2ca2a97a69c0287a3d23e064bc17978105eb
-	# 24618882737fd7c189adf99f4acc767d48f572c3
-	sed -i \
-		-e '/QuickCheck/s,< 2.8,< 2.8.3,g' \
-		cabal/ganeti.template.cabal
-	# Neuter -Werror
-	sed -i \
-		-e '/^if DEVELOPER_MODE/,/^endif/s/-Werror//' \
-		Makefile.am
-
-	# not sure why these tests are failing
-	# should remove this on next version bump if possible
-	for testfile in test/py/import-export_unittest.bash; do
-		printf '#!/bin/bash\ntrue\n' > "${testfile}"
-	done
-
-	# take the sledgehammer approach to bug #526270
-	grep -lr '/bin/sh' "${S}" | xargs -r -- sed -i 's:/bin/sh:/bin/bash:g'
-
-	eapply_user
-
-	[[ ${PV} =~ [9]{4,} ]] && ./autogen.sh
-	rm autotools/missing
-	eautoreconf
-	# Disable warnings to make it easier to see failure
-	sed -i -e "/^GHC_BYVERSION_FLAGS = @GHC_BYVERSION_FLAGS@/s/$/ ${GNT_HASKELL_FLAGS}/g" "${S}"/Makefile.in
-}
-
-src_compile() {
-	export TMPDIR="${T}/tmp"
-	mkdir -p "${TMPDIR}"
-	default
-}
-
-src_configure() {
-	# this is kind of a hack to work around the removal of the qemu-kvm wrapper
-	local kvm_arch
-
-	if use amd64; then
-		kvm_arch=x86_64
-	elif use x86; then
-		kvm_arch=i386
-	elif use kvm; then
-		die "Could not determine qemu system to use for kvm"
-	fi
-
-	econf_opt=(
-		--localstatedir=/var
-		--sharedstatedir=/var
-		--disable-symlinks
-		--with-sshd-restart-command='/etc/init.d/sshd restart'
-		#--with-export-dir=/var/lib/ganeti-storage/export # Old gentoo
-		--with-export-dir=/srv/ganeti/export # Upstream recommended
-
-		#--with-extstorage-search-path=/var/lib/ganeti-storage/ # Old Gentoo
-		--with-extstorage-search-path=/srv/ganeti/extstorage,/var/lib/ganeti-storage/ext # Upstream + Gentoo
-
-		--with-os-search-path=/srv/ganeti/os,/usr/share/${PN}/os # Upstream + Gentoo
-
-		--disable-manpages-in-doc
-		--enable-metadata
-		$(use_enable restricted-commands)
-		$(use_enable test haskell-tests)
-		#$(usex multiple-users "--with-default-user=" "" "gnt-daemons" "")
-		#$(usex multiple-users "--with-user-prefix=" "" "${USER_PREFIX}" "")
-		#$(usex multiple-users "--with-default-group=" "" "gnt-daemons" "")
-		#$(usex multiple-users "--with-group-prefix=" "" "${GROUP_PREFIX}" "")
-		$(use_enable syslog)
-		$(use_enable monitoring)
-		$(usex kvm '--with-kvm-path=' '' "/usr/bin/qemu-system-${kvm_arch}" '')
-		--with-haskell-flags="${GNT_HASKELL_FLAGS}"
-		--enable-socat-escape
-		--enable-socat-compress
-		--disable-maintainer-mode
-		# Upstream ships some weird defaults for filenames
-		--with-xen-kernel=/boot/kernel
-		--with-kvm-kernel=/boot/kernel
-		--with-xen-initrd=/boot/initramfs
-		--with-kvm-initrd=/boot/initramfs
-
-		# Force this split haskell module
-		ENABLE_NETWORK_BSD=1
-	)
-	econf "${econf_opt[@]}"
-}
-
-src_compile() {
-	emake ENABLE_MANPAGES="" MAN_HAS_WARNINGS=""
-}
-
-src_install() {
-	emake V=1 DESTDIR="${D}" ENABLE_MANPAGES="" MAN_HAS_WARNINGS="" install
-
-	newinitd "${FILESDIR}"/ganeti.initd-r6 ${PN}
-	newconfd "${FILESDIR}"/ganeti.confd-r5 ${PN}
-
-	if use kvm; then
-		newinitd "${FILESDIR}"/ganeti-kvm-poweroff.initd ganeti-kvm-poweroff
-		newconfd "${FILESDIR}"/ganeti-kvm-poweroff.confd ganeti-kvm-poweroff
-	fi
-
-	# ganeti installs it's own docs in a generic location
-	rm -rf "${D}"/{usr/share/doc/${PN},run}
-
-	sed -i "s:/usr/$(get_libdir)/${PN}/tools/burnin:burnin:" doc/examples/bash_completion
-	newbashcomp doc/examples/bash_completion gnt-instance
-	bashcomp_alias gnt-instance burnin ganeti-{cleaner,confd} \
-		h{space,check,scan,info,ail,arep,roller,squeeze,bal} \
-		gnt-{os,job,filter,debug,storage,group,node,network,backup,cluster}
-
-	use monitoring && bashcomp_alias gnt-instance mon-collector
-
-	dodoc INSTALL UPGRADE NEWS README doc/*.rst
-
-	docinto html
-	dodoc -r doc/html/*
-
-	docinto examples
-	dodoc doc/examples/{ganeti.cron,gnt-config-backup} doc/examples/*.ocf
-
-	docinto examples/hooks
-	dodoc doc/examples/hooks/{ipsec,ethers}
-
-	insinto /etc/cron.d
-	newins doc/examples/ganeti.cron ${PN}
-
-	insinto /etc/logrotate.d
-	newins doc/examples/ganeti.logrotate ${PN}
-
-	newtmpfiles "${FILESDIR}"/ganeti-tmpfilesd ${PN}.conf
-
-	keepdir /var/log/${PN}/
-	keepdir /usr/share/${PN}/${SERIES}/os/
-	# These are the older Gentoo paths
-	keepdir /var/lib/ganeti-storage/{export,file,shared}/
-
-	# This is handled by tmpfiles. You cannot use keepdir here as Ganeti refuses to have other files in it!
-	rmdir "${D}"/var/lib/ganeti || true
-
-	dosym ${SERIES} "/usr/share/${PN}/default"
-	dosym ${SERIES} "/usr/$(get_libdir)/${PN}/default"
-
-	python_fix_shebang "${ED}" "${D}"/usr/"$(get_libdir)"/${PN}/${SERIES}
-
-	# Be opinionated, this is the paths that upstream suggests and uses as defaults in configure.
-	# ganeti-tmpfilesd will ensure they are created
-	touch "${D}"/etc/ganeti/file-storage-paths
-	echo /srv/ganeti/file-storage >>"${D}"/etc/ganeti/file-storage-paths
-	echo /srv/ganeti/shared-file-storage >>"${D}"/etc/ganeti/file-storage-paths
-}
-
-pkg_postinst() {
-	if use multiple-users; then
-		elog "You have enable multiple user support, the users for this must"
-		elog "be created. You can use the provided tool for this, which is"
-		elog "located at:"
-		elog "    /usr/$(get_libdir)/${PN}/tools/users-setup"
-	fi
-}
-
-src_test() {
-	# locale is used in some of the doc checks
-	export LC_ALL=C
-	PATH="${S}/scripts:${S}/src:${PATH}" \
-	TMPDIR="/tmp" \
-	LC_ALL=C \
-	GANETI_MASTER="$(hostname -f)" \
-	emake check
-}

diff --git a/app-emulation/ganeti/metadata.xml b/app-emulation/ganeti/metadata.xml
deleted file mode 100644
index 24d79b34bc32..000000000000
--- a/app-emulation/ganeti/metadata.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-	<maintainer type="project">
-		<email>infra@gentoo.org</email>
-		<name>Gentoo Infrastructure Team</name>
-	</maintainer>
-	<longdescription lang="en">
-	Ganeti is a cluster virtual server management software tool built on top of
-	existing virtualization technologies such as Xen or KVM and other Open
-	Source software.
-
-	Ganeti requires pre-installed virtualization software on your servers in
-	order to function. Once installed, the tool will take over the management
-	part of the virtual instances (Xen DomU), e.g. disk creation management,
-	operating system installation for these instances (in co-operation with
-	OS-specific install scripts), and startup, shutdown, failover between
-	physical systems. It has been designed to facilitate cluster management of
-	virtual servers and to provide fast and simple recovery after physical
-	failures using commodity hardware. 
-	</longdescription>
-	<use>
-		<flag name="drbd">Enable DRBD support</flag>
-		<flag name="kvm">Enable KVM support</flag>
-		<flag name="lxc">Enable Linux Containers support</flag>
-		<flag name="monitoring">Enable the ganeti monitoring daemon</flag>
-		<flag name="restricted-commands">Enable restricted commands in the node daemon</flag>
-		<flag name="rbd">Enable rados block device support via sys-cluster/ceph</flag>
-		<flag name="xen">Enable Xen support</flag>
-		<flag name="experimental">Enable experimental patches. Warning! This will break RPC within major versions if the patches applied differ!</flag>
-	</use>
-</pkgmetadata>

diff --git a/profiles/package.mask b/profiles/package.mask
index c0fe09f756fa..f0960a0a140e 100644
--- a/profiles/package.mask
+++ b/profiles/package.mask
@@ -33,10 +33,6 @@
 
 #--- END OF EXAMPLES ---
 
-# Robin H. Johnson <robbat2@gentoo.org> (2022-07-23)
-# Prepare to re-introduce into the tree
-app-emulation/ganeti
-
 # Sam James <sam@gentoo.org> (2022-07-22)
 # Monolithic mask for dev-haskell/* packages which have no reverse dependencies,
 # are broken, or severely out of date. The aim is to have the Haskell overlay


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2022-07-23 19:42 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-23 19:41 [gentoo-commits] repo/gentoo:master commit in: profiles/, app-emulation/ganeti/files/, app-emulation/ganeti/ David Seifert

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox