about summary refs log tree commit diff
path: root/pkgs/applications/virtualization/xen/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/virtualization/xen/default.nix')
-rw-r--r--pkgs/applications/virtualization/xen/default.nix62
1 files changed, 58 insertions, 4 deletions
diff --git a/pkgs/applications/virtualization/xen/default.nix b/pkgs/applications/virtualization/xen/default.nix
index 0a0bf9d431d3..b7a7d1ed31f4 100644
--- a/pkgs/applications/virtualization/xen/default.nix
+++ b/pkgs/applications/virtualization/xen/default.nix
@@ -1,8 +1,36 @@
 { stdenv, fetchurl, which, zlib, pkgconfig, SDL, openssl, python
 , libuuid, gettext, ncurses, dev86, iasl, pciutils, bzip2, xz
-, lvm2, utillinux, procps }:
+, lvm2, utillinux, procps, texinfo, perl }:
+
+with stdenv.lib;
+
+let
+
+  version = "4.0.1";
+
+  libDir = if stdenv.is64bit then "lib64" else "lib";
+
+  # Sources needed to build the stubdoms.
+
+  stubdomSrcs =
+    [ { url = http://xenbits.xensource.com/xen-extfiles/lwip-1.3.0.tar.gz;
+        sha256 = "13wlr85s1hnvia6a698qpryyy12lvmqw0a05xmjnd0h71ralsbkp";
+      }
+      { url = http://xenbits.xensource.com/xen-extfiles/zlib-1.2.3.tar.gz;
+        sha256 = "0pmh8kifb6sfkqfxc23wqp3f2wzk69sl80yz7w8p8cd4cz8cg58p";
+      }
+      { url = http://xenbits.xensource.com/xen-extfiles/newlib-1.16.0.tar.gz;
+        sha256 = "01rxk9js833mwadq92jx0flvk9jyjrnwrq93j39c2j2wjsa66hnv";
+      }
+      { url = http://xenbits.xensource.com/xen-extfiles/grub-0.97.tar.gz;
+        sha256 = "02r6b52r0nsp6ryqfiqchnl7r1d9smm80sqx24494gmx5p8ia7af";
+      }
+      { url = http://xenbits.xensource.com/xen-extfiles/pciutils-2.2.9.tar.bz2;
+        sha256 = "092v4q478i1gc7f3s2wz6p4xlf1wb4gs5shbkn21vnnmzcffc2pn";
+      }
+    ];
 
-let version = "4.0.1"; in 
+in 
 
 stdenv.mkDerivation {
   name = "xen-${version}";
@@ -20,12 +48,12 @@ stdenv.mkDerivation {
 
   buildInputs =
     [ which zlib pkgconfig SDL openssl python libuuid gettext ncurses
-      dev86 iasl pciutils bzip2 xz
+      dev86 iasl pciutils bzip2 xz texinfo perl
     ];
 
   makeFlags = "PREFIX=$(out) CONFIG_DIR=/etc";
 
-  buildFlags = "xen tools";
+  buildFlags = "xen tools stubdom";
 
   preBuild =
     ''
@@ -55,6 +83,29 @@ stdenv.mkDerivation {
 
       substituteInPlace tools/python/xen/xend/XendQCoWStorageRepo.py \
         --replace /usr/sbin/qcow-create $out/sbin/qcow-create
+
+      substituteInPlace tools/python/xen/remus/save.py \
+        --replace /usr/lib/xen/bin/xc_save $out/${libDir}/xen/bin/xc_save
+
+      substituteInPlace tools/python/xen/remus/device.py \
+        --replace /usr/lib/xen/bin/imqebt $out/${libDir}/xen/bin/imqebt
+
+      # Allow the location of the xendomains config file to be
+      # overriden at runtime.
+      substituteInPlace tools/hotplug/Linux/init.d/xendomains \
+        --replace 'XENDOM_CONFIG=/etc/sysconfig/xendomains' "" \
+        --replace /bin/ls ls
+
+      # Xen's stubdoms need various sources that it usually fetches at
+      # build time using wget.  We can't have that.
+      ${flip concatMapStrings stubdomSrcs (x: let src = fetchurl x; in ''
+        cp ${src} stubdom/${src.name}
+      '')}
+    '';
+
+  postBuild =
+    ''
+      make -C docs man-pages
     '';
 
   installPhase =
@@ -62,6 +113,7 @@ stdenv.mkDerivation {
       cp -prvd dist/install/nix/store/* $out
       cp -prvd dist/install/boot $out/boot
       cp -prvd dist/install/etc $out/etc
+      cp -dR docs/man1 docs/man5 $out/share/man/
     ''; # */
 
   postFixup =
@@ -80,5 +132,7 @@ stdenv.mkDerivation {
   meta = {
     homepage = http://www.xen.org/;
     description = "Xen hypervisor and management tools for Dom0";
+    platforms = [ "i686-linux" "x86_64-linux" ];
+    maintainers = [ stdenv.lib.maintainers.eelco ];
   };
 }