c30d4e07c5
Fixes issue with virt-manager failing to list 'USB Host Devices' and 'PCI Host Devices' with the error "Connection does not support host device enumeration".
90 lines
2.8 KiB
Nix
90 lines
2.8 KiB
Nix
{ stdenv, fetchurl, fetchpatch
|
|
, pkgconfig, makeWrapper
|
|
, libxml2, gnutls, devicemapper, perl, python
|
|
, iproute, iptables, readline, lvm2, utillinux, systemd, libpciaccess, gettext
|
|
, libtasn1, ebtables, libgcrypt, yajl, pmutils, libcap_ng
|
|
, dnsmasq, libnl, libpcap, libxslt, xhtml1, numad, numactl, perlPackages
|
|
, curl, libiconv, gmp, xen, zfs
|
|
}:
|
|
# if you update, also bump pythonPackages.libvirt or it will break
|
|
stdenv.mkDerivation rec {
|
|
name = "libvirt-${version}";
|
|
version = "2.0.0";
|
|
|
|
src = fetchurl {
|
|
url = "http://libvirt.org/sources/${name}.tar.xz";
|
|
sha256 = "1jwszhpjn09zkqji8w1x97rw0wqcl71ll2y6vp056fb1bvshms8h";
|
|
};
|
|
|
|
patches = [ ./build-on-bsd.patch ];
|
|
|
|
nativeBuildInputs = [ makeWrapper pkgconfig ];
|
|
buildInputs = [
|
|
libxml2 gnutls perl python readline
|
|
gettext libtasn1 libgcrypt yajl
|
|
libxslt xhtml1 perlPackages.XMLXPath curl libpcap
|
|
] ++ stdenv.lib.optionals stdenv.isLinux [
|
|
libpciaccess devicemapper lvm2 utillinux systemd libcap_ng
|
|
libnl numad numactl xen zfs
|
|
] ++ stdenv.lib.optionals stdenv.isDarwin [
|
|
libiconv gmp
|
|
];
|
|
|
|
preConfigure = stdenv.lib.optionalString stdenv.isLinux ''
|
|
PATH=${iproute}/sbin:${iptables}/sbin:${ebtables}/sbin:${lvm2}/sbin:${systemd}/bin:$PATH
|
|
substituteInPlace configure \
|
|
--replace 'as_dummy="/bin:/usr/bin:/usr/sbin"' 'as_dummy="${numad}/bin"'
|
|
'' + ''
|
|
PATH=${dnsmasq}/bin:$PATH
|
|
patchShebangs . # fixes /usr/bin/python references
|
|
'';
|
|
|
|
configureFlags = [
|
|
"--localstatedir=/var"
|
|
"--sysconfdir=/var/lib"
|
|
"--with-libpcap"
|
|
"--with-vmware"
|
|
"--with-vbox"
|
|
"--with-test"
|
|
"--with-esx"
|
|
"--with-remote"
|
|
] ++ stdenv.lib.optionals stdenv.isLinux [
|
|
"--with-numad"
|
|
"--with-macvtap"
|
|
"--with-virtualport"
|
|
"--with-init-script=redhat"
|
|
"--with-storage-zfs"
|
|
] ++ stdenv.lib.optionals stdenv.isDarwin [
|
|
"--with-init-script=none"
|
|
];
|
|
|
|
installFlags = [
|
|
"localstatedir=$(TMPDIR)/var"
|
|
"sysconfdir=$(out)/var/lib"
|
|
];
|
|
|
|
postInstall = ''
|
|
sed -i 's/ON_SHUTDOWN=suspend/ON_SHUTDOWN=''${ON_SHUTDOWN:-suspend}/' $out/libexec/libvirt-guests.sh
|
|
substituteInPlace $out/libexec/libvirt-guests.sh \
|
|
--replace "$out/bin" "${gettext}/bin"
|
|
'' + stdenv.lib.optionalString stdenv.isLinux ''
|
|
wrapProgram $out/sbin/libvirtd \
|
|
--prefix PATH : ${iptables}/sbin:${iproute}/sbin:${pmutils}/bin:${numad}/bin:${numactl}/bin
|
|
'';
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
NIX_CFLAGS_COMPILE = "-fno-stack-protector";
|
|
|
|
meta = with stdenv.lib; {
|
|
homepage = http://libvirt.org/;
|
|
repositories.git = git://libvirt.org/libvirt.git;
|
|
description = ''
|
|
A toolkit to interact with the virtualization capabilities of recent
|
|
versions of Linux (and other OSes)
|
|
'';
|
|
license = licenses.lgpl2Plus;
|
|
platforms = platforms.unix;
|
|
maintainers = with maintainers; [ fpletz ];
|
|
};
|
|
}
|