# Maintainer: Francesco Colista <fcolista@alpinelinux.org>
setvar pkgname = 'libvirt'
setvar pkgver = '3.7.0'
setvar _ver = "${pkgver/_rc/-rc}"
setvar pkgrel = '0'
setvar pkgdesc = ""A virtualization API for several hypervisor and container systems""
setvar url = ""http://libvirt.org/""
setvar arch = ""all""
setvar license = ""LGPL""
setvar _daemon_deps = ""bridge-utils dmidecode dnsmasq ebtables ip6tables iptables""
setvar _client_deps = ""pm-utils gnutls-utils netcat-openbsd""
setvar depends = ""lvm2""
setvar depends_dev = ""libtirpc-dev""
setvar makedepends = ""augeas-dev bridge-utils cyrus-sasl-dev device-mapper
	e2fsprogs-dev gnutls-dev libcap-ng-dev libgpg-error-dev
	netcf-dev libnl3-dev libxml2-dev libxslt-dev libtasn1-dev
	lvm2-dev lxc-dev gnutls-dev libgcrypt-dev parted-dev perl pkgconfig
	eudev-dev zlib-dev yajl-dev libpcap-dev curl-dev libpciaccess-dev
	polkit-dev readline-dev dnsmasq linux-headers $depends_dev
	fuse-dev util-linux libxml2-utils $_daemon_deps $_client_deps
	""
setvar install = ""$pkgname.post-install""
setvar subpackages = ""$pkgname-dev $pkgname-doc $pkgname-client $pkgname-daemon
	$pkgname-lang $pkgname-lxc $pkgname-qemu $pkgname-uml $pkgname-vbox""
setvar source = ""http://libvirt.org/sources/$pkgname-$pkgver.tar.xz
	libvirt.confd
	libvirt.initd
	virtlogd.initd
	virtlockd.initd
	musl-fix-includes.patch
	fix-fortify-virnetlink.patch
	""

if test $CARCH = "x86_64" {
	setvar subpackages = ""$subpackages $pkgname-xen""
	setvar makedepends = ""$makedepends xen-dev""
}
setvar subpackages = ""$subpackages $pkgname-common-drivers:_common_drivers""

setvar builddir = ""$srcdir"/$pkgname-$pkgver"

proc build {
	cd $builddir
	# qemu sets libexec dir to /usr/lib/qemu
	export ac_cv_path_QEMU_BRIDGE_HELPER="/usr/lib/qemu/qemu-bridge-helper"
	test $CARCH = x86_64 && local _xen_opt="--with-libxl"
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--libexec=/usr/lib/"$pkgname" \
		$_xen_opt \
		--with-polkit \
		--with-storage-fs \
		--with-storage-lvm \
		|| return 1
	make || return 1
}

proc package {
	cd $builddir
	make DESTDIR="$pkgdir" install || return 1
	install -D -m755 $srcdir/$pkgname.initd $pkgdir/etc/init.d/libvirtd
	install -D -m755 $srcdir/$pkgname.confd $pkgdir/etc/conf.d/libvirtd
	install -D -m755 $srcdir/virtlogd.initd $pkgdir/etc/init.d/virtlogd
	install -D -m755 $srcdir/virtlockd.initd $pkgdir/etc/init.d/virtlockd

	install -d "$pkgdir"/etc/modules-load.d
	echo "tun" > "$pkgdir"/etc/modules-load.d/libvirt.conf

	rm -rf "$pkgdir"/usr/lib/charset.alias
	rmdir -p "$pkgdir"/usr/lib 2>/dev/null || true
}

proc dev {
	default_dev
	mkdir -p "$subpkgdir"/usr/share/libvirt
	mv "$pkgdir"/usr/share/libvirt/api \
		"$subpkgdir"/usr/share/libvirt/
}

proc daemon {
	cd $builddir
	setvar pkgdesc = ""libvirt daemon package""
	setvar depends = ""libvirt-client $_daemon_deps""
	setvar replaces = ""libvirt""
	mkdir -p "$subpkgdir"/etc/$pkgname \
	 "$subpkgdir"/etc/logrotate.d \
	 "$subpkgdir"/usr/sbin
	mv "$pkgdir"/etc/init.d "$subpkgdir"/etc
	mv "$pkgdir"/etc/conf.d "$subpkgdir"/etc
	mv "$pkgdir"/etc/modules-load.d "$subpkgdir"/etc
	mv "$pkgdir"/etc/$pkgname/libvirtd.conf "$subpkgdir"/etc/libvirt/
	mv "$pkgdir"/usr/sbin/libvirtd "$subpkgdir"/usr/sbin/
	mv "$pkgdir"/etc/logrotate.d/libvirtd "$subpkgdir"/etc/logrotate.d/
}

