Adding python3.10, podman

This commit is contained in:
Gerardo J. Puerta
2022-03-24 12:06:13 +01:00
parent 7d47d45fe6
commit 63bf96895a
72 changed files with 6362 additions and 0 deletions

View File

@ -0,0 +1,11 @@
AUX README.gentoo-r3 1852 BLAKE2B f9525ddc3ab50958cb83dc9b9a64b29db526e7e9a7c06ac20224c0637f2425c96f0bdb5e484c744d0888cbb5a1dd518ab065e82655732fc8db5a2030d10f3346 SHA512 b56e41a895afdeee8ec690f9992ba2f0db285847337210a18102974558fa01a93c24ceaa1bab22390a0f0bbda0a5c837187098f2a7786afa86ac5b5c23614b0f
AUX libvirt-guests.confd 2430 BLAKE2B 9d56477c9377e02503782e6d653579c6d149b292c43f37926f4646374e8aae05ca812b6a3a561811482861f8fe67dfdbe63851963326ddbbf2f4644c85411120 SHA512 78f419a89de7aabaad860903c24f1c070786fc1296d987e61dd537705b0e7f71a46c315888028f3826c3417e42861ca8471788be4ec5695e98427c5f18ae63fc
AUX libvirt-guests.init-r4 5591 BLAKE2B e745692a7ea706c8367cdb7ee2114565770bda5be5675ba3a541555659d17875f7996ff7028bf415224d095b49b71205a3d77f420464d5579ccc189def5e434d SHA512 ec2bc46d72afa61513983b777e2d49da618a35a4687bc75674b3a49ababd4e2e387661010d342fee86c7a73d259644985a263a6c2976e29a436d88921bb040b0
AUX libvirtd.confd-r5 740 BLAKE2B 74a069f4902dd1352f06029c886200615a35870ff88496c91956d23a3172db0789086622422f545498e92b7f8de41225022185fe291dd580cbacdeb783163f4b SHA512 98f935589dbc5f2a99329f77fdf84c563fa0dc99404b7476603679478d68ce8dbea2c88645251d3c28f59e7bcae124ae632972146e8a8c3e0e9fcbfb27296f91
AUX libvirtd.init-r19 1114 BLAKE2B a69f5a07e0b946a3167ac4509611d08a8b848e7337677cce36f0eff8e2f646fb03d92279eb3c4427b25649210c8acf280cb9877e0c5c363f1f358b211b208d9d SHA512 6192888e5dbf384cfecab2c1e55fb9a2ceba83390aa71cd8c0be0526a7cc3f9c2a9d7a71d4fe6bbb528871e8e7bc5c73e385ef56eec2366bcc75eb361e7d1894
AUX libvirtd.tmpfiles.conf 36 BLAKE2B fa0e1dac4117dcb2a2e826c82c4c63e20156db47abf4088167484f1f3149a4998840cf1aba745621851d7e2653df5c7f7268d8d61be3a3731ea053a88f35c13b SHA512 2b1c3c64dd6fa03d8c2ae24e7ce4aa7d754913214542a68a4e99f10fbc251fd23ee26e297a957d7b4b70eec8ef028c41fc915da3a85fbbd16143bb92d1de3aed
AUX virtlockd.init-r2 573 BLAKE2B 83bbd228bd59fa29f1d974bc5eec8af0b701328a0a64bbb9e2d9cb918d5d0b3c0d5e791afa18f47ffa2c429082083912fda3f2401c3c5b3d8d85ea8b7cacf440 SHA512 11bf7208e8da8cf7b907049100d095f4d6b5d215a0955fa620e50d6d541d3ecd9d779a7903c64feb25d17545c45491d52441e14a04f2c793f3b03dee7784c482
AUX virtlogd.init-r2 572 BLAKE2B e6a86e34eda78fc032df17e1bd94095e357770f4036e19fff895266b58df7e31774f6004fec56fad9e69bf7d1afa5d898bdebe018013877f8844d05b3a46d509 SHA512 d5d83edee8a4bdf0dac79abc129ff7ec11573aa580e32963d7c7d47133e276a4427d8653683fc8b0a6c1c2aba631e5875c73454d6fef3bcac6dcaca542e69f34
DIST libvirt-7.5.0.tar.xz 8642788 BLAKE2B 467dbd2a337beee5d9f10de7bc37ca988e85fad17fb75e6ab73c13cf79eceab27c9ff51bbe2ac9f6c121feed4c67860fa263e601e10f6b1dd7b8a647b53228a7 SHA512 cf89800c8970b8b1373ee32cc49ea88b87e76b50fd134df5da354be83e0ef490e514f16425c1c16eb3989fbadd3ba7d9976972fbbae6cb40db3d2ae94863219d
EBUILD libvirt-7.5.0.ebuild 8485 BLAKE2B 8c2c01de8d2ec29e2b26405eaec89f4ddbaf6816791f900854bbed93758804c64ae567d5a5c1d74d38af79f8603bace73864c416abf02d73b2982c5831b2e5af SHA512 c91e53751493902a5be3b676c157af45cf21241a768dbba90d27a6a5d812039a6d40ea3586e20f31f9402b194891043aeb952a714d44b3bac385169a0d41d73d
MISC autogen.py 941 BLAKE2B e13858a41641f4519794781be66a19264f82788bf9c61246190ff2a5e52280c1b807bd6fed40492e90c6e961c76d87138701b699b7981863e094cb5397d1612b SHA512 fd24384f02535a23b5d61ca9a44d634209bb292b49345610718fd77d2cd659fbaa74b1f7edfa224d6aafecf70e38961a5fd2bfd03babe3b6581d3b8c720c811f

