summaryrefslogtreecommitdiff
path: root/app-emulation/libvirt
diff options
context:
space:
mode:
Diffstat (limited to 'app-emulation/libvirt')
-rw-r--r--app-emulation/libvirt/Manifest11
-rw-r--r--app-emulation/libvirt/files/libvirt-guests.init-r3236
-rw-r--r--app-emulation/libvirt/libvirt-4.3.0.ebuild5
-rw-r--r--app-emulation/libvirt/libvirt-4.4.0-r1.ebuild5
-rw-r--r--app-emulation/libvirt/libvirt-4.5.0-r1.ebuild9
-rw-r--r--app-emulation/libvirt/libvirt-4.6.0-r1.ebuild382
-rw-r--r--app-emulation/libvirt/libvirt-9999.ebuild7
7 files changed, 644 insertions, 11 deletions
diff --git a/app-emulation/libvirt/Manifest b/app-emulation/libvirt/Manifest
index 1d7083d04d9a..f2747bd1f43c 100644
--- a/app-emulation/libvirt/Manifest
+++ b/app-emulation/libvirt/Manifest
@@ -7,6 +7,7 @@ AUX libvirt-4.5.0-do_not_use_sysconf.patch 7417 BLAKE2B b1e6471a7b6a923a3ca4b630
AUX libvirt-4.5.0-fix_typo_in_apparmor_rule.patch 556 BLAKE2B 78d99d6d1ae811e202ffdeb0f34e4b20d76d3b0ed90bdcb35fd79a1133e8cc88e237bbf22c5260cc6aecc7521470ad14807eaadcdf97ed38c0d77fc630d61d38 SHA512 d02a121c069c1661c2f3b5084e1ea260e6611ab9b209fc6575dcb08f68bf36175ab9d9ebb7d1cd2eb4cd707165fd8c4357ce5c036f4835df2d4af4c88964f934
AUX libvirt-guests.confd 2430 BLAKE2B 9d56477c9377e02503782e6d653579c6d149b292c43f37926f4646374e8aae05ca812b6a3a561811482861f8fe67dfdbe63851963326ddbbf2f4644c85411120 SHA512 78f419a89de7aabaad860903c24f1c070786fc1296d987e61dd537705b0e7f71a46c315888028f3826c3417e42861ca8471788be4ec5695e98427c5f18ae63fc
AUX libvirt-guests.init-r2 5411 BLAKE2B a14ecc1bb7188dbbe3d0f82f301a73b876da2d82475cb38a503ed115e894bc59a0466daec5dd7665b3f0656c84ab58e2ba9f8f52eb54a4f8684094f951659fde SHA512 273bcc248ab659bb0cef12c03187f1445c00d2736912f3b54911137352a48b6fcdc2e0c76c56db984501acc4b9e8c0a4cf453a90947c5e525d0746ac9afa8505
+AUX libvirt-guests.init-r3 5530 BLAKE2B 5de3e8577ded1401f6dca551c6098418e596287d43b1b90e133859bb9b74dff20b8518bc09853ccff7141e6baa52fc12c9b8d3e8f60b868b72b1993254fac5d9 SHA512 7aa4eac8c293c3063d9435a4ad1ea855f9fdd84eb0ed8cbf0779935f152aab380e2ee7eb9129b2f07147bfa4dd1eae4b836ccae295c35b63dbc767208dd11b0c
AUX libvirtd.confd-r5 740 BLAKE2B 74a069f4902dd1352f06029c886200615a35870ff88496c91956d23a3172db0789086622422f545498e92b7f8de41225022185fe291dd580cbacdeb783163f4b SHA512 98f935589dbc5f2a99329f77fdf84c563fa0dc99404b7476603679478d68ce8dbea2c88645251d3c28f59e7bcae124ae632972146e8a8c3e0e9fcbfb27296f91
AUX libvirtd.init-r16 1093 BLAKE2B 7242ddcc7046392e8c24c1918a1dce343a3198fd80346c97850bb0226888d98f6d57f53eb00e38b8f9e71fd2073feef8399b340aea9ab9d8ed64a646140c3dc1 SHA512 5ea4c2f9e48faf2aa8fe7077d075841d610da17e28bcc85c79c55565f286e345339f042090b453e25accf5c405e322e76b6cf846fdfb3e90db3e2d0c2fff4c48
AUX libvirtd.service.conf 401 BLAKE2B edd74238f9639ead1d776142e6231d87f39cb6670e72cec9c1ac44f58fcfbc63e72944d2d243a1aabe48b9acc6bb1c52189161a79e3d42603c87a270027c42f8 SHA512 27adbd104ea87e51d423b057392a0c6726692ad8ee9723f73dc4bfe8eb54069725d64883434424ba810d36992d404d1ba4afe6bcefb866d3d3d92dfd161c2b32
@@ -16,8 +17,10 @@ AUX virtlogd.init-r1 569 BLAKE2B 20df60c23cee575577592d41d1a9913923255633d12de78
DIST libvirt-4.3.0.tar.xz 14667860 BLAKE2B bd4dfbcfba3b11036be979caf938ec7ca4fc04cc4bd6dfd5eec05c054ba4ebf953c0e86a080e65ab8a880f2bcc2f4d018283e870afcb64bd0b750247f3c96357 SHA512 cc61497121931019a8cc3fa8234d7cf95b0f0e1d77ab6fcd089db92759617b099eb83c57aa91768ae6ccf92c345cf72e1d9b202acb5132a159476fb86f1a6999
DIST libvirt-4.4.0.tar.xz 14668912 BLAKE2B 04f7a48618924bb8bbe1621572d260a01626687c66ed45d1a08d745210fc522fba63387a0433c0c55e41a5655267c094c16b7ff97f9e45b17419dfc83f465c79 SHA512 725b9b093a2aaeab6fdcb8df341a400ab363bcd50af8400dfd0593c41d8fbc8352f89147be9fbfde2e8418cc7298e090fe07ec7255b0aff1f0d001b93322f93f
DIST libvirt-4.5.0.tar.xz 14743956 BLAKE2B 930852765104b1b22744df0ec4f1c74d89bc0fda80852978f7c857943858cc45eed9b74a3d42668f872540be2637f26c4d9d7859594847e58e6fb4cd33350130 SHA512 26710c7e5219f007524e9f93a642e55e4e8ea197afa6b2ca6a4b67b7028313f4b0d82924ee9a1e91ff688a4d2b53f89f3655fbeef0fa99a34f8418f37d787984
-EBUILD libvirt-4.3.0.ebuild 9634 BLAKE2B 3c3b4e444e212646c214ae782697fc6ce015285974c24c74438e241ed2435921e67f457283a72c114f6c697e9dd3c2ad862e64e33202070e4a3601b6dd51d82e SHA512 c3e74163883e4c97a234b848170a9aea0c29d0af9d06e469e98a5e688874616c05ef68dc43c01c2f7b08463ad90d9b732a317291c1460263ed2e9fb3b97e8409
-EBUILD libvirt-4.4.0-r1.ebuild 9523 BLAKE2B 08efe71e6b957c611fd44c67173c103780d47b14f853c1f99fa41c5c90a211e3e48dd57fe9cc13350a364f3da9accb3ab8ba6a52328dfbebc0bfbff201a8f0f3 SHA512 91f42cbf16cf8918182e427d574dbcfaa90698715e725e60a0106b38347df21fa11dffcb3dcbd8cb7de2597e3024c14f8ad27236e9981349cac5bb5005b61187
-EBUILD libvirt-4.5.0-r1.ebuild 9582 BLAKE2B d46f83fcc183d0c1e5621dc327f00fc96ad5bbcbb5c748445fb7d662a1be69481c7f7169d81eca3f96f4d6f189be528d35e6657bc7d3ac7afc364b7b74a0a106 SHA512 dbb648d799768d65ed975aed8177272f972a24358ba667d25dad1e06aec5dd9f31afe3006c1c4a399cefeced87a3533bca1ebf494d6ca388c5f4dcef2a1e2c20
-EBUILD libvirt-9999.ebuild 9544 BLAKE2B ac7c45f69d26ca59bbfcc8254f645d52bbbedf629d8c49a24d2a8cf35fec71cf9d947d4476864c2d3fc3c7046699a780cdee050b771ab9ef3084461564fe5b1d SHA512 7d8b0994e94b76efd85290e81f7d8e63a98174287e2a11d0bb5bb0259d76b10d30eed36c00772602270b5fabb0c18be23856de2fbe6d446b22518e599f9e9806
+DIST libvirt-4.6.0.tar.xz 14760064 BLAKE2B 1e21cb4340ec6c1983ea884f813121c98a8f6b18fb058edd085fd35a2aa1a30e004274a248ddb12c74ccb8a4da788fd8c735d53c7e8b4177c591cf95a8c20be8 SHA512 beae0f1cafa73b9495d877979547bbc9b7ca2a7c3b213c5da92e6302b570d42df9d639f50380dbc0cebd6af983924dc27b1c81139c81dee0897f39a6a5158968
+EBUILD libvirt-4.3.0.ebuild 9699 BLAKE2B 7f0390663ecd2035c475988ec31fc366d61cba353dae5183dd6d967e8f8a45a5080d3affa33fe20322d0da17fec90001f7e2a67491aeda0c4856b0e909dd9eeb SHA512 56e207fed54ecce6f94f7df02c73925c66d66749a918db4cd2bc3fd6fd0715935d65f2b5fd0f161ea95d67bc2172ab7e1a8e1b6b10f77df6f756f339c1355187
+EBUILD libvirt-4.4.0-r1.ebuild 9588 BLAKE2B 254646cc46c499ec97e9c8cbe30791aa8dbaa58e6a47335a4199108c7270905ba1b0bb5a3101f0f979f41dcea6415e9b2b0594283eed9509cc01ab623bcc51ff SHA512 07e299cff3761a985bb7fa45aae0feda3b8ae2e941676a7dac24261ca55f2030208558c0937342b94fee3c52258446e68ef942a468630eabca85fca1f16f369c
+EBUILD libvirt-4.5.0-r1.ebuild 9654 BLAKE2B 68f875b79a4e7af8674b87fd47dc7081b31c0d617444bfca5d0ebe1b0b10fa4ddfef1305110f3689591a6a5ef32ace833a28e854126369ea2896b3d894b9d230 SHA512 05ba73308bdcabcf8a3c179814519331bc3ac2e557ec383ce9beaa3f8657436a9358461d5e03271811d56ef570e80eaf8a781d54b9b583381a418429934053c5
+EBUILD libvirt-4.6.0-r1.ebuild 9594 BLAKE2B 8debc08e38b109ba5bb557d578b873528e615ef13963d88c0571d54d4e6c3f014b6849b930480b76e365d0a94ee1bd04bc19732dd086b21b199524306139c938 SHA512 11ed66a25dd362f329259c8cd6de6b1c268cb401a082934ca31a38476d024e21a368587c0dff9738901ef6a6f87a3aa38419fc5d2e2c70d2804966a628c98617
+EBUILD libvirt-9999.ebuild 9609 BLAKE2B f0da3d38a293601e6a55343098d69c00d568002c083c794ce4e87aed417970a0c8a5109b3ccc87cbc230e470bdd199f789a14491cd497cb91422e03994ffe1f2 SHA512 fe3e5de78dfc02aa08cdcd0b0807069cd45b1302f373a6ce5559229e23370c83372312334e8a7de810c804af4f8b4eb98d0f5bcd6a37a9eae65436b8403720d3
MISC metadata.xml 3766 BLAKE2B 38d8b1dfb815871ca19c35c80ab390a422e1833b6ef09c6691889d5d6c01e25bb9fb5d187231456c443cb22764583312a56ed8e1a772f810b58050752ba9f2de SHA512 10d96f652bdcf32e34ea415a37de0c3c4aae3a716403a0ca73228af640788734119cbf4ade26a450cc3cda81ef6182391a6f590a851a6834d52394b7c81c49ed
diff --git a/app-emulation/libvirt/files/libvirt-guests.init-r3 b/app-emulation/libvirt/files/libvirt-guests.init-r3
new file mode 100644
index 000000000000..10797e1b8075
--- /dev/null
+++ b/app-emulation/libvirt/files/libvirt-guests.init-r3
@@ -0,0 +1,236 @@
+#!/sbin/openrc-run
+
+description="Virtual Machine Management (libvirt) Guests"
+
+depend() {
+ use libvirtd
+}
+
+# set the default to QEMU
+[ -z "${LIBVIRT_URIS}" ] && LIBVIRT_URIS="qemu:///system"
+
+# default to suspending the VM via managedsave
+case "${LIBVIRT_SHUTDOWN}" in
+ managedsave|shutdown|destroy) ;;
+ *) LIBVIRT_SHUTDOWN="managedsave" ;;
+esac
+
+# default to 500 seconds
+[ -z ${LIBVIRT_MAXWAIT} ] && LIBVIRT_MAXWAIT=500
+
+gueststatefile="/var/lib/libvirt/libvirt-guests.state"
+netstatefile="/var/lib/libvirt/libvirt-net.state"
+
+do_virsh() {
+ local hvuri=$1
+ shift
+
+ # if unset, default to qemu
+ [ -z ${hvuri} ] && hvuri="qemu:///system"
+ # if only qemu was supplied then correct the value
+ [ "xqemu" = x${hvuri} ] && hvuri="qemu:///system"
+
+ # Silence errors because virsh always throws an error about
+ # not finding the hypervisor version when connecting to libvirtd
+ # lastly strip the blank line at the end
+ LC_ALL=C virsh -c ${hvuri} "$@" 2>/dev/null | head -n -1
+}
+
+libvirtd_dom_list() {
+ # Only work with domains by their UUIDs
+ local hvuri=$1
+ shift
+
+ # The grep is to remove dom0 for xen domains. Otherwise we never hit 0
+ do_virsh "${hvuri}" list --uuid $@ | grep -v 00000000-0000-0000-0000-000000000000
+}
+
+libvirtd_dom_count() {
+ local hvuri=$1
+ shift
+
+ libvirtd_dom_list "${hvuri}" $@ | wc -l
+}
+
+libvirtd_net_list() {
+ # Only work with networks by their UUIDs
+ local hvuri=$1
+ shift
+
+ do_virsh "${hvuri}" net-list --uuid $@
+}
+
+libvirtd_net_count() {
+ local hvuri=$1
+ shift
+
+ libvirtd_net_list "${hvuri}" $@ | wc -l
+}
+
+libvirtd_dom_stop() {
+ # stops all persistent or transient domains for a given URI
+ # $1 - uri
+ # $2 - persisent/transient
+
+ local uri=$1
+ local persist=$2
+ local shutdown_type=${LIBVIRT_SHUTDOWN}
+ local counter=${LIBVIRT_MAXWAIT}
+ local dom_name=
+ local dom_as=
+ local dom_ids=
+ local uuid=
+ local dom_count=
+
+ [ "${persist}" = "--transient" ] && shutdown_type="shutdown"
+ [ -n "${counter}" ] || counter=500
+
+ einfo " Shutting down domain(s) ..."
+
+ # grab all persistent or transient domains running
+ dom_ids=$(libvirtd_dom_list ${uri} ${persist})
+
+ for uuid in ${dom_ids}; do
+ # Get the name
+ dom_name=$(do_virsh ${uri} domname ${uuid})
+ einfo " ${dom_name}"
+ # Get autostart state
+ dom_as=$(do_virsh ${uri} dominfo ${uuid} | \
+ awk '$1 == "Autostart:" { print $2 }')
+
+ if [ "${persist}" = "--persistent" ]; then
+ # Save our running state only if LIBVIRT_IGNORE_AUTOSTART != yes
+ if [ "x${LIBVIRT_IGNORE_AUTOSTART}" = "xyes" ] && \
+ [ ${dom_as} = "enabled" ]; then
+ :
+ else
+ echo "${uri} ${uuid}" >> ${gueststatefile}
+ fi
+
+ fi
+
+ # Now let's stop it
+ do_virsh "${uri}" ${shutdown_type} ${uuid} > /dev/null
+
+ done
+
+ dom_count="$(libvirtd_dom_count ${uri} ${persist})"
+ while [ ${dom_count} -gt 0 ] && [ ${counter} -gt 0 ] ; do
+ dom_count="$(libvirtd_dom_count ${uri} ${persist})"
+ sleep 1
+ if [ "${shutdown_type}" = "shutdown" ]; then
+ counter=$((${counter} - 1))
+ fi
+ printf "."
+ done
+
+ if [ "${shutdown_type}" = "shutdown" ]; then
+ # grab all domains still running
+ dom_ids=$(libvirtd_dom_list ${uri} ${persist})
+ for uuid in ${dom_ids}; do
+ dom_name=$(do_virsh ${uri} domname ${uuid})
+ eerror " ${dom_name} forcibly stopped"
+ do_virsh "${uri}" destroy ${uuid} > /dev/null
+ done
+ fi
+}
+
+libvirtd_net_stop() {
+ # stops all persistent or transient domains for a given URI
+ # $1 - uri
+ # $2 - persisent/transient
+
+ local uri=$1
+ local persist=$2
+ local uuid=
+ local net_name=
+
+ if [ "${LIBVIRT_NET_SHUTDOWN}" != "no" ]; then
+
+ einfo " Shutting down network(s):"
+ for uuid in $(libvirtd_net_list ${uri} ${persist}); do
+ net_name=$(do_virsh ${uri} net-name ${uuid})
+ einfo " ${net_name}"
+
+ if [ "${persist}" = "--persistent" ]; then
+ # Save our running state
+ echo "${uri} ${uuid}" >> ${netstatefile}
+
+ fi
+
+ # Actually stop the network
+ do_virsh qemu net-destroy ${uuid} > /dev/null
+ done
+
+ fi
+}
+
+start() {
+ local uri=
+ local uuid=
+ local name=
+
+ for uri in ${LIBVIRT_URIS}; do
+ do_virsh "${uri}" connect
+ if [ $? -ne 0 ]; then
+ eerror "Failed to connect to '${uri}'. Domains may not start."
+ fi
+ done
+
+ [ ! -e "${netstatefile}" ] && touch "${netstatefile}"
+ [ ! -e "${gueststatefile}" ] && touch "${gueststatefile}"
+
+ # if the user didn't want to start any guests up then respect their wish
+ [ "x${LIBVIRT_START}" = "xno" ] && return 0
+
+ # start networks
+ ebegin "Starting libvirt networks"
+ while read -r uri uuid
+ do
+ # ignore trash
+ [ -z "${uri}" ] || [ -z "${uuid}" ] && continue
+
+ name=$(do_virsh "${uri}" net-name ${uuid})
+ einfo " ${name}"
+ do_virsh "${uri}" net-start ${uuid} > /dev/null
+ done <"${netstatefile}"
+ eend 0
+
+ # start domains
+ ebegin "Starting libvirt domains"
+ while read -r uri uuid
+ do
+ # ignore trash
+ [ -z "${uri}" ] || [ -z "${uuid}" ] && continue
+
+ name=$(do_virsh "${uri}" domname ${uuid})
+ einfo " ${name}"
+ do_virsh "${uri}" start ${uuid} > /dev/null
+ done <"${gueststatefile}"
+ eend 0
+}
+
+stop() {
+ local counter=
+ local dom_name=
+ local net_name=
+ local dom_ids=
+ local uuid=
+ local dom_count=
+
+ rm -f "${gueststatefile}"
+ [ $? -ne 0 ] && eerror "Unable to save domain state"
+ rm -f "${netstatefile}"
+ [ $? -ne 0 ] && eerror "Unable to save net state"
+
+ for uri in ${LIBVIRT_URIS}; do
+ einfo "Stopping libvirt domains and networks for ${uri}"
+
+ libvirtd_dom_stop "${uri}" "--persistent"
+ libvirtd_dom_stop "${uri}" "--transient"
+ libvirtd_net_stop "${uri}" "--persistent"
+ libvirtd_net_stop "${uri}" "--transient"
+
+ einfo "Done stopping domains and networks for ${uri}"
+ done
+}
diff --git a/app-emulation/libvirt/libvirt-4.3.0.ebuild b/app-emulation/libvirt/libvirt-4.3.0.ebuild
index 5bd36ebec4a9..6cb7be71717c 100644
--- a/app-emulation/libvirt/libvirt-4.3.0.ebuild
+++ b/app-emulation/libvirt/libvirt-4.3.0.ebuild
@@ -3,7 +3,9 @@
EAPI=6
-inherit autotools eutils user linux-info systemd readme.gentoo-r1 bash-completion-r1
+PYTHON_COMPAT=( python3_{4,5,6} )
+
+inherit autotools bash-completion-r1 eutils linux-info python-any-r1 readme.gentoo-r1 systemd user
if [[ ${PV} = *9999* ]]; then
inherit git-r3
@@ -115,6 +117,7 @@ RDEPEND="
zfs? ( sys-fs/zfs )"
DEPEND="${RDEPEND}
+ ${PYTHON_DEPS}
app-text/xhtml1
dev-lang/perl
dev-libs/libxslt
diff --git a/app-emulation/libvirt/libvirt-4.4.0-r1.ebuild b/app-emulation/libvirt/libvirt-4.4.0-r1.ebuild
index d6bc4279be49..9dbad91d1f52 100644
--- a/app-emulation/libvirt/libvirt-4.4.0-r1.ebuild
+++ b/app-emulation/libvirt/libvirt-4.4.0-r1.ebuild
@@ -3,7 +3,9 @@
EAPI=6
-inherit autotools eutils user linux-info systemd readme.gentoo-r1 bash-completion-r1
+PYTHON_COMPAT=( python3_{4,5,6} )
+
+inherit autotools bash-completion-r1 eutils linux-info python-any-r1 readme.gentoo-r1 systemd user
if [[ ${PV} = *9999* ]]; then
inherit git-r3
@@ -115,6 +117,7 @@ RDEPEND="
zfs? ( sys-fs/zfs )"
DEPEND="${RDEPEND}
+ ${PYTHON_DEPS}
app-text/xhtml1
dev-lang/perl
dev-libs/libxslt
diff --git a/app-emulation/libvirt/libvirt-4.5.0-r1.ebuild b/app-emulation/libvirt/libvirt-4.5.0-r1.ebuild
index b98d98cfe371..161be6fe14a4 100644
--- a/app-emulation/libvirt/libvirt-4.5.0-r1.ebuild
+++ b/app-emulation/libvirt/libvirt-4.5.0-r1.ebuild
@@ -3,13 +3,15 @@
EAPI=6
-inherit autotools eutils user linux-info systemd readme.gentoo-r1 bash-completion-r1
+PYTHON_COMPAT=( python3_{4,5,6} )
+
+inherit autotools bash-completion-r1 eutils linux-info python-any-r1 readme.gentoo-r1 systemd user
if [[ ${PV} = *9999* ]]; then
inherit git-r3
EGIT_REPO_URI="https://libvirt.org/git/libvirt.git"
SRC_URI=""
- KEYWORDS=""
+ KEYWORDS="amd64 x86"
SLOT="0"
else
# Versions with 4 numbers are stable updates:
@@ -18,7 +20,7 @@ else
else
SRC_URI="https://libvirt.org/sources/${P}.tar.xz"
fi
- KEYWORDS="~amd64 ~arm64 ~x86"
+ KEYWORDS="amd64 ~arm64 x86"
SLOT="0/${PV}"
fi
@@ -115,6 +117,7 @@ RDEPEND="
zfs? ( sys-fs/zfs )"
DEPEND="${RDEPEND}
+ ${PYTHON_DEPS}
app-text/xhtml1
dev-lang/perl
dev-libs/libxslt
diff --git a/app-emulation/libvirt/libvirt-4.6.0-r1.ebuild b/app-emulation/libvirt/libvirt-4.6.0-r1.ebuild
new file mode 100644
index 000000000000..78736067968d
--- /dev/null
+++ b/app-emulation/libvirt/libvirt-4.6.0-r1.ebuild
@@ -0,0 +1,382 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python3_{4,5,6} )
+
+inherit autotools bash-completion-r1 eutils linux-info python-any-r1 readme.gentoo-r1 systemd user
+
+if [[ ${PV} = *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://libvirt.org/git/libvirt.git"
+ SRC_URI=""
+ KEYWORDS=""
+ SLOT="0"
+else
+ # Versions with 4 numbers are stable updates:
+ if [[ ${PV} =~ ^[0-9]+(\.[0-9]+){3} ]]; then
+ SRC_URI="https://libvirt.org/sources/stable_updates/${P}.tar.xz"
+ else
+ SRC_URI="https://libvirt.org/sources/${P}.tar.xz"
+ fi
+ KEYWORDS="~amd64 ~arm64 ~x86"
+ SLOT="0/${PV}"
+fi
+
+DESCRIPTION="C toolkit to manipulate virtual machines"
+HOMEPAGE="http://www.libvirt.org/"
+LICENSE="LGPL-2.1"
+IUSE="
+ apparmor audit +caps +dbus firewalld fuse glusterfs iscsi +libvirtd lvm
+ libssh lxc +macvtap nfs nls numa openvz parted pcap phyp policykit
+ +qemu rbd sasl selinux +udev uml +vepa virtualbox virt-network
+ wireshark-plugins xen zeroconf zfs
+"
+
+REQUIRED_USE="
+ firewalld? ( virt-network )
+ libvirtd? ( || ( lxc openvz qemu uml virtualbox xen ) )
+ lxc? ( caps libvirtd )
+ openvz? ( libvirtd )
+ policykit? ( dbus )
+ qemu? ( libvirtd )
+ uml? ( libvirtd )
+ vepa? ( macvtap )
+ virt-network? ( libvirtd )
+ virtualbox? ( libvirtd )
+ xen? ( libvirtd )"
+
+# gettext.sh command is used by the libvirt command wrappers, and it's
+# non-optional, so put it into RDEPEND.
+# We can use both libnl:1.1 and libnl:3, but if you have both installed, the
+# package will use 3 by default. Since we don't have slot pinning in an API,
+# we must go with the most recent
+RDEPEND="
+ app-misc/scrub
+ dev-libs/libgcrypt:0
+ dev-libs/libnl:3
+ >=dev-libs/libxml2-2.7.6
+ || ( >=net-analyzer/netcat6-1.0-r2 >=net-analyzer/openbsd-netcat-1.105-r1 )
+ >=net-libs/gnutls-1.0.25:0=
+ net-libs/libssh2
+ net-libs/libtirpc
+ net-libs/rpcsvc-proto
+ >=net-misc/curl-7.18.0
+ sys-apps/dmidecode
+ >=sys-apps/util-linux-2.17
+ sys-devel/gettext
+ sys-libs/ncurses:0=
+ sys-libs/readline:=
+ apparmor? ( sys-libs/libapparmor )
+ audit? ( sys-process/audit )
+ caps? ( sys-libs/libcap-ng )
+ dbus? ( sys-apps/dbus )
+ firewalld? ( net-firewall/firewalld )
+ fuse? ( >=sys-fs/fuse-2.8.6:= )
+ glusterfs? ( >=sys-cluster/glusterfs-3.4.1 )
+ iscsi? ( sys-block/open-iscsi )
+ libssh? ( net-libs/libssh )
+ lvm? ( >=sys-fs/lvm2-2.02.48-r2[-device-mapper-only(-)] )
+ nfs? ( net-fs/nfs-utils )
+ numa? (
+ >sys-process/numactl-2.0.2
+ sys-process/numad
+ )
+ parted? (
+ >=sys-block/parted-1.8[device-mapper]
+ sys-fs/lvm2[-device-mapper-only(-)]
+ )
+ pcap? ( >=net-libs/libpcap-1.0.0 )
+ policykit? ( >=sys-auth/polkit-0.9 )
+ qemu? (
+ >=app-emulation/qemu-0.13.0
+ dev-libs/jansson
+ )
+ rbd? ( sys-cluster/ceph )
+ sasl? ( dev-libs/cyrus-sasl )
+ selinux? ( >=sys-libs/libselinux-2.0.85 )
+ virt-network? (
+ net-dns/dnsmasq[script]
+ net-firewall/ebtables
+ >=net-firewall/iptables-1.4.10[ipv6]
+ net-misc/radvd
+ sys-apps/iproute2[-minimal]
+ )
+ virtualbox? ( || ( app-emulation/virtualbox >=app-emulation/virtualbox-bin-2.2.0 ) )
+ wireshark-plugins? ( net-analyzer/wireshark:= )
+ xen? (
+ app-emulation/xen
+ app-emulation/xen-tools:=
+ )
+ udev? (
+ virtual/udev
+ >=x11-libs/libpciaccess-0.10.9
+ )
+ zeroconf? ( >=net-dns/avahi-0.6[dbus] )
+ zfs? ( sys-fs/zfs )"
+
+DEPEND="${RDEPEND}
+ ${PYTHON_DEPS}
+ app-text/xhtml1
+ dev-lang/perl
+ dev-libs/libxslt
+ dev-perl/XML-XPath
+ virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-4.5.0-do_not_use_sysconf.patch
+ "${FILESDIR}"/${PN}-1.2.16-fix_paths_in_libvirt-guests_sh.patch
+ "${FILESDIR}"/${PN}-3.10.0-r2-fix_paths_for_apparmor.patch
+)
+
+pkg_setup() {
+ if use qemu; then
+ enewgroup qemu 77
+ enewuser qemu 77 -1 -1 "qemu,kvm"
+ fi
+
+ use policykit && enewgroup libvirt
+
+ # Check kernel configuration:
+ CONFIG_CHECK=""
+ use fuse && CONFIG_CHECK+="
+ ~FUSE_FS"
+
+ use lvm && CONFIG_CHECK+="
+ ~BLK_DEV_DM
+ ~DM_MULTIPATH
+ ~DM_SNAPSHOT"
+
+ use lxc && CONFIG_CHECK+="
+ ~BLK_CGROUP
+ ~CGROUP_CPUACCT
+ ~CGROUP_DEVICE
+ ~CGROUP_FREEZER
+ ~CGROUP_NET_PRIO
+ ~CGROUP_PERF
+ ~CGROUPS
+ ~CGROUP_SCHED
+ ~CPUSETS
+ ~IPC_NS
+ ~MACVLAN
+ ~NAMESPACES
+ ~NET_CLS_CGROUP
+ ~NET_NS
+ ~PID_NS
+ ~POSIX_MQUEUE
+ ~SECURITYFS
+ ~USER_NS
+ ~UTS_NS
+ ~VETH
+ ~!GRKERNSEC_CHROOT_MOUNT
+ ~!GRKERNSEC_CHROOT_DOUBLE
+ ~!GRKERNSEC_CHROOT_PIVOT
+ ~!GRKERNSEC_CHROOT_CHMOD
+ ~!GRKERNSEC_CHROOT_CAPS"
+
+ kernel_is lt 4 7 && use lxc && CONFIG_CHECK+="
+ ~DEVPTS_MULTIPLE_INSTANCES"
+
+ use macvtap && CONFIG_CHECK+="
+ ~MACVTAP"
+
+ use virt-network && CONFIG_CHECK+="
+ ~BRIDGE_EBT_MARK_T
+ ~BRIDGE_NF_EBTABLES
+ ~NETFILTER_ADVANCED
+ ~NETFILTER_XT_CONNMARK
+ ~NETFILTER_XT_MARK
+ ~NETFILTER_XT_TARGET_CHECKSUM"
+ # Bandwidth Limiting Support
+ use virt-network && CONFIG_CHECK+="
+ ~BRIDGE_EBT_T_NAT
+ ~NET_ACT_POLICE
+ ~NET_CLS_FW
+ ~NET_CLS_U32
+ ~NET_SCH_HTB
+ ~NET_SCH_INGRESS
+ ~NET_SCH_SFQ"
+
+ # Handle specific kernel versions for different features
+ kernel_is lt 3 6 && CONFIG_CHECK+=" ~CGROUP_MEM_RES_CTLR"
+ if kernel_is ge 3 6; then
+ CONFIG_CHECK+=" ~MEMCG ~MEMCG_SWAP "
+ kernel_is lt 4 5 && CONFIG_CHECK+=" ~MEMCG_KMEM "
+ fi
+
+ ERROR_USER_NS="Optional depending on LXC configuration."
+
+ if [[ -n ${CONFIG_CHECK} ]]; then
+ linux-info_pkg_setup
+ fi
+}
+
+src_prepare() {
+ touch "${S}/.mailmap"
+
+ default
+
+ if [[ ${PV} = *9999* ]]; then
+ # git checkouts require bootstrapping to create the configure script.
+ # Additionally the submodules must be cloned to the right locations
+ # bug #377279
+ ./bootstrap || die "bootstrap failed"
+ (
+ git submodule status | sed 's/^[ +-]//;s/ .*//'
+ git hash-object bootstrap.conf
+ ) >.git-module-status
+ fi
+
+ # Tweak the init script:
+ cp "${FILESDIR}/libvirtd.init-r16" "${S}/libvirtd.init" || die
+ sed -e "s/USE_FLAG_FIREWALLD/$(usex firewalld 'need firewalld' '')/" \
+ -e "s/USE_FLAG_AVAHI/$(usex zeroconf 'use avahi-daemon' '')/" \
+ -e "s/USE_FLAG_ISCSI/$(usex iscsi 'use iscsid' '')/" \
+ -e "s/USE_FLAG_RBD/$(usex rbd 'use ceph' '')/" \
+ -i "${S}/libvirtd.init" || die "sed failed"
+
+ eautoreconf
+}
+
+src_configure() {
+ local myeconfargs=(
+ $(use_with apparmor)
+ $(use_with apparmor apparmor-profiles)
+ $(use_with audit)
+ $(use_with caps capng)
+ $(use_with dbus)
+ $(use_with firewalld)
+ $(use_with fuse)
+ $(use_with glusterfs)
+ $(use_with glusterfs storage-gluster)
+ $(use_with iscsi storage-iscsi)
+ $(use_with libvirtd)
+ $(use_with libssh)
+ $(use_with lvm storage-lvm)
+ $(use_with lvm storage-mpath)
+ $(use_with lxc)
+ $(use_with macvtap)
+ $(use_enable nls)
+ $(use_with numa numactl)
+ $(use_with numa numad)
+ $(use_with openvz)
+ $(use_with parted storage-disk)
+ $(use_with pcap libpcap)
+ $(use_with phyp)
+ $(use_with policykit polkit)
+ $(use_with qemu)
+ $(use_with qemu jansson)
+ $(use_with rbd storage-rbd)
+ $(use_with sasl)
+ $(use_with selinux)
+ $(use_with udev)
+ $(use_with uml)
+ $(use_with vepa virtualport)
+ $(use_with virt-network network)
+ $(use_with wireshark-plugins wireshark-dissector)
+ $(use_with xen libxl)
+ $(use_with zeroconf avahi)
+ $(use_with zfs storage-zfs)
+
+ --without-hal
+ --without-netcf
+ --without-sanlock
+ --without-xenapi
+
+ --with-esx
+ --with-init-script=systemd
+ --with-qemu-group=$(usex caps qemu root)
+ --with-qemu-user=$(usex caps qemu root)
+ --with-remote
+ --with-storage-fs
+ --with-vmware
+
+ --disable-static
+ --disable-werror
+
+ --with-html-subdir=${PF}/html
+ --localstatedir=/var
+ )
+
+ if use virtualbox && has_version app-emulation/virtualbox-ose; then
+ myeconfargs+=( --with-vbox=/usr/lib/virtualbox-ose/ )
+ else
+ myeconfargs+=( $(use_with virtualbox vbox) )
+ fi
+
+ econf "${myeconfargs[@]}"
+
+ if [[ ${PV} = *9999* ]]; then
+ # Restore gnulib's config.sub and config.guess
+ # bug #377279
+ (cd .gnulib && git reset --hard > /dev/null)
+ fi
+}
+
+src_test() {
+ cd "${BUILD_DIR}"
+
+ # remove problematic tests, bug #591416, bug #591418
+ sed -i -e 's#commandtest$(EXEEXT) # #' \
+ -e 's#virfirewalltest$(EXEEXT) # #' \
+ -e 's#nwfilterebiptablestest$(EXEEXT) # #' \
+ -e 's#nwfilterxml2firewalltest$(EXEEXT)$##' \
+ tests/Makefile
+
+ export VIR_TEST_DEBUG=1
+ HOME="${T}" emake check || die "tests failed"
+}
+
+src_install() {
+ emake DESTDIR="${D}" \
+ SYSTEMD_UNIT_DIR="$(systemd_get_systemunitdir)" install
+
+ find "${D}" -name '*.la' -delete || die
+
+ # Remove bogus, empty directories. They are either not used, or
+ # libvirtd is able to create them on demand
+ rm -rf "${D}"/etc/sysconfig
+ rm -rf "${D}"/var
+
+ use libvirtd || return 0
+ # From here, only libvirtd-related instructions, be warned!
+
+ systemd_install_serviced \
+ "${FILESDIR}"/libvirtd.service.conf libvirtd.service
+
+ systemd_newtmpfilesd "${FILESDIR}"/libvirtd.tmpfiles.conf libvirtd.conf
+
+ newinitd "${S}/libvirtd.init" libvirtd || die
+ newinitd "${FILESDIR}/libvirt-guests.init-r3" libvirt-guests || die
+ newinitd "${FILESDIR}/virtlockd.init-r1" virtlockd || die
+ newinitd "${FILESDIR}/virtlogd.init-r1" virtlogd || die
+
+ newconfd "${FILESDIR}/libvirtd.confd-r5" libvirtd || die
+ newconfd "${FILESDIR}/libvirt-guests.confd" libvirt-guests || die
+
+ newbashcomp "${S}/tools/bash-completion/vsh" vsh
+ bashcomp_alias vsh virsh virt-admin
+
+ DOC_CONTENTS=$(<"${FILESDIR}/README.gentoo-r2")
+ DISABLE_AUTOFORMATTING=true
+ readme.gentoo_create_doc
+}
+
+pkg_preinst() {
+ # we only ever want to generate this once
+ if [[ -e "${ROOT}"/etc/libvirt/qemu/networks/default.xml ]]; then
+ rm -rf "${D}"/etc/libvirt/qemu/networks/default.xml
+ fi
+}
+
+pkg_postinst() {
+ if [[ -e "${ROOT}"/etc/libvirt/qemu/networks/default.xml ]]; then
+ touch "${ROOT}"/etc/libvirt/qemu/networks/default.xml
+ fi
+
+ use libvirtd || return 0
+ # From here, only libvirtd-related instructions, be warned!
+
+ readme.gentoo_print_elog
+}
diff --git a/app-emulation/libvirt/libvirt-9999.ebuild b/app-emulation/libvirt/libvirt-9999.ebuild
index 3743f3a0b723..e6f5276a786e 100644
--- a/app-emulation/libvirt/libvirt-9999.ebuild
+++ b/app-emulation/libvirt/libvirt-9999.ebuild
@@ -3,7 +3,9 @@
EAPI=6
-inherit autotools eutils user linux-info systemd readme.gentoo-r1 bash-completion-r1
+PYTHON_COMPAT=( python3_{4,5,6} )
+
+inherit autotools bash-completion-r1 eutils linux-info python-any-r1 readme.gentoo-r1 systemd user
if [[ ${PV} = *9999* ]]; then
inherit git-r3
@@ -115,6 +117,7 @@ RDEPEND="
zfs? ( sys-fs/zfs )"
DEPEND="${RDEPEND}
+ ${PYTHON_DEPS}
app-text/xhtml1
dev-lang/perl
dev-libs/libxslt
@@ -345,7 +348,7 @@ src_install() {
systemd_newtmpfilesd "${FILESDIR}"/libvirtd.tmpfiles.conf libvirtd.conf
newinitd "${S}/libvirtd.init" libvirtd || die
- newinitd "${FILESDIR}/libvirt-guests.init-r2" libvirt-guests || die
+ newinitd "${FILESDIR}/libvirt-guests.init-r3" libvirt-guests || die
newinitd "${FILESDIR}/virtlockd.init-r1" virtlockd || die
newinitd "${FILESDIR}/virtlogd.init-r1" virtlogd || die