projects/aports·blob master · refs

273 lines · 6.7 KiB

1# Contributor: Krassy Boykinov <[email protected]>
2maintainer="Francesco Colista <[email protected]>"
3pkgname=libvirt
4pkgver=12.7.0
5_ver="${pkgver/_rc/-rc}"
6pkgrel=0
7pkgdesc="Virtualization API for several hypervisor and container systems"
8url="https://libvirt.org/"
9arch="all"
10options="!check"
11license="LGPL-2.1-or-later"
12# ongoing efforts since libvirt-10.4.0 to replace iptables with nftables, only `nwfilter` module is still using it
13_daemon_deps="
14 bridge-utils
15 dmidecode
16 dnsmasq
17 iproute2-tc
18 iptables
19 util-linux-misc
20 "
21_client_deps="
22 gnutls-utils
23 libxslt
24 netcat-openbsd
25 pm-utils
26 "
27depends="lvm2"
28depends_dev="$pkgname=$pkgver-r$pkgrel"
29# mdev support is also present for some time already
30makedepends="
31 $_client_deps
32 $_daemon_deps
33 $depends_dev
34 acl-dev
35 augeas-dev
36 bash-completion-dev
37 curl-dev
38 cyrus-sasl-dev
39 device-mapper
40 e2fsprogs-dev
41 eudev-dev
42 fuse3-dev
43 gnutls-dev
44 json-c-dev
45 libcap-ng-dev
46 libnl3-dev
47 libpcap-dev
48 libpciaccess-dev
49 libssh2-dev
50 libtasn1-dev
51 libtirpc-dev
52 libxml2-dev
53 linux-headers
54 lvm2-dev
55 lxc-dev
56 meson
57 netcf-dev
58 parted-dev
59 perl
60 perl-xml-xpath
61 polkit-dev
62 py3-docutils
63 readline-dev
64 rpcsvc-proto
65 "
66install="$pkgname.post-install"
67subpackages="
68 $pkgname-bash-completion
69 $pkgname-client
70 $pkgname-daemon
71 $pkgname-daemon-openrc
72 $pkgname-dbg
73 $pkgname-dev
74 $pkgname-doc
75 $pkgname-lang
76 $pkgname-libs
77 $pkgname-lxc
78 $pkgname-vbox
79 "
80source="https://libvirt.org/sources/libvirt-$pkgver.tar.xz
81 libvirt.confd
82 libvirt.initd
83 libvirt-guests.confd
84 libvirt-guests.initd
85 virtlogd.initd
86 virtlockd.initd
87 "
88
89# Libvirt Driver for xen dependencies only available on armv7, aarch64 & x86_64
90# ceph is not available for 32-bit architectures any more,
91# see c200fc8348aab89acb67065d19585387667220c3
92case "$CARCH" in
93aarch64|x86_64)
94 subpackages="$subpackages $pkgname-xen"
95 makedepends="$makedepends xen-dev zfs ceph-dev"
96 _status_libxl=enabled
97 ;;
98armv7)
99 subpackages="$subpackages $pkgname-xen"
100 makedepends="$makedepends xen-dev"
101 _status_libxl=enabled
102 ;;
103armhf|x86)
104 _status_libxl=disabled
105 ;;
106*)
107 _status_libxl=disabled
108 makedepends="$makedepends ceph-dev"
109 ;;
110esac
111
112# qemu no longer works on 32 bit
113case "$CARCH" in
114arm*|x86)
115 _qemu="disabled"
116 ;;
117*)
118 _qemu="enabled"
119 makedepends="$makedepends qemu-pr-helper qemu>=5.2.0"
120 subpackages="$subpackages $pkgname-qemu"
121 ;;
122esac
123
124# -common-drivers subpackage needs to be last
125subpackages="$subpackages $pkgname-common-drivers:_common_drivers"
126
127# secfixes:
128# 11.10.0-r0:
129# - CVE-2025-12748
130# - CVE-2025-13193
131# 10.7.0-r0:
132# - CVE-2024-8235
133# 7.5.0-r0:
134# - CVE-2021-3631
135# 6.8.0-r0:
136# - CVE-2020-25637
137# 6.6.0-r0:
138# - CVE-2020-14339
139# 5.5.0-r0:
140# - CVE-2019-10168
141# - CVE-2019-10167
142# - CVE-2019-10166
143# - CVE-2019-10161
144
145build() {
146 # silence repetitive warnings
147 CFLAGS="$CFLAGS -Wno-inline" \
148 abuild-meson \
149 -Db_lto=true \
150 --libexec=/usr/lib/$pkgname \
151 -Dinit_script=openrc \
152 -Ddriver_esx=enabled \
153 -Ddriver_interface=enabled \
154 -Ddriver_libvirtd=enabled \
155 -Ddriver_libxl=$_status_libxl \
156 -Ddriver_lxc=enabled \
157 -Ddriver_network=enabled \
158 -Ddriver_openvz=enabled \
159 -Ddriver_qemu=$_qemu \
160 -Ddriver_vbox=enabled \
161 -Ddriver_vmware=enabled \
162 -Dstorage_dir=enabled \
163 -Dstorage_disk=enabled \
164 -Dstorage_fs=enabled \
165 -Dstorage_lvm=enabled \
166 -Dstorage_mpath=enabled \
167 -Dstorage_scsi=enabled \
168 -Dstorage_vstorage=enabled \
169 -Dstorage_zfs=enabled \
170 . output
171
172 meson configure --no-pager output
173 meson compile -C output
174}
175
176check() {
177 meson test --print-errorlogs -C output
178}
179
180package() {
181 DESTDIR="$pkgdir" meson install --no-rebuild -C output
182 install -Dm755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/libvirtd
183 install -Dm644 "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/libvirtd
184 install -Dm755 "$srcdir"/$pkgname-guests.initd "$pkgdir"/etc/init.d/libvirt-guests
185 install -Dm644 "$srcdir"/$pkgname-guests.confd "$pkgdir"/etc/conf.d/libvirt-guests
186
187 install -Dm755 "$srcdir"/virtlogd.initd "$pkgdir"/etc/init.d/virtlogd
188 install -Dm755 "$srcdir"/virtlockd.initd "$pkgdir"/etc/init.d/virtlockd
189
190 install -d "$pkgdir"/usr/lib/modules-load.d
191 echo "tun" > "$pkgdir"/usr/lib/modules-load.d/libvirt.conf
192
193 rm -rf "$pkgdir"/etc/sysconfig
194 rm -rf "$pkgdir"/usr/lib/charset.alias
195 rm -f "$pkgdir"/usr/lib/sysctl.d/60-qemu-postcopy-migration.conf
196 rmdir -p "$pkgdir"/usr/lib 2>/dev/null || true
197}
198
199dev() {
200 default_dev
201
202 amove usr/share/libvirt/api
203}
204
205daemon() {
206 cd "$builddir"
207 pkgdesc="libvirt daemon package"
208 depends="libvirt-client=$pkgver-r$pkgrel $_daemon_deps"
209 replaces="libvirt"
210
211 amove usr/lib/modules-load.d
212 amove etc/libvirt/libvirtd.conf
213 amove usr/sbin/libvirtd
214 amove etc/logrotate.d/libvirtd
215}
216
217client() {
218 cd "$builddir"
219 pkgdesc="libvirt client package"
220 depends="libvirt=$pkgver-r$pkgrel $_client_deps"
221 replaces="libvirt"
222
223 amove etc/libvirt/libvirt.conf
224 amove usr/bin
225}
226
227_mv_driver() {
228 local _name="$1" _drivers="$2" _pkg="$3"
229 pkgdesc="$_name driver for libvirt"
230 depends="$pkgname-daemon=$pkgver-r$pkgrel
231 $pkgname-common-drivers=$pkgver-r$pkgrel"
232 replaces="libvirt"
233 if [ -n "$_pkg" ]; then
234 install_if="$pkgname-daemon=$pkgver-r$pkgrel $_pkg"
235 else
236 install_if=
237 fi
238 local _dir=/usr/lib/libvirt/connection-driver
239 mkdir -p "$subpkgdir"/$_dir \
240 "$subpkgdir"/etc/libvirt \
241 "$subpkgdir"/etc/logrotate.d
242 local _d
243 cd "$pkgdir"
244 for _d in $_drivers; do
245 # shellcheck disable=1087
246 find . -name "*$_d[.-]*" -o -name "*$_d" | while read -r _f; do
247 amove $_f
248 done
249 done
250}
251
252qemu() { _mv_driver "QEMU" qemu qemu; }
253xen() { _mv_driver "XEN" "libxl xen" xen; }
254lxc() { _mv_driver "LXC" lxc lxc; }
255vbox() { _mv_driver "VirtualBox" vbox; }
256
257_common_drivers() {
258 pkgdesc="Common libvirt daemon drivers"
259 replaces="libvirt"
260
261 amove etc/libvirt/nwfilter
262 amove usr/lib/libvirt/connection-driver
263}
264
265sha512sums="
2661458a56fac9f9b6a4b198c9dab4cc6388c8a50e625ad6a6f6ebb2852c21a75249c2acaa0a8c712ebba3a05dff654732883e8f197fea2c684ce2be7251153a018 libvirt-12.7.0.tar.xz
267c3647366e589f2134599baefcbd7ec480cbc0830c71f95cd903cacb28e463d4cd8d972fbd1db81aa17eef81c1f701bd3937c9b8eb71d56ee630e1ed8b89887e9 libvirt.confd
2684e28dc733a5db0e102ed529f3215d44c52ce0495dc109e2ef53465a0e205e2ba6f5f0ff56cc6e27318572ca560d778dd24a3faf092e7ab7819674c42876aa764 libvirt.initd
26978f419a89de7aabaad860903c24f1c070786fc1296d987e61dd537705b0e7f71a46c315888028f3826c3417e42861ca8471788be4ec5695e98427c5f18ae63fc libvirt-guests.confd
270ec2bc46d72afa61513983b777e2d49da618a35a4687bc75674b3a49ababd4e2e387661010d342fee86c7a73d259644985a263a6c2976e29a436d88921bb040b0 libvirt-guests.initd
271f93313c387c21bafb760f599942f1cdecfe952af80af42a28e8525118e5a7fd512d9f909039d8b15f1a544957f1d70a0728c55de2bae41a87e5be6dbbb4f6208 virtlogd.initd
272d8ef64d76e8be521a6551893cc7c6aa7e5d8c627a9aed87beefefc126798dc0f98bf420609b6afc027ad96cca347a1c5db8f703d09853efde4d1a6a35572fbf1 virtlockd.initd
273"