View File

@ -0,0 +1,36 @@
#!/usr/bin/env python3
import json
async def generate(hub, **pkginfo):
json_data = await hub.pkgtools.fetch.get_page("https://gitlab.com/api/v4/projects/192693/repository/tags")
json_list = json.loads(json_data)
for tag in json_list:
v = tag["name"].lstrip("v")
if "-rc" in v:
continue
version = v
break
url = f"https://libvirt.org/sources/libvirt-{version}.tar.xz"
urlpy = f"https://libvirt.org/sources/python/libvirt-python-{version}.tar.gz"
python_compat = "python3+"
ebuild = hub.pkgtools.ebuild.BreezyBuild(
**pkginfo, version=version, python_compat=python_compat, artifacts=[hub.pkgtools.ebuild.Artifact(url=url)]
)
ebuild.push()
ebuildpy = hub.pkgtools.ebuild.BreezyBuild(
template_path=ebuild.template_path,
cat="dev-python",
name="libvirt-python",
python_compat=python_compat,
version=version,
artifacts=[hub.pkgtools.ebuild.Artifact(url=urlpy)],
)
ebuildpy.push()
# vim: ts=4 sw=4 noet

View File

@ -0,0 +1,49 @@
Important: The openrc libvirtd init script is now broken up into two
separate services: libvirtd, that solely handles the daemon, and
libvirt-guests, that takes care of clients during shutdown/restart of the
host. In order to reenable client handling, edit /etc/conf.d/libvirt-guests
and enable the service and start it:
$ rc-update add libvirt-guests
$ service libvirt-guests start
For the basic networking support (bridged and routed networks) you don't
need any extra software. For more complex network modes including but not
limited to NATed network, you can enable the 'virt-network' USE flag. It
will pull in required runtime dependencies
If you are using dnsmasq on your system, you will have to configure
/etc/dnsmasq.conf to enable the following settings:
bind-interfaces
interface or except-interface
Otherwise you might have issues with your existing DNS server.
For openrc users:
Please use /etc/conf.d/libvirtd to control the '--listen' parameter for
libvirtd.
Use /etc/init.d/libvirt-guests to manage clients on restart/shutdown of
the host. The default configuration will suspend and resume running kvm
guests with 'managedsave'. This behavior can be changed under
/etc/conf.d/libvirt-guests
If you have built libvirt with policykit support, a new group "libvirt" has
been created. Simply add a user to the libvirt group in order to grant
administrative access to libvirtd. Alternatively, drop a custom policykit
rule into /etc/polkit-1/rules.d.
If you have built libvirt without policykit support (USE=-policykit), you
must change the unix sock group and/or perms in /etc/libvirt/libvirtd.conf
in order to allow normal users to connect to libvirtd.
If libvirt is built with USE=caps, libvirt will now start qemu/kvm VMs
with non-root privileges. Ensure any resources your VMs use are accessible
by qemu:qemu.

