diff options
Diffstat (limited to 'app-emulation/libvirt')
-rw-r--r-- | app-emulation/libvirt/Manifest | 11 | ||||
-rw-r--r-- | app-emulation/libvirt/files/libvirt-guests.init-r3 | 236 | ||||
-rw-r--r-- | app-emulation/libvirt/libvirt-4.3.0.ebuild | 5 | ||||
-rw-r--r-- | app-emulation/libvirt/libvirt-4.4.0-r1.ebuild | 5 | ||||
-rw-r--r-- | app-emulation/libvirt/libvirt-4.5.0-r1.ebuild | 9 | ||||
-rw-r--r-- | app-emulation/libvirt/libvirt-4.6.0-r1.ebuild | 382 | ||||
-rw-r--r-- | app-emulation/libvirt/libvirt-9999.ebuild | 7 |
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 |