#!/bin/bash LIBVIRT_QEMU_USR="libvirt-qemu" LIBVIRT_QEMU_GRP="kvm" LIBVIRT_PTHR_GRP="libvirt-passthrough" # group to access software TPM module # group is already created by swtpm module LIBVIRT_STPM_GRP="libvirt-tpm" module_init() { groupadd --system "${LIBVIRT_QEMU_GRP}" groupadd --system "${LIBVIRT_QEMU_USR}" groupadd --system "${LIBVIRT_PTHR_GRP}" useradd --gid "${LIBVIRT_QEMU_GRP}" --groups "${LIBVIRT_QEMU_USR},${LIBVIRT_PTHR_GRP},${LIBVIRT_STPM_GRP}" \ --system \ --no-create-home --home-dir "/var/lib/libvirt" "${LIBVIRT_QEMU_USR}" local grp for grp in libvirt-passthrough libvirt-tpm dialout; do add_to_group demo "$grp" || perror "Could not add 'demo' to group '$grp'" done } fetch_source() { autoclone git -C "${MODULE_WORK_DIR}/src/libvirt" submodule update --init || perror "Failed to init and update submodules!" } build() { local SRCDIR="${MODULE_WORK_DIR}/src/libvirt" local DSTDIR="${MODULE_BUILD_DIR}" cde "${SRCDIR}" sed -i 's/-Wdeprecated-declarations/-Wno-deprecated-declarations/' meson.build meson build \ --prefix="/usr" \ --sysconfdir="/etc" \ --libexecdir="/usr/libexec" \ --localstatedir="/var" \ -Dsystem=true \ -Dtests=disabled \ -Ddocs=enabled \ -Dwireshark_dissector=disabled \ -Dstorage_dir=enabled \ -Dstorage_disk=enabled \ -Dstorage_lvm=enabled \ -Ddriver_qemu=enabled \ -Dqemu_user="${LIBVIRT_QEMU_USR}" \ -Dqemu_group="${LIBVIRT_QEMU_GRP}" \ -Ddriver_vbox=enabled \ -Ddriver_vmware=enabled \ -Ddriver_remote=enabled || perror "'meson' failed." ninja -v -C build || perror "'ninja' failed." DESTDIR="${DSTDIR}" ninja -v -C build install || perror "'ninja install' failed." # delete default libvirt network rm "${DSTDIR}/etc/libvirt/qemu/networks/autostart/default.xml" rm "${DSTDIR}/etc/libvirt/qemu/networks/default.xml" # delete installed test and documentation files rm -rf "${DSTDIR}/usr/share/augeas" rm -rf "${DSTDIR}/usr/share/doc/libvirt" # patch library directory in pkg-config files sed -i 's/^libdir=.*$/libdir=\/usr\/lib\/x86_64-linux-gnu/g' "${DSTDIR}/usr/lib64/pkgconfig/libvirt.pc" sed -i 's/^libdir=.*$/libdir=\/usr\/lib\/x86_64-linux-gnu/g' "${DSTDIR}/usr/lib64/pkgconfig/libvirt-admin.pc" sed -i 's/^libdir=.*$/libdir=\/usr\/lib\/x86_64-linux-gnu/g' "${DSTDIR}/usr/lib64/pkgconfig/libvirt-lxc.pc" sed -i 's/^libdir=.*$/libdir=\/usr\/lib\/x86_64-linux-gnu/g' "${DSTDIR}/usr/lib64/pkgconfig/libvirt-qemu.pc" # delete non-empty run folder to prevent mltk from stopping if [ -d "${DSTDIR}/var/run" ] && ! [ -L "${DSTDIR}/var/run" ]; then rm -rf -- "${DSTDIR}/var/run" || perror "${DSTDIR}/var/run exists could not be killed" fi } post_copy() { : }