View File

@ -0,0 +1,68 @@
# /etc/conf.d/libvirtd
# LIBVIRT_URIS
# space separated list of libvirt URIs to communicate with to start/stop guests
# Valid values are anything that can be passed to 'virsh connect'
#LIBVIRT_URIS="qemu:///system"
# LIBVIRT_SHUTDOWN
# Valid options:
# * managedsave - Performs a state save external to the VM (for hypervisors
# supporting this operation). qemu-kvm will stop the CPU
# and save off all state to a separate file. When the
# machine is started again, it will resume like nothing
# ever happened. This is guarenteed to always successfully
# stop your machine and restart it.
#
# * shutdown - Sends an ACPI shutdown (think of this as a request to
# your guest to shutdown). There is no way to distinguish
# between guests that are ignoring the shutdown request or
# are stuck or are taking a long time to shutdown. We will
# wait LIBVIRT_MAXWAIT seconds before yanking the power
# out.
#
# * destroy - Immediately stop all running guests. Use with caution as
# this can leave the guest in a corrupted state and might
# lead to data loss.
#
#LIBVIRT_SHUTDOWN="managedsave"
# LIBVIRT_MAXWAIT
# Timeout in seconds until stopping a guest and "pulling the plug" on the
# guest
# Valid values are any integer over 0
#LIBVIRT_MAXWAIT="500"
# LIBVIRT_START
# If this value is set to 'no', then guests and networks that were shutdown
# by this script when it was stopped will not be started when it is started
# back up.
# Valid values are yes or no
#LIBVIRT_START="yes"
# LIBVIRT_IGNORE_AUTOSTART
# If the VM is marked for autostart in its XML configuration then we won't
# save its start when the init script is stopped. The result is that when
# the init script starts back up, no attempt will be made to start the VM or
# confirm it is started.
# Valid values are yes or no
#LIBVIRT_IGNORE_AUTOSTART="no"
# LIBVIRT_NET_SHUTDOWN
# If libvirtd created networks for you (e.g. NATed networks) then this init
# script will shut them down for you if this is set to 'yes'. Otherwise,
# the networks will be left running. For this option to be useful you must
# have enabled the 'virt-network' USE flag and have had libvirt create a
# NATed network for you. Valid values: 'yes' or 'no'
#LIBVIRT_NET_SHUTDOWN="yes"

View File

@ -0,0 +1,237 @@
#!/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
do_virsh "${uri}" domtime --sync ${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
}

View File

@ -0,0 +1,18 @@
# /etc/conf.d/libvirtd
# Startup dependency
# libvirtd typically requires all networks to be up and settled which
# is what rc_need="net" provides. However if you only use specific networks
# for libvirtd, you may override this. Or if you only use libvirtd locally.
rc_need="net"
# The termination timeout (start-stop-daemon parameter "retry") ensures
# that the service will be terminated within a given time (25 + 5 seconds
# per default) when you are stopping the service.
#LIBVIRTD_TERMTIMEOUT="TERM/25/KILL/5"
# LIBVIRTD_OPTS
# You may want to add '--listen' to have libvirtd listen for tcp/ip connections
# if you want to use libvirt for remote control
# Please consult 'libvirtd --help' for more options
#LIBVIRTD_OPTS="--listen"

View File

