1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{13..14} )
inherit gnome2 python-single-r1 optfeature meson verify-sig
DESCRIPTION="Desktop tool for managing libvirt virtual machines"
HOMEPAGE="https://virt-manager.org https://github.com/virt-manager/virt-manager"
if [[ ${PV} == *9999* ]]; then
EGIT_REPO_URI="https://github.com/virt-manager/virt-manager.git"
EGIT_BRANCH="main"
SRC_URI=""
inherit git-r3
else
SRC_URI="
https://releases.pagure.org/${PN}/${P}.tar.xz
https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${P}-elementtree-fallback.patch.xz
verify-sig? ( https://releases.pagure.org/${PN}/${P}.tar.xz.asc )
"
KEYWORDS="amd64 arm64 ppc64 x86"
fi
LICENSE="CC0-1.0 GPL-2+" # appdata & source code
SLOT="0"
IUSE="gui policykit sasl verify-sig"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
# https://github.com/virt-manager/virt-manager/blob/main/virt-manager.spec.in
RDEPEND="
${PYTHON_DEPS}
|| ( dev-libs/libisoburn app-cdr/cdrtools )
>=app-emulation/libvirt-glib-0.0.9[introspection]
>=sys-libs/libosinfo-0.2.10[introspection]
$(python_gen_cond_dep '
dev-python/argcomplete[${PYTHON_USEDEP}]
>=dev-python/libvirt-python-6.10.0[${PYTHON_USEDEP}]
dev-python/pygobject:3[${PYTHON_USEDEP}]
dev-python/requests[${PYTHON_USEDEP}]
')
gui? (
gnome-base/dconf
>=net-libs/gtk-vnc-0.3.8[gtk3(+),introspection]
net-misc/spice-gtk[usbredir,gtk3,introspection,sasl?]
sys-apps/dbus
x11-libs/gtk+:3[introspection]
|| (
x11-libs/gtksourceview:4[introspection]
x11-libs/gtksourceview:3.0[introspection]
)
x11-libs/vte:2.91[introspection]
policykit? ( sys-auth/polkit[introspection] )
)
"
DEPEND="${RDEPEND}"
BDEPEND="
dev-python/docutils
sys-devel/gettext
verify-sig? ( >=sec-keys/openpgp-keys-virt-manager-20250106 )
"
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/virt-manager.asc
DOCS=( {DESIGN,NEWS,README}.md )
PATCHES=(
"${WORKDIR}"/${P}-elementtree-fallback.patch
)
src_unpack() {
if use verify-sig ; then
verify-sig_verify_detached "${DISTDIR}"/${P}.tar.xz{,.asc}
fi
unpack ${P}.tar.xz
unpack ${P}-elementtree-fallback.patch.xz
}
src_configure() {
local emesonargs=( # in upstream's order
-Dupdate-icon-cache=false
-Dcompile-schemas=false
# -Ddefault-graphics=spice # default
# we do not ship OpenVZ and bhyve does not work on linux
-Ddefault-hvs="['qemu','xen','lxc']"
# While in the past we did allow test suite to run, any errors from
# test_cli.py were ignored. Since that's where like 90% of tests actually
# lives, just disable tests (and do not drag additional dependencies).
-Dtests=disabled
)
meson_src_configure
}
src_install() {
meson_src_install
if ! use gui; then
rm -r "${ED}/usr/share/applications/${PN}.desktop" || die
rm -r "${ED}/usr/share/${PN}/icons/" || die
rm -r "${ED}/usr/share/${PN}/ui/" || die
rm -r "${ED}/usr/share/icons/" || die
rm -r "${ED}/usr/bin/${PN}" || die
fi
python_fix_shebang "${ED}"
python_optimize "${ED}"/usr/share/virt-manager/virt{inst,Manager}
}
pkg_postinst() {
use gui && gnome2_pkg_postinst
# OPTFEATURE SECTION
# keep app-emulation/* optfeatures on top and multiline on the bottom
if has_version app-emulation/qemu; then
optfeature "Full QEMU host support" app-emulation/qemu[usbredir,spice]
fi
if use policykit && has_version app-emulation/libvirt[-policykit]; then
optfeature "PolicyKit integration with local libvirt instance" \
app-emulation/libvirt[policykit]
fi
# it's possible this also requires libguestfs-appliance but it's a RDEPEND of libguestfs
optfeature "Inspection of guest filesystems" app-emulation/libguestfs[libvirt,python]
optfeature "SSH_ASKPASS program implementation" \
kde-plasma/ksshaskpass \
lxqt-base/lxqt-openssh-askpass \
net-misc/ssh-askpass-fullscreen \
net-misc/x11-ssh-askpass
}
|