* KVM 69. Seems to improve performance quite a bit. In particular it

implements the host support for virtio devices in Linux >= 2.6.25
  guests.  Network performance shows a huge improvement with
  virtio_net, which should be good for the build farm (which uses
  Samba/CIFS to mount the file system of the host).
* Kernel headers for 2.6.26-rc5 added to build KVM 69.  Also added the
  2.6.25 headers, which turned out to be too old for KVM 69.

svn path=/nixpkgs/trunk/; revision=11985
This commit is contained in:
Eelco Dolstra 2008-06-05 10:59:41 +00:00
parent e24afc19ad
commit c955f608a2
5 changed files with 118 additions and 0 deletions

View File

@ -0,0 +1,26 @@
{stdenv, fetchurl}:
assert stdenv.isLinux;
stdenv.mkDerivation {
name = "linux-headers-2.6.25.4";
builder = ./builder.sh;
src = fetchurl {
url = "mirror://kernel/linux/kernel/v2.6/linux-2.6.25.4.tar.bz2";
sha256 = "0hp36pwphw5rs9kwm5ksr7ynfmzgpcd8gi45rigbilvcvmsdnxf3";
};
platform =
if stdenv.system == "i686-linux" then "i386" else
if stdenv.system == "x86_64-linux" then "x86_64" else
if stdenv.system == "powerpc-linux" then "powerpc" else
abort "don't know what the kernel include directory is called for this platform";
# !!! hacky
fixupPhase = "ln -s $out/include/asm $out/include/asm-$platform";
extraIncludeDirs =
if stdenv.system == "powerpc-linux" then ["ppc"] else [];
}

View File

@ -0,0 +1,26 @@
{stdenv, fetchurl}:
assert stdenv.isLinux;
stdenv.mkDerivation {
name = "linux-headers-2.6.26-pre-rc5";
builder = ./builder.sh;
src = fetchurl {
url = "mirror://kernel/linux/kernel/v2.6/testing/linux-2.6.26-rc5.tar.bz2";
sha256 = "0mxhxiivm2dyca2shxnr3689x8f3l2vlmqdl80fm6lmq1b3j7k75";
};
platform =
if stdenv.system == "i686-linux" then "i386" else
if stdenv.system == "x86_64-linux" then "x86_64" else
if stdenv.system == "powerpc-linux" then "powerpc" else
abort "don't know what the kernel include directory is called for this platform";
# !!! hacky
fixupPhase = "ln -s $out/include/asm $out/include/asm-$platform";
extraIncludeDirs =
if stdenv.system == "powerpc-linux" then ["ppc"] else [];
}

View File

@ -0,0 +1,38 @@
{stdenv, fetchurl, kernelHeaders, zlib, e2fsprogs, SDL, alsaLib, pkgconfig, rsync}:
assert stdenv.isLinux;
stdenv.mkDerivation {
name = "kvm-69";
src = fetchurl {
url = mirror://sourceforge/kvm/kvm-69.tar.gz;
sha256 = "05zkzw81lk5ap99vi0jqs6lyp13gapyi1046zgjmjm19q4xzsjz4";
};
patches = [
# Allow setting the path to Samba through $QEMU_SMBD_COMMAND.
./smbd-path.patch
# The makefile copies stuff from the kernel directory and then
# tries to modify the copy, but it must be made writable first.
./readonly-kernel.patch
];
configureFlags = "--with-patched-kernel --kerneldir=${kernelHeaders}";
# e2fsprogs is needed for libuuid.
# rsync is a weird dependency used for copying kernel header files.
buildInputs = [zlib e2fsprogs SDL alsaLib pkgconfig rsync];
preConfigure = ''
for i in configure user/configure; do
substituteInPlace $i --replace /bin/bash $shell
done
substituteInPlace libkvm/Makefile --replace kvm_para.h kvm.h # !!! quick hack
'';
meta = {
homepage = http://kvm.qumranet.com/;
description = "A full virtualization solution for Linux on x86 hardware containing virtualization extensions";
};
}

View File

@ -0,0 +1,14 @@
diff -rc kvm-69-orig/kernel/Makefile kvm-69/kernel/Makefile
*** kvm-69-orig/kernel/Makefile 2008-05-12 13:30:43.000000000 +0200
--- kvm-69/kernel/Makefile 2008-06-04 17:23:34.000000000 +0200
***************
*** 48,53 ****
--- 48,54 ----
"$(LINUX)"/./include/linux/kvm*.h \
"$(LINUX)"/./include/asm-*/kvm*.h \
$T/
+ chmod -R u+w $T
set -e && for i in $(find $T -name '*.h'); do \
$(call unifdef,$$i); done
Only in kvm-69/kernel: Makefile~

View File

@ -4601,6 +4601,14 @@ let pkgs = rec {
inherit fetchurl stdenv;
};
kernelHeaders_2_6_25 = import ../os-specific/linux/kernel-headers/2.6.25.4.nix {
inherit fetchurl stdenv;
};
kernelHeaders_2_6_26 = import ../os-specific/linux/kernel-headers/2.6.26-rc5.nix {
inherit fetchurl stdenv;
};
kernelHeadersArm = import ../os-specific/linux/kernel-headers-cross {
inherit fetchurl stdenv;
cross = "arm-linux";
@ -4975,6 +4983,12 @@ let pkgs = rec {
kernelHeaders = kernelHeaders_2_6_23;
};
kvm69 = import ../os-specific/linux/kvm/69.nix {
inherit fetchurl zlib e2fsprogs SDL alsaLib pkgconfig rsync;
stdenv = overrideGCC stdenv gcc34;
kernelHeaders = kernelHeaders_2_6_26;
};
libcap = import ../os-specific/linux/libcap {
inherit fetchurl stdenv attr;
};