@ -0,0 +1,33 @@
#!/sbin/openrc-run
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
description="Virtual Machine Management daemon (libvirt)"
LIBVIRTD_OPTS=${LIBVIRTD_OPTS:-"${LIBVIRTD_OPTS}"}
LIBVIRTD_TIMEOUT=${LIBVIRTD_TERMTIMEOUT:-"TERM/25/KILL/5"}
command="/usr/sbin/libvirtd"
command_args="${LIBVIRTD_OPTS}"
start_stop_daemon_args="-b --env KRB5_KTNAME=/etc/libvirt/krb5.tab"
pidfile="/run/libvirtd.pid"
retry="${LIBVIRTD_TERMTIMEOUT}"
depend() {
need virtlogd
use ceph dbus iscsid virtlockd
after cgconfig corosync ebtables iptables ip6tables nfs nfsmount ntp-client ntpdportmap rpc.statd sanlock xenconsoled
USE_FLAG_FIREWALLD
}
start_pre() {
# Test configuration directories in /etc/libvirt/ to be either not
# present or a directory, i.e. not a regular file, bug #532892
checkpath --directory /etc/libvirt/lxc || return 1
checkpath --directory /etc/libvirt/nwfilter || return 1
[ -L /etc/libvirt/qemu ] ||
checkpath --directory /etc/libvirt/qemu || return 1
[ -L /etc/libvirt/storage ] ||
checkpath --directory /etc/libvirt/storage || return 1
}

View File

@ -0,0 +1 @@
d /run/libvirt/lxc 0755 root root -

View File

@ -0,0 +1,23 @@
#!/sbin/openrc-run
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
description="libvirt virtual machine lock manager"
command="/usr/sbin/virtlockd"
start_stop_daemon_args="-b"
pidfile="/run/virtlockd.pid"
extra_started_commands="reload"
description_reload="re-exec the daemon, while maintaining locks and clients"
depend() {
after ntp-client ntpd nfs nfsmount corosync
}
reload() {
ebegin "re-exec() virtlockd"
start-stop-daemon --signal SIGUSR1 \
--exec "${command}" --pidfile "${pidfile}"
}

View File

@ -0,0 +1,23 @@
#!/sbin/openrc-run
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
description="libvirt virtual machine logging manager"
command="/usr/sbin/virtlogd"
start_stop_daemon_args="-b"
pidfile="/run/virtlogd.pid"
extra_started_commands="reload"
description_reload="re-exec the daemon, while maintaining open connections"
depend() {
after ntp-client ntpd nfs nfsmount corosync
}
reload() {
ebegin "re-exec() virtlogd"
start-stop-daemon --signal SIGUSR1 \
--exec "${command}" --pidfile "${pidfile}"
}

View File

