2014-04-25 13:13:41 +00:00
|
|
|
{ stdenv, lib, makeWrapper, fetchurl, fetchzip, curl, sasl, openssh, autoconf
|
|
|
|
, automake, libtool, unzip, gnutar, jdk, maven, python, wrapPython
|
|
|
|
, setuptools, distutils-cfg, boto, pythonProtobuf
|
|
|
|
}:
|
|
|
|
|
|
|
|
let version = "0.19.1";
|
|
|
|
in stdenv.mkDerivation {
|
|
|
|
dontDisableStatic = true;
|
|
|
|
|
|
|
|
name = "mesos-${version}";
|
|
|
|
|
|
|
|
src = fetchurl {
|
|
|
|
url = "http://www.apache.org/dist/mesos/${version}/mesos-${version}.tar.gz";
|
|
|
|
sha256 = "12li5xqfcw3124qg3h2cji3yhrc7gbx91lj45zfliicwgjkbmyf1";
|
|
|
|
};
|
|
|
|
|
|
|
|
patches = [ ./darwin.patch ];
|
|
|
|
|
|
|
|
buildInputs = [
|
|
|
|
makeWrapper autoconf automake libtool curl sasl jdk maven
|
2014-08-30 21:00:31 +00:00
|
|
|
python wrapPython boto distutils-cfg setuptools
|
2014-04-25 13:13:41 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
propagatedBuildInputs = [
|
|
|
|
pythonProtobuf
|
|
|
|
];
|
|
|
|
|
|
|
|
mavenRepo = import ./mesos-deps.nix { inherit stdenv curl; };
|
|
|
|
|
|
|
|
preConfigure = ''
|
|
|
|
export MAVEN_OPTS="-Dmaven.repo.local=$(pwd)/.m2"
|
|
|
|
ln -s $mavenRepo .m2
|
|
|
|
|
|
|
|
substituteInPlace src/launcher/fetcher.cpp \
|
|
|
|
--replace '"tar' '"${gnutar}/bin/tar' \
|
|
|
|
--replace '"unzip' '"${unzip}/bin/unzip'
|
|
|
|
|
|
|
|
substituteInPlace src/cli/mesos-scp \
|
|
|
|
--replace "'scp " "'${openssh}/bin/scp "
|
|
|
|
'';
|
|
|
|
|
|
|
|
configureFlags = [
|
|
|
|
"--sbindir=\${out}/bin"
|
|
|
|
"--with-python-headers=${python}/include"
|
|
|
|
"--with-webui"
|
|
|
|
"--with-java-home=${jdk}"
|
|
|
|
"--with-java-headers=${jdk}/include"
|
|
|
|
"--with-included-zookeeper"
|
|
|
|
];
|
|
|
|
|
|
|
|
postInstall = ''
|
|
|
|
rm -rf $out/var
|
|
|
|
rm $out/bin/*.sh
|
|
|
|
|
|
|
|
ensureDir $out/share/java
|
|
|
|
cp src/java/target/mesos-*.jar $out/share/java
|
|
|
|
|
|
|
|
shopt -s extglob
|
|
|
|
MESOS_NATIVE_JAVA_LIBRARY=$(echo $out/lib/libmesos.*(so|dylib))
|
|
|
|
shopt -u extglob
|
|
|
|
|
|
|
|
ensureDir $out/nix-support
|
|
|
|
touch $out/nix-support/setup-hook
|
|
|
|
echo "export MESOS_NATIVE_JAVA_LIBRARY=$MESOS_NATIVE_JAVA_LIBRARY" >> $out/nix-support/setup-hook
|
|
|
|
echo "export MESOS_NATIVE_LIBRARY=$MESOS_NATIVE_JAVA_LIBRARY" >> $out/nix-support/setup-hook
|
|
|
|
|
|
|
|
# Inspired by: pkgs/development/python-modules/generic/default.nix
|
|
|
|
ensureDir "$out/lib/${python.libPrefix}"/site-packages
|
|
|
|
export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
|
|
|
|
${python}/bin/${python.executable} src/python/setup.py install \
|
|
|
|
--install-lib=$out/lib/${python.libPrefix}/site-packages \
|
|
|
|
--old-and-unmanageable \
|
|
|
|
--prefix="$out"
|
|
|
|
rm -f "$out/lib/${python.libPrefix}"/site-packages/site.py*
|
|
|
|
'';
|
|
|
|
|
|
|
|
postFixup = ''
|
|
|
|
if test -e $out/nix-support/propagated-build-inputs; then
|
|
|
|
ln -s $out/nix-support/propagated-build-inputs $out/nix-support/propagated-user-env-packages
|
|
|
|
fi
|
|
|
|
|
|
|
|
for inputsfile in propagated-build-inputs propagated-native-build-inputs; do
|
|
|
|
if test -e $out/nix-support/$inputsfile; then
|
|
|
|
createBuildInputsPth $inputsfile "$(cat $out/nix-support/$inputsfile)"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
# wrap the python programs
|
|
|
|
declare -A pythonPathsSeen=()
|
|
|
|
program_PYTHONPATH="$out/libexec/mesos/python"
|
|
|
|
program_PATH=""
|
|
|
|
_addToPythonPath "$out"
|
|
|
|
for prog in mesos-cat mesos-ps mesos-scp mesos-tail; do
|
|
|
|
wrapProgram "$out/bin/$prog" \
|
|
|
|
--prefix PYTHONPATH ":" $program_PYTHONPATH
|
|
|
|
true
|
|
|
|
done
|
|
|
|
'';
|
|
|
|
|
|
|
|
meta = with lib; {
|
|
|
|
homepage = "http://mesos.apache.org";
|
|
|
|
license = licenses.asl20;
|
|
|
|
description = "A cluster manager that provides efficient resource isolation and sharing across distributed applications, or frameworks";
|
|
|
|
maintainers = with maintainers; [ cstrahan ];
|
|
|
|
platforms = with platforms; linux;
|
|
|
|
};
|
|
|
|
}
|