proc client {
	cd $builddir
	setvar pkgdesc = ""libvirt client package""
	setvar depends = ""libvirt $_client_deps""
	setvar replaces = ""libvirt""
	mkdir -p "$subpkgdir"/etc/$pkgname "$subpkgdir"/usr/bin \
		"$subpkgdir"/usr/lib
	mv "$pkgdir"/etc/$pkgname/$pkgname.conf "$subpkgdir"/etc/libvirt/
	mv "$pkgdir"/usr/bin/* "$subpkgdir"/usr/bin/
	mv "$pkgdir"/usr/lib/lib*.so.* "$subpkgdir"/usr/lib/ || return 1
}

proc _mv_driver {
	local _name="$1" _drivers="$2" _pkg="$3"
	setvar pkgdesc = ""$_name driver for libvirt""
	setvar depends = ""$pkgname-daemon=$pkgver-r$pkgrel
		$pkgname-common-drivers=$pkgver-r$pkgrel""
	setvar replaces = ""libvirt""
	if test -n $_pkg {
		setvar install_if = ""$pkgname-daemon=$pkgver-r$pkgrel $_pkg""
	} else {
		setvar install_if = ''
	}
	local _dir=/usr/lib/libvirt/connection-driver
	mkdir -p "$subpkgdir"/$_dir \
		"$subpkgdir"/etc/libvirt \
		"$subpkgdir"/etc/logrotate.d
	local _d
	cd $pkgdir
	for _d in $_drivers {
		find * -name "*$_d[.-]*" -o -name "*$_d" | while read _f {
			mkdir -p "$subpkgdir"/${_f%/*}
			mv "$pkgdir"/$_f "$subpkgdir"/$_f || return 1
		}
	}
}

proc qemu { _mv_driver "QEMU" qemu qemu; }
proc xen { _mv_driver "XEN" "libxl xen" xen; }
proc lxc { _mv_driver "LXC" lxc lxc; }
proc uml { _mv_driver "UML" uml; }
proc vbox { _mv_driver "VirtualBox" vbox; }

proc _common_drivers {
	setvar pkgdesc = ""Common libvirt daemon drivers""
	setvar replaces = ""libvirt""
	mkdir -p "$subpkgdir"/usr/lib/libvirt \
		"$subpkgdir"/etc/libvirt/nwfilter
	mv "$pkgdir"/usr/lib/libvirt/connection-driver \
		"$subpkgdir"/usr/lib/libvirt/
	mv "$pkgdir"/etc/libvirt/nwfilter \
		"$subpkgdir"/etc/libvirt/
}

setvar sha512sums = ""b3f7021ef4c6954430f8fa503f0c49e3df4f662b228cb631ba2c2139ecec2307dde6cec05037cc28663e82ab1001296c20c5c68acd183cd364dd484a7746f498  libvirt-3.7.0.tar.xz
9aba6ab73219a635c64a340ee8887356e644445c9128734cbce73f5d54778378da2f10a190365ad88a7db8bc95b1fb17f0c6ca41fc41bb786c09e1afe84d65dc  libvirt.confd
734afb83b7a4703dd238f1d89dbc853a8c73bcf1994af648c41ab01ae4088e5c7a423f0cb91e5e31f2ae5e60c66d08a6e1583a1e3b88bb5554e0f9fd15ecc15c  libvirt.initd
36b85f473d292be8df415256d01a562131d8ae61450ba3893658090a12d589ca32215382f56f286a830b4e59ffd98fbe1d92004f2ce14ca0834451b943cd8f2f  virtlogd.initd
a4c4d26e4111931acbe7594451bf963a36c8db33c64b1bc447ab4758bb92803510bebee0511d6bc16ba80c289ab6f87e74377d47bf560412f9adb9c161a206d9  virtlockd.initd
b6142256bf2700b9e5335c60fe5628e4095a24689c31d54afcab46f46a06b9c0ae676f87f77a487377eafbec11fb7afa9b994aef48a10a39e82f47c45df008ba  musl-fix-includes.patch
0ef74be8c8f0e6c6ae6e3dcf6e83dc76c1371e1eaab123589f634c22f221cc26a8f0b0de6a9f5d36510b270d4a06fae42b51b749311f3e57953e65fbfc241911  fix-fortify-virnetlink.patch""