@ -0,0 +1,333 @@
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3+ )
inherit bash-completion-r1 linux-info meson python-any-r1 readme.gentoo-r1 user
SRC_URI="https://libvirt.org/sources/${P}.tar.xz"
DESCRIPTION="C toolkit to manipulate virtual machines"
HOMEPAGE="https://www.libvirt.org/"
SRC_URI="https://libvirt.org/sources/libvirt-7.5.0.tar.xz"
SLOT="0/${PV}"
LICENSE="LGPL-2.1"
KEYWORDS="*"
IUSE="
apparmor audit +caps +dbus dtrace firewalld fuse glusterfs iscsi
iscsi-direct +libvirtd lvm libssh lxc +macvtap nfs nls numa openvz
parted pcap policykit +qemu rbd sasl selinux +udev +vepa
virtualbox virt-network wireshark-plugins xen zfs
"
REQUIRED_USE="
firewalld? ( virt-network )
libvirtd? ( || ( lxc openvz qemu virtualbox xen ) )
lxc? ( caps libvirtd )
openvz? ( libvirtd )
policykit? ( dbus )
qemu? ( 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
MESON_DEPEND=">=dev-util/meson-0.54.0"
RDEPEND="
app-misc/scrub
>=dev-libs/glib-2.48.0
dev-libs/libgcrypt:0
dev-libs/libnl:3
>=dev-libs/libxml2-2.7.6
>=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 )
dtrace? ( dev-util/systemtap )
firewalld? ( >=net-firewall/firewalld-0.6.3 )
fuse? ( sys-fs/fuse:0= )
glusterfs? ( >=sys-cluster/glusterfs-3.4.1 )
iscsi? ( sys-block/open-iscsi )
iscsi-direct? ( >=net-libs/libiscsi-1.18.0 )
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-1.5.0
dev-libs/yajl
)
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-4.6.0
app-emulation/xen-tools:=
)
udev? (
virtual/udev
>=x11-libs/libpciaccess-0.10.9
)
zfs? ( sys-fs/zfs )"
DEPEND="${RDEPEND}
${PYTHON_DEPS}
app-text/xhtml1
dev-lang/perl
dev-libs/libxslt
dev-perl/XML-XPath
dev-python/docutils
virtual/pkgconfig"
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
~IP_NF_FILTER
~IP_NF_MANGLE
~IP_NF_NAT
~IP_NF_TARGET_MASQUERADE
~IP6_NF_FILTER
~IP6_NF_MANGLE
~IP6_NF_NAT"
# Bandwidth Limiting Support
use virt-network && CONFIG_CHECK+="
~BRIDGE_EBT_T_NAT
~IP_NF_TARGET_REJECT
~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
# Tweak the init script:
cp "${FILESDIR}/libvirtd.init-r19" "${S}/libvirtd.init" || die
sed -e "s/USE_FLAG_FIREWALLD/$(usex firewalld 'need firewalld' '')/" \
-i "${S}/libvirtd.init" || die "sed failed"
#Replacing recurrent patches with sed scripts
mv src/security/apparmor/usr.lib.libvirt.virt-aa-helper.in src/security/apparmor/usr.libexec.virt-aa-helper.in
for x in $(grep -rl usr.lib.libvirt.virt-aa-helper.in); do
sed -e "s/usr.lib.libvirt.virt-aa-helper.in/usr.libexec.virt-aa-helper.in/g" -i $x
done
sed -e "s#/sysconfig/libvirt-guests#/sysconfig/libvirt-guests.conf#g" \
-e "s#/lock/subsys/libvirt-guests#/lock/libvirt-guests#g" \
-i tools/libvirt-guests.sh.in
}
src_configure() {
local emesonargs=(
$(meson_feature apparmor)
$(meson_use apparmor apparmor_profiles)
$(meson_feature audit)
$(meson_feature caps capng)
$(meson_feature dbus)
$(meson_feature dtrace)
$(meson_feature firewalld)
$(meson_feature fuse)
$(meson_feature glusterfs)
$(meson_feature glusterfs storage_gluster)
$(meson_feature iscsi storage_iscsi)
$(meson_feature iscsi-direct storage_iscsi_direct)
$(meson_feature libvirtd driver_libvirtd)
$(meson_feature libssh)
$(meson_feature lvm storage_lvm)
$(meson_feature lvm storage_mpath)
$(meson_feature lxc driver_lxc)
$(meson_feature macvtap)
$(meson_feature nls)
$(meson_feature numa numactl)
$(meson_feature numa numad)
$(meson_feature openvz driver_openvz)
$(meson_feature parted storage_disk)
$(meson_feature pcap libpcap)
$(meson_feature policykit polkit)
$(meson_feature qemu driver_qemu)
$(meson_feature qemu yajl)
$(meson_feature rbd storage_rbd)
$(meson_feature sasl)
$(meson_feature selinux)
$(meson_feature udev)
$(meson_feature vepa virtualport)
$(meson_feature virt-network driver_network)
$(meson_feature virtualbox driver_vbox)
$(meson_feature wireshark-plugins wireshark_dissector)
$(meson_feature xen driver_libxl)
$(meson_feature zfs storage_zfs)
-Dhal=disabled
-Dnetcf=disabled
-Dsanlock=disabled
-Ddriver_esx=enabled
-Dqemu_group=$(usex caps qemu root)
-Dqemu_user=$(usex caps qemu root)
-Ddriver_remote=enabled
-Dstorage_fs=enabled
-Ddriver_vmware=enabled
--localstatedir=/var
-Drunstatedir=/run
)
meson_src_configure
}
src_test() {
# remove problematic tests, bug #591416
sed -i -e '/commandtest/d' tests/meson.build
meson_src_test
}
src_install() {
meson_src_install
# 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
rm -rf "${D}"/run
use libvirtd || return 0
# From here, only libvirtd-related instructions, be warned!
newinitd "${S}/libvirtd.init" libvirtd
newinitd "${FILESDIR}/libvirt-guests.init-r4" libvirt-guests
newinitd "${FILESDIR}/virtlockd.init-r2" virtlockd
newinitd "${FILESDIR}/virtlogd.init-r2" virtlogd
newconfd "${FILESDIR}/libvirtd.confd-r5" libvirtd
newconfd "${FILESDIR}/libvirt-guests.confd" libvirt-guests
DOC_CONTENTS=$(<"${FILESDIR}/README.gentoo-r3")
DISABLE_AUTOFORMATTING=disabled
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
}

