2011-03-31 14:21:07 +01:00
|
|
|
{ stdenv, fetchurl, pythonPackages, intltool, libvirt, libxml2Python, curl }:
|
2011-03-29 17:15:08 +01:00
|
|
|
|
|
|
|
with stdenv.lib;
|
2011-02-21 21:53:42 +00:00
|
|
|
|
2011-03-30 13:51:16 +01:00
|
|
|
let version = "2011.1.1"; in
|
2011-02-21 21:53:42 +00:00
|
|
|
|
2011-03-29 17:15:08 +01:00
|
|
|
stdenv.mkDerivation rec {
|
2011-03-30 16:00:53 +01:00
|
|
|
name = "nova-${version}";
|
2011-02-21 21:53:42 +00:00
|
|
|
|
|
|
|
src = fetchurl {
|
2011-03-30 13:51:16 +01:00
|
|
|
url = "http://launchpad.net/nova/bexar/${version}/+download/nova-${version}.tar.gz";
|
|
|
|
sha256 = "0xd7cxn60vzhkvjwnj0i6jfcxaggwwyw2pnhl4qnb759q9hvk1b9";
|
2011-02-21 21:53:42 +00:00
|
|
|
};
|
|
|
|
|
2011-03-30 13:51:16 +01:00
|
|
|
pythonPath = with pythonPackages;
|
|
|
|
[ setuptools eventlet greenlet gflags netaddr sqlalchemy carrot routes
|
2011-03-30 17:17:25 +01:00
|
|
|
paste_deploy m2crypto ipy boto_1_9 twisted sqlalchemy_migrate
|
2011-03-30 18:04:27 +01:00
|
|
|
distutils_extra simplejson readline glance cheetah
|
|
|
|
# !!! should libvirt be a build-time dependency? Note that
|
|
|
|
# libxml2Python is a dependency of libvirt.py.
|
|
|
|
libvirt libxml2Python
|
2011-02-21 21:53:42 +00:00
|
|
|
];
|
|
|
|
|
2011-03-29 17:15:08 +01:00
|
|
|
buildInputs =
|
|
|
|
[ pythonPackages.python
|
|
|
|
pythonPackages.wrapPython
|
2011-03-30 18:04:27 +01:00
|
|
|
pythonPackages.mox
|
2011-03-30 13:51:16 +01:00
|
|
|
intltool
|
2011-03-29 17:15:08 +01:00
|
|
|
] ++ pythonPath;
|
|
|
|
|
2011-03-30 18:04:27 +01:00
|
|
|
PYTHON_EGG_CACHE = "`pwd`/.egg-cache";
|
|
|
|
|
2011-03-30 15:57:51 +01:00
|
|
|
preConfigure =
|
|
|
|
''
|
|
|
|
# Set the built-in state location to something sensible.
|
|
|
|
sed -i nova/flags.py \
|
|
|
|
-e "/DEFINE.*'state_path'/ s|../|/var/lib/nova|"
|
2011-03-31 14:21:07 +01:00
|
|
|
|
|
|
|
substituteInPlace nova/virt/images.py --replace /usr/bin/curl ${curl}/bin/curl
|
2011-03-30 15:57:51 +01:00
|
|
|
'';
|
2011-02-21 21:53:42 +00:00
|
|
|
|
|
|
|
buildPhase = "python setup.py build";
|
|
|
|
|
|
|
|
installPhase =
|
2011-03-30 13:51:16 +01:00
|
|
|
''
|
2011-02-21 21:53:42 +00:00
|
|
|
p=$(toPythonPath $out)
|
|
|
|
export PYTHONPATH=$p:$PYTHONPATH
|
|
|
|
mkdir -p $p
|
|
|
|
python setup.py install --prefix=$out
|
2011-03-29 17:15:08 +01:00
|
|
|
|
2011-03-30 13:51:16 +01:00
|
|
|
# Nova doesn't like to be called ".nova-foo-wrapped" because it
|
|
|
|
# computes some stuff from its own argv[0]. So call the wrapped
|
|
|
|
# programs ".nova-foo" by overriding wrapProgram.
|
|
|
|
wrapProgram() {
|
|
|
|
local prog="$1"
|
|
|
|
local hidden="$(dirname "$prog")/.$(basename "$prog")"
|
|
|
|
mv $prog $hidden
|
|
|
|
makeWrapper $hidden $prog "$@"
|
|
|
|
}
|
|
|
|
|
2011-03-29 17:15:08 +01:00
|
|
|
wrapPythonPrograms
|
2011-03-30 17:17:25 +01:00
|
|
|
|
2011-04-01 16:03:48 +01:00
|
|
|
mkdir -p $out/etc/nova
|
|
|
|
cp etc/nova-api.conf $out/etc/nova/
|
2011-03-31 14:21:07 +01:00
|
|
|
|
|
|
|
# Nova makes some weird assumptions about where to find its own
|
|
|
|
# programs relative to the Python directory.
|
|
|
|
ln -sfn $out/bin $out/lib/${pythonPackages.python.libPrefix}/site-packages/bin
|
2011-02-21 21:53:42 +00:00
|
|
|
'';
|
|
|
|
|
2011-03-30 18:04:27 +01:00
|
|
|
doCheck = false; # !!! fix
|
|
|
|
|
|
|
|
checkPhase = "python setup.py test";
|
|
|
|
|
2011-02-21 21:53:42 +00:00
|
|
|
meta = {
|
|
|
|
homepage = http://nova.openstack.org/;
|
|
|
|
description = "OpenStack Compute (a.k.a. Nova), a cloud computing fabric controller";
|
|
|
|
};
|
|
|
|
}
|