commit:     5c38f0da839a3acec372559f3fdc9c2708c2232c
Author:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Sat Jan  7 00:37:02 2017 +0000
Commit:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Sat Jan  7 00:37:38 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5c38f0da

app-emulation/ganeti: now with QEMU Guest Agent support (merged upstream for 
2.16, not yet released).

Package-Manager: portage-2.3.2

 ...st_agent-QEMU-Guest-Agent-sup.stable-2.15.patch | 122 +++++++++++++++++++++
 ...st_agent-QEMU-Guest-Agent-sup.stable-2.16.patch | 122 +++++++++++++++++++++
 ...st_agent-QEMU-Guest-Agent-sup.stable-2.17.patch | 122 +++++++++++++++++++++
 ...i-2.16.0_rc1.ebuild => ganeti-2.15.2-r6.ebuild} |  26 +++--
 app-emulation/ganeti/ganeti-2.16.0_rc1.ebuild      |  10 +-
 app-emulation/ganeti/ganeti-2.17.0_beta1.ebuild    |  10 +-
 app-emulation/ganeti/metadata.xml                  |   1 +
 7 files changed, 401 insertions(+), 12 deletions(-)

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
new file mode 100644
index 00000000..460636f
--- /dev/null
+++ 
b/app-emulation/ganeti/files/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.15.patch
@@ -0,0 +1,122 @@
+From c3697936405ed8c95b674a7d412886e364306f5f Mon Sep 17 00:00:00 2001
+Message-Id: 
<c3697936405ed8c95b674a7d412886e364306f5f.1483650125.git.robb...@gentoo.org>
+From: "Robin H. Johnson" <[email protected]>
+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 <[email protected]>
+---
+ 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
new file mode 100644
index 00000000..6bca593
--- /dev/null
+++ 
b/app-emulation/ganeti/files/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.16.patch
@@ -0,0 +1,122 @@
+From 16a08ecb268062a2634dbfc081b4729cb749b7b4 Mon Sep 17 00:00:00 2001
+Message-Id: 
<16a08ecb268062a2634dbfc081b4729cb749b7b4.1483650125.git.robb...@gentoo.org>
+From: "Robin H. Johnson" <[email protected]>
+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 <[email protected]>
+---
+ 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/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.17.patch
 
b/app-emulation/ganeti/files/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.17.patch
new file mode 100644
index 00000000..f7a664f
--- /dev/null
+++ 
b/app-emulation/ganeti/files/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.17.patch
@@ -0,0 +1,122 @@
+From e91ae73f593115dba1f77af6a3af30cf2219f880 Mon Sep 17 00:00:00 2001
+Message-Id: 
<e91ae73f593115dba1f77af6a3af30cf2219f880.1483650125.git.robb...@gentoo.org>
+From: "Robin H. Johnson" <[email protected]>
+Date: Thu, 29 Sep 2016 08:57:28 -0700
+Subject: [PATCH-2.17] 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 <[email protected]>
+---
+ 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 13bff2e71..7f43f89f9 100644
+--- a/src/Ganeti/Constants.hs
++++ b/src/Ganeti/Constants.hs
+@@ -1821,6 +1821,9 @@ hvUsbMouse = "usb_mouse"
+ hvUseBootloader :: String
+ hvUseBootloader = "use_bootloader"
+ 
++hvUseGuestAgent :: String
++hvUseGuestAgent = "use_guest_agent"
++
+ hvUseLocaltime :: String
+ hvUseLocaltime = "use_localtime"
+ 
+@@ -1955,6 +1958,7 @@ hvsParameterTypes = Map.fromList
+   , (hvUsbDevices,                      VTypeString)
+   , (hvUsbMouse,                        VTypeString)
+   , (hvUseBootloader,                   VTypeBool)
++  , (hvUseGuestAgent,                   VTypeBool)
+   , (hvUseLocaltime,                    VTypeBool)
+   , (hvVga,                             VTypeString)
+   , (hvVhostNet,                        VTypeBool)
+@@ -4111,6 +4115,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/ganeti-2.16.0_rc1.ebuild 
b/app-emulation/ganeti/ganeti-2.15.2-r6.ebuild
similarity index 91%
copy from app-emulation/ganeti/ganeti-2.16.0_rc1.ebuild
copy to app-emulation/ganeti/ganeti-2.15.2-r6.ebuild
index a939819..f87f125 100644
--- a/app-emulation/ganeti/ganeti-2.16.0_rc1.ebuild
+++ b/app-emulation/ganeti/ganeti-2.15.2-r6.ebuild
@@ -19,11 +19,10 @@ if [[ ${PV} =~ [9]{4,} ]] ; then
        KEYWORDS=""
        PATCHES=()
 else