View File

@ -0,0 +1,35 @@
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( {{python_compat}} )
inherit distutils-r1
DESCRIPTION="libvirt Python bindings"
HOMEPAGE="https://www.libvirt.org"
SRC_URI="{{artifacts[0].src_uri}}"
LICENSE="LGPL-2"
SLOT="0"
KEYWORDS="*"
IUSE="examples test"
RESTRICT="!test? ( test )"
RDEPEND="app-emulation/libvirt:0/${PV}"
DEPEND="virtual/pkgconfig"
BDEPEND="test? (
dev-python/lxml[${PYTHON_USEDEP}]
dev-python/nose[${PYTHON_USEDEP}]
)"
distutils_enable_tests setup.py
python_install_all() {
if use examples; then
dodoc -r examples
docompress -x /usr/share/doc/${PF}/examples
fi
distutils-r1_python_install_all
}

View File

@ -0,0 +1,333 @@
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( {{python_compat}} )
inherit bash-completion-r1 linux-info meson python-any-r1 readme.gentoo-r1 user
SRC_URI="https://libvirt.org/sources/${P}.tar.xz"
DESCRIPTION="C toolkit to manipulate virtual machines"
HOMEPAGE="https://www.libvirt.org/"
SRC_URI="{{artifacts[0].src_uri}}"
SLOT="0/${PV}"
LICENSE="LGPL-2.1"
KEYWORDS="*"
IUSE="
apparmor audit +caps +dbus dtrace firewalld fuse glusterfs iscsi
iscsi-direct +libvirtd lvm libssh lxc +macvtap nfs nls numa openvz
parted pcap policykit +qemu rbd sasl selinux +udev +vepa
virtualbox virt-network wireshark-plugins xen zfs
"
REQUIRED_USE="
firewalld? ( virt-network )
libvirtd? ( || ( lxc openvz qemu virtualbox xen ) )
lxc? ( caps libvirtd )
openvz? ( libvirtd )
policykit? ( dbus )
qemu? ( 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
MESON_DEPEND=">=dev-util/meson-0.54.0"
RDEPEND="
app-misc/scrub
>=dev-libs/glib-2.48.0
dev-libs/libgcrypt:0
dev-libs/libnl:3
>=dev-libs/libxml2-2.7.6
>=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 )
dtrace? ( dev-util/systemtap )
firewalld? ( >=net-firewall/firewalld-0.6.3 )
fuse? ( sys-fs/fuse:0= )
glusterfs? ( >=sys-cluster/glusterfs-3.4.1 )
iscsi? ( sys-block/open-iscsi )
iscsi-direct? ( >=net-libs/libiscsi-1.18.0 )
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-1.5.0
dev-libs/yajl
)
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-4.6.0
app-emulation/xen-tools:=
)
udev? (
virtual/udev
>=x11-libs/libpciaccess-0.10.9
)
zfs? ( sys-fs/zfs )"
DEPEND="${RDEPEND}
${PYTHON_DEPS}
app-text/xhtml1
dev-lang/perl
dev-libs/libxslt
dev-perl/XML-XPath
dev-python/docutils
virtual/pkgconfig"
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
~IP_NF_FILTER
~IP_NF_MANGLE
~IP_NF_NAT
~IP_NF_TARGET_MASQUERADE
~IP6_NF_FILTER
~IP6_NF_MANGLE
~IP6_NF_NAT"
# Bandwidth Limiting Support
use virt-network && CONFIG_CHECK+="
~BRIDGE_EBT_T_NAT
~IP_NF_TARGET_REJECT
~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
# Tweak the init script:
cp "${FILESDIR}/libvirtd.init-r19" "${S}/libvirtd.init" || die
sed -e "s/USE_FLAG_FIREWALLD/$(usex firewalld 'need firewalld' '')/" \
-i "${S}/libvirtd.init" || die "sed failed"
#Replacing recurrent patches with sed scripts
mv src/security/apparmor/usr.lib.libvirt.virt-aa-helper.in src/security/apparmor/usr.libexec.virt-aa-helper.in
for x in $(grep -rl usr.lib.libvirt.virt-aa-helper.in); do
sed -e "s/usr.lib.libvirt.virt-aa-helper.in/usr.libexec.virt-aa-helper.in/g" -i $x
done
sed -e "s#/sysconfig/libvirt-guests#/sysconfig/libvirt-guests.conf#g" \
-e "s#/lock/subsys/libvirt-guests#/lock/libvirt-guests#g" \
-i tools/libvirt-guests.sh.in
}
src_configure() {
local emesonargs=(
$(meson_feature apparmor)
$(meson_use apparmor apparmor_profiles)
$(meson_feature audit)
$(meson_feature caps capng)
$(meson_feature dbus)
$(meson_feature dtrace)
$(meson_feature firewalld)
$(meson_feature fuse)
$(meson_feature glusterfs)
$(meson_feature glusterfs storage_gluster)
$(meson_feature iscsi storage_iscsi)
$(meson_feature iscsi-direct storage_iscsi_direct)
$(meson_feature libvirtd driver_libvirtd)
$(meson_feature libssh)
$(meson_feature lvm storage_lvm)
$(meson_feature lvm storage_mpath)
$(meson_feature lxc driver_lxc)
$(meson_feature macvtap)
$(meson_feature nls)
$(meson_feature numa numactl)
$(meson_feature numa numad)
$(meson_feature openvz driver_openvz)
$(meson_feature parted storage_disk)
$(meson_feature pcap libpcap)
$(meson_feature policykit polkit)
$(meson_feature qemu driver_qemu)
$(meson_feature qemu yajl)
$(meson_feature rbd storage_rbd)
$(meson_feature sasl)
$(meson_feature selinux)
$(meson_feature udev)
$(meson_feature vepa virtualport)
$(meson_feature virt-network driver_network)
$(meson_feature virtualbox driver_vbox)
$(meson_feature wireshark-plugins wireshark_dissector)
$(meson_feature xen driver_libxl)
$(meson_feature zfs storage_zfs)
-Dhal=disabled
-Dnetcf=disabled
-Dsanlock=disabled
-Ddriver_esx=enabled
-Dqemu_group=$(usex caps qemu root)
-Dqemu_user=$(usex caps qemu root)
-Ddriver_remote=enabled
-Dstorage_fs=enabled
-Ddriver_vmware=enabled
--localstatedir=/var
-Drunstatedir=/run
)
meson_src_configure
}
src_test() {
# remove problematic tests, bug #591416
sed -i -e '/commandtest/d' tests/meson.build
meson_src_test
}
src_install() {
meson_src_install
# 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
rm -rf "${D}"/run
use libvirtd || return 0
# From here, only libvirtd-related instructions, be warned!
newinitd "${S}/libvirtd.init" libvirtd
newinitd "${FILESDIR}/libvirt-guests.init-r4" libvirt-guests
newinitd "${FILESDIR}/virtlockd.init-r2" virtlockd
newinitd "${FILESDIR}/virtlogd.init-r2" virtlogd
newconfd "${FILESDIR}/libvirtd.confd-r5" libvirtd
newconfd "${FILESDIR}/libvirt-guests.confd" libvirt-guests
DOC_CONTENTS=$(<"${FILESDIR}/README.gentoo-r3")
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
}