summaryrefslogtreecommitdiffstats
path: root/core/modules/libvirt-src/module.build
blob: b818b6a5cfbda67cb4478a6672400891fbce1911 (plain) (blame)
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
#!/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}"
}

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