| 1 | # Contributor: Krassy Boykinov <[email protected]> |
| 2 | maintainer="Francesco Colista <[email protected]>" |
| 3 | pkgname=libvirt |
| 4 | pkgver=12.7.0 |
| 5 | _ver="${pkgver/_rc/-rc}" |
| 6 | pkgrel=0 |
| 7 | pkgdesc="Virtualization API for several hypervisor and container systems" |
| 8 | url="https://libvirt.org/" |
| 9 | arch="all" |
| 10 | options="!check" |
| 11 | license="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 | " |
| 27 | depends="lvm2" |
| 28 | depends_dev="$pkgname=$pkgver-r$pkgrel" |
| 29 | # mdev support is also present for some time already |
| 30 | makedepends=" |
| 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 | " |
| 66 | install="$pkgname.post-install" |
| 67 | subpackages=" |
| 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 | " |
| 80 | source="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 |
| 92 | case "$CARCH" in |
| 93 | aarch64|x86_64) |
| 94 | subpackages="$subpackages $pkgname-xen" |
| 95 | makedepends="$makedepends xen-dev zfs ceph-dev" |
| 96 | _status_libxl=enabled |
| 97 | ;; |
| 98 | armv7) |
| 99 | subpackages="$subpackages $pkgname-xen" |
| 100 | makedepends="$makedepends xen-dev" |
| 101 | _status_libxl=enabled |
| 102 | ;; |
| 103 | armhf|x86) |
| 104 | _status_libxl=disabled |
| 105 | ;; |
| 106 | *) |
| 107 | _status_libxl=disabled |
| 108 | makedepends="$makedepends ceph-dev" |
| 109 | ;; |
| 110 | esac |
| 111 | |
| 112 | # qemu no longer works on 32 bit |
| 113 | case "$CARCH" in |
| 114 | arm*|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 | ;; |
| 122 | esac |
| 123 | |
| 124 | # -common-drivers subpackage needs to be last |
| 125 | subpackages="$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 | |
| 145 | build() { |
| 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 | |
| 176 | check() { |
| 177 | meson test --print-errorlogs -C output |
| 178 | } |
| 179 | |
| 180 | package() { |
| 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 | |
| 199 | dev() { |
| 200 | default_dev |
| 201 | |
| 202 | amove usr/share/libvirt/api |
| 203 | } |
| 204 | |
| 205 | daemon() { |
| 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 | |
| 217 | client() { |
| 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 | |
| 252 | qemu() { _mv_driver "QEMU" qemu qemu; } |
| 253 | xen() { _mv_driver "XEN" "libxl xen" xen; } |
| 254 | lxc() { _mv_driver "LXC" lxc lxc; } |
| 255 | vbox() { _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 | |
| 265 | sha512sums=" |
| 266 | 1458a56fac9f9b6a4b198c9dab4cc6388c8a50e625ad6a6f6ebb2852c21a75249c2acaa0a8c712ebba3a05dff654732883e8f197fea2c684ce2be7251153a018 libvirt-12.7.0.tar.xz |
| 267 | c3647366e589f2134599baefcbd7ec480cbc0830c71f95cd903cacb28e463d4cd8d972fbd1db81aa17eef81c1f701bd3937c9b8eb71d56ee630e1ed8b89887e9 libvirt.confd |
| 268 | 4e28dc733a5db0e102ed529f3215d44c52ce0495dc109e2ef53465a0e205e2ba6f5f0ff56cc6e27318572ca560d778dd24a3faf092e7ab7819674c42876aa764 libvirt.initd |
| 269 | 78f419a89de7aabaad860903c24f1c070786fc1296d987e61dd537705b0e7f71a46c315888028f3826c3417e42861ca8471788be4ec5695e98427c5f18ae63fc libvirt-guests.confd |
| 270 | ec2bc46d72afa61513983b777e2d49da618a35a4687bc75674b3a49ababd4e2e387661010d342fee86c7a73d259644985a263a6c2976e29a436d88921bb040b0 libvirt-guests.initd |
| 271 | f93313c387c21bafb760f599942f1cdecfe952af80af42a28e8525118e5a7fd512d9f909039d8b15f1a544957f1d70a0728c55de2bae41a87e5be6dbbb4f6208 virtlogd.initd |
| 272 | d8ef64d76e8be521a6551893cc7c6aa7e5d8c627a9aed87beefefc126798dc0f98bf420609b6afc027ad96cca347a1c5db8f703d09853efde4d1a6a35572fbf1 virtlockd.initd |
| 273 | " |