1{ stdenv, fetchurl, pkgconfig, libxml2, gnutls, devicemapper, perl, python
2, iproute, iptables, readline, lvm2, utillinux, udev, libpciaccess, gettext
3, libtasn1, ebtables, libgcrypt, yajl, makeWrapper, pmutils, libcap_ng
4, dnsmasq, libnl, libpcap, libxslt, xhtml1
5, pythonPackages, perlPackages
6}:
7
8let version = "1.2.19"; in
9
10assert version == pythonPackages.libvirt.version;
11
12stdenv.mkDerivation rec {
13 name = "libvirt-${version}";
14
15 src = fetchurl {
16 url = "http://libvirt.org/sources/${name}.tar.gz";
17 sha256 = "0vnxmqf04frrj18lrvq7wc70wh179d382py14006879k0cgi8b18";
18 };
19
20 buildInputs = [
21 pkgconfig libxml2 gnutls devicemapper perl python readline lvm2
22 utillinux udev libpciaccess gettext libtasn1 libgcrypt yajl makeWrapper
23 libcap_ng libnl libxslt xhtml1 perlPackages.XMLXPath
24 ];
25
26 preConfigure = ''
27 PATH=${iproute}/sbin:${iptables}/sbin:${ebtables}/sbin:${lvm2}/sbin:${udev}/sbin:${dnsmasq}/bin:$PATH
28 patchShebangs . # fixes /usr/bin/python references
29 '';
30
31 configureFlags = [
32 "--localstatedir=/var"
33 "--sysconfdir=/etc"
34 "--with-init-script=redhat"
35 "--with-macvtap"
36 "--with-virtualport"
37 "--with-libpcap"
38 ];
39
40 installFlags = [
41 "localstatedir=$(TMPDIR)/var"
42 "sysconfdir=$(out)/etc"
43 ];
44
45 postInstall = ''
46 sed -i 's/ON_SHUTDOWN=suspend/ON_SHUTDOWN=''${ON_SHUTDOWN:-suspend}/' $out/libexec/libvirt-guests.sh
47 substituteInPlace $out/libexec/libvirt-guests.sh \
48 --replace "$out/bin" "${gettext}/bin"
49 wrapProgram $out/sbin/libvirtd \
50 --prefix PATH : ${iptables}/sbin:${iproute}/sbin:${pmutils}/bin
51 '';
52
53 enableParallelBuilding = true;
54
55 NIX_CFLAGS_COMPILE = "-fno-stack-protector";
56
57 meta = with stdenv.lib; {
58 homepage = http://libvirt.org/;
59 repositories.git = git://libvirt.org/libvirt.git;
60 description = ''
61 A toolkit to interact with the virtualization capabilities of recent
62 versions of Linux (and other OSes)
63 '';
64 license = licenses.lgpl2Plus;
65 platforms = platforms.linux;
66 };
67}