-       DEBIAN_PV=${MY_PV}
-       DEBIAN_PATCH=1
-       SRC_URI="http://downloads.ganeti.org/releases/${SERIES}/${MY_P}.tar.gz";
-       [[ -n "${DEBIAN_PATCH}" ]] && SRC_URI="${SRC_URI}
-         
mirror://debian/pool/main/${PN:0:1}/${PN}/${PN}_${DEBIAN_PV}-${DEBIAN_PATCH}.debian.tar.xz
+       DEBIAN_PATCH=4
+       SRC_URI="
+         http://downloads.ganeti.org/releases/${SERIES}/${MY_P}.tar.gz
+         
mirror://ubuntu/pool/universe/${PN:0:1}/${PN}/${PN}_${PV}-${DEBIAN_PATCH}.debian.tar.xz
        "
        KEYWORDS="~amd64 ~x86"
        PATCHES=(
@@ -32,7 +31,7 @@ else
          "${WORKDIR}"/debian/patches/relax-deps
          "${WORKDIR}"/debian/patches/zlib-0.6-compatibility
          "${WORKDIR}"/debian/patches/fix_FTBFS_with_sphinx-1.3.5
-         #"${WORKDIR}"/debian/patches/fix_ftbfs_with_sphinx_1.4 # ported 
manually
+         "${WORKDIR}"/debian/patches/fix_ftbfs_with_sphinx_1.4
        )
 fi
 
@@ -41,7 +40,7 @@ HOMEPAGE="http://www.ganeti.org/";
 
 LICENSE="GPL-2"
 SLOT="0"
-IUSE="drbd haskell-daemons htools ipv6 kvm lxc monitoring multiple-users rbd 
syslog test xen restricted-commands"
+IUSE="drbd experimental haskell-daemons htools ipv6 kvm lxc monitoring 
multiple-users rbd syslog test xen restricted-commands"
 
 REQUIRED_USE="|| ( kvm xen lxc )
        test? ( ipv6 )
@@ -180,10 +179,9 @@ PATCHES+=(
        "${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-noded-must-run-as-root.patch"
+       "${FILESDIR}/${PN}-2.15-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"
 )
 
 S="${WORKDIR}/${MY_P}"
@@ -213,6 +211,14 @@ src_prepare() {
                        "${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+=(
+                       # QEMU Agent accepted upstream for 2.16, not yet in a 
tagged release
+                       # backport available for 2.15, but refused upstream due 
to RPC breakage.
+                       
"${FILESDIR}"/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.15.patch
+               )
+       fi
        eapply "${PATCHES[@]}"
        # Upstream commits:
        # 4c3c2ca2a97a69c0287a3d23e064bc17978105eb

diff --git a/app-emulation/ganeti/ganeti-2.16.0_rc1.ebuild 
b/app-emulation/ganeti/ganeti-2.16.0_rc1.ebuild
index a939819..ebe1bac 100644
--- a/app-emulation/ganeti/ganeti-2.16.0_rc1.ebuild
+++ b/app-emulation/ganeti/ganeti-2.16.0_rc1.ebuild
@@ -41,7 +41,7 @@ HOMEPAGE="http://www.ganeti.org/";
 
 LICENSE="GPL-2"
 SLOT="0"
-IUSE="drbd haskell-daemons htools ipv6 kvm lxc monitoring multiple-users rbd 
syslog test xen restricted-commands"
+IUSE="drbd experimental haskell-daemons htools ipv6 kvm lxc monitoring 
multiple-users rbd syslog test xen restricted-commands"
 
 REQUIRED_USE="|| ( kvm xen lxc )
        test? ( ipv6 )
@@ -213,6 +213,14 @@ src_prepare() {
                        "${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+=(
+                       # QEMU Agent accepted upstream for 2.16, not yet in a 
tagged release
+                       # backport available for 2.15, but refused upstream due 
to RPC breakage.
+                       
"${FILESDIR}"/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.16.patch
+               )
+       fi
        eapply "${PATCHES[@]}"
        # Upstream commits:
        # 4c3c2ca2a97a69c0287a3d23e064bc17978105eb

diff --git a/app-emulation/ganeti/ganeti-2.17.0_beta1.ebuild 
b/app-emulation/ganeti/ganeti-2.17.0_beta1.ebuild
index 85001c9..829a788 100644
--- a/app-emulation/ganeti/ganeti-2.17.0_beta1.ebuild
+++ b/app-emulation/ganeti/ganeti-2.17.0_beta1.ebuild
@@ -41,7 +41,7 @@ HOMEPAGE="http://www.ganeti.org/";
 
 LICENSE="GPL-2"
 SLOT="0"
-IUSE="drbd haskell-daemons htools ipv6 kvm lxc monitoring multiple-users rbd 
syslog test xen restricted-commands"
+IUSE="drbd experimental haskell-daemons htools ipv6 kvm lxc monitoring 
multiple-users rbd syslog test xen restricted-commands"
 
 REQUIRED_USE="|| ( kvm xen lxc )
        test? ( ipv6 )
@@ -214,6 +214,14 @@ src_prepare() {
                        "${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+=(
+                       # QEMU Agent accepted upstream for 2.16, not yet in a 
tagged release
+                       # backport available for 2.15, but refused upstream due 
to RPC breakage.
+                       
"${FILESDIR}"/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.16.patch
+               )
+       fi
        eapply "${PATCHES[@]}"
        # Upstream commits:
        # 4c3c2ca2a97a69c0287a3d23e064bc17978105eb

diff --git a/app-emulation/ganeti/metadata.xml 
b/app-emulation/ganeti/metadata.xml
index 2693e91..d591fbc 100644
--- a/app-emulation/ganeti/metadata.xml
+++ b/app-emulation/ganeti/metadata.xml
@@ -34,5 +34,6 @@
                <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>

Reply via email to