nixpkgs/pkgs/applications/virtualization/xen/default.nix

85 lines
2.6 KiB
Nix
Raw Normal View History

{ stdenv, fetchurl, which, zlib, pkgconfig, SDL, openssl, python
, libuuid, gettext, ncurses, dev86, iasl, pciutils, bzip2, xz
, lvm2, utillinux, procps }:
let version = "4.0.1"; in
stdenv.mkDerivation {
name = "xen-${version}";
src = fetchurl {
url = "http://bits.xensource.com/oss-xen/release/${version}/xen-${version}.tar.gz";
sha256 = "0ww8j5fa2jxg0zyx7d7z9jyv2j47m8w420sy16w3rf8d80lisvbf";
};
patches =
[ # Xen looks for headers in /usr/include and for libraries using
# ldconfig. Don't do that.
./has-header.patch
];
buildInputs =
[ which zlib pkgconfig SDL openssl python libuuid gettext ncurses
dev86 iasl pciutils bzip2 xz
];
makeFlags = "PREFIX=$(out) CONFIG_DIR=/etc";
buildFlags = "xen tools";
preBuild =
''
substituteInPlace tools/libfsimage/common/fsimage_plugin.c \
--replace /usr $out
substituteInPlace tools/blktap2/lvm/lvm-util.c \
--replace /usr/sbin/vgs ${lvm2}/sbin/vgs \
--replace /usr/sbin/lvs ${lvm2}/sbin/lvs
substituteInPlace tools/hotplug/Linux/network-bridge \
--replace /usr/bin/logger ${utillinux}/bin/logger
substituteInPlace tools/xenmon/xenmon.py \
--replace /usr/bin/pkill ${procps}/bin/pkill
substituteInPlace tools/xenstat/Makefile \
--replace /usr/include/curses.h ${ncurses}/include/curses.h
# Work around a bug in our GCC wrapper: `gcc -MF foo -v' doesn't
# print the GCC version number properly.
substituteInPlace xen/Makefile \
--replace '$(CC) $(CFLAGS) -v' '$(CC) -v'
substituteInPlace tools/python/xen/xend/server/BlktapController.py \
--replace /usr/sbin/tapdisk2 $out/sbin/tapdisk2
substituteInPlace tools/python/xen/xend/XendQCoWStorageRepo.py \
--replace /usr/sbin/qcow-create $out/sbin/qcow-create
'';
installPhase =
''
cp -prvd dist/install/nix/store/* $out
cp -prvd dist/install/boot $out/boot
cp -prvd dist/install/etc $out/etc
''; # */
postFixup =
''
# Set the Python search path in all Python scripts.
for fn in $(grep -l '#!.*python' $out/bin/* $out/sbin/*); do
sed -i "$fn" -e "1 a import sys\nsys.path = ['$out/lib/python2.6/site-packages'] + sys.path"
done
# Remove calls to `env'.
for fn in $(grep -l '#!.*/env.*python' $out/bin/* $out/sbin/*); do
sed -i "$fn" -e "1 s^/nix/store/.*/env.*python^${python}/bin/python^"
done
''; # */
meta = {
homepage = http://www.xen.org/;
description = "Xen hypervisor and management tools for Dom0";
};
}