summaryrefslogblamecommitdiffstats
path: root/core/modules/libvirt-src/module.build
blob: fd22d2a4579246935c2460163a1601846f7621ac (plain) (tree)
1
2
3
4
5
6
7
8
9
10





                                      



                                          



                                               

                                                                                                                    
                                                                                    



                                                                                         











                                                                                                                         
                                                                                      
 






                                             
                                

















                                                                                         


                                                





                                                                                                                     
                                                                   
                                                                           
                                                                                                      
          




             
#!/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() {
	:
}