mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-10-31 22:51:22 +00:00
mesos: Add package
Apache Mesos is a cluster manager that simplifies the complexity of running applications on a shared pool of servers.
This commit is contained in:
parent
94db68d283
commit
1c77030fee
80
pkgs/applications/networking/cluster/mesos/darwin.patch
Normal file
80
pkgs/applications/networking/cluster/mesos/darwin.patch
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index 1ebd196..a49d7d4 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -463,11 +463,6 @@ __EOF__
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Determine linker flags for Java if not set.
|
||||||
|
- if test "$OS_NAME" = "darwin"; then
|
||||||
|
- dir="$JAVA_HOME/jre/lib/server"
|
||||||
|
- JAVA_TEST_LDFLAGS="-framework JavaVM"
|
||||||
|
- JAVA_JVM_LIBRARY=$dir/libjvm.dylib
|
||||||
|
- elif test "$OS_NAME" = "linux"; then
|
||||||
|
for arch in amd64 i386; do
|
||||||
|
dir="$JAVA_HOME/jre/lib/$arch/server"
|
||||||
|
if test -e "$dir"; then
|
||||||
|
@@ -477,7 +472,6 @@ __EOF__
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
- fi
|
||||||
|
|
||||||
|
if test -z "$JAVA_TEST_LDFLAGS"; then
|
||||||
|
AC_MSG_ERROR([failed to determine linker flags for using Java \
|
||||||
|
@@ -488,26 +482,6 @@ __EOF__
|
||||||
|
# flags as necessary (provided JAVA_CPPFLAGS was not set).
|
||||||
|
AC_MSG_CHECKING([whether or not we can build with JNI])
|
||||||
|
if test -z "$JAVA_CPPFLAGS"; then
|
||||||
|
- if test "$OS_NAME" = "darwin"; then
|
||||||
|
- while true; do # Loop until sucessful (via break) or exhausted options.
|
||||||
|
- m4_foreach([java_cppflags],
|
||||||
|
- [["-I$JAVA_HOME/include -I$JAVA_HOME/include/$OS_NAME"],
|
||||||
|
- ["-I/System/Library/Frameworks/JavaVM.framework/Headers"]],
|
||||||
|
- [JAVA_CPPFLAGS=java_cppflags
|
||||||
|
- TRY_LINK_JNI([break])])
|
||||||
|
- # Exhausted options.
|
||||||
|
- AC_MSG_ERROR([failed to build with JNI
|
||||||
|
- -------------------------------------------------------------------
|
||||||
|
- It appears we were unable to compile against the JNI. This is most
|
||||||
|
- likely due to one of the following issues:
|
||||||
|
- 1. You do not have a JDK installed on your system.
|
||||||
|
- 2. All JDKs installed on your system have deprecated JNI headers.
|
||||||
|
- It is advised to install OpenJDK on your system, as the JDK that
|
||||||
|
- ships with OS X has deprecated JNI headers.
|
||||||
|
- -------------------------------------------------------------------
|
||||||
|
- ])
|
||||||
|
- done
|
||||||
|
- else
|
||||||
|
while true; do # Loop until sucessful (via break) or exhausted options.
|
||||||
|
m4_foreach([java_cppflags],
|
||||||
|
[["-I$JAVA_HOME/include -I$JAVA_HOME/include/$OS_NAME"]],
|
||||||
|
@@ -516,7 +490,6 @@ __EOF__
|
||||||
|
# Exhausted options.
|
||||||
|
AC_MSG_ERROR([failed to build with JNI])
|
||||||
|
done
|
||||||
|
- fi
|
||||||
|
else
|
||||||
|
TRY_LINK_JNI([], [AC_MSG_ERROR([failed to build with JNI])])
|
||||||
|
fi
|
||||||
|
@@ -760,20 +733,6 @@ libcurl is required for mesos to build.
|
||||||
|
if test "x$with_cxx11" = "xyes"; then
|
||||||
|
AX_CXX_COMPILE_STDCXX_11([noext], [mandatory])
|
||||||
|
|
||||||
|
- case "$host_os" in
|
||||||
|
- darwin* )
|
||||||
|
- # If we're using clang, we need to pass -stdlib=libc++ too.
|
||||||
|
- if test "x$CLANG" = "xyes"; then
|
||||||
|
- CXXFLAGS="$CXXFLAGS -stdlib=libc++"
|
||||||
|
- fi
|
||||||
|
-
|
||||||
|
- # GTEST on OSX needs its own tr1 tuple.
|
||||||
|
- # TODO(dhamon): Update to gmock 1.7 and pass GTEST_LANG_CXX11 when in
|
||||||
|
- # c++11 mode.
|
||||||
|
- CXXFLAGS="$CXXFLAGS -DGTEST_USE_OWN_TR1_TUPLE=1"
|
||||||
|
- ;;
|
||||||
|
- esac
|
||||||
|
-
|
||||||
|
# Also pass the flags to 3rdparty libraries.
|
||||||
|
CONFIGURE_ARGS="$CONFIGURE_ARGS CXXFLAGS='$CXXFLAGS'"
|
||||||
|
fi
|
107
pkgs/applications/networking/cluster/mesos/default.nix
Normal file
107
pkgs/applications/networking/cluster/mesos/default.nix
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
{ 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
|
||||||
|
python wrapPython boto distutils-cfg
|
||||||
|
];
|
||||||
|
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
}
|
1242
pkgs/applications/networking/cluster/mesos/fetch-mesos-deps.sh
Normal file
1242
pkgs/applications/networking/cluster/mesos/fetch-mesos-deps.sh
Normal file
File diff suppressed because it is too large
Load Diff
18
pkgs/applications/networking/cluster/mesos/mesos-deps.nix
Normal file
18
pkgs/applications/networking/cluster/mesos/mesos-deps.nix
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{stdenv, curl}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "mesos-maven-deps";
|
||||||
|
builder = ./fetch-mesos-deps.sh;
|
||||||
|
|
||||||
|
outputHashAlgo = "sha256";
|
||||||
|
outputHashMode = "recursive";
|
||||||
|
outputHash = "03qjq481ly5ajynlr9iqvrjra5fvv2jz4wp2f3in5vnxa61inrrk";
|
||||||
|
|
||||||
|
buildInputs = [ curl ];
|
||||||
|
|
||||||
|
# We borrow these environment variables from the caller to allow
|
||||||
|
# easy proxy configuration. This is impure, but a fixed-output
|
||||||
|
# derivation like fetchurl is allowed to do so since its result is
|
||||||
|
# by definition pure.
|
||||||
|
impureEnvVars = ["http_proxy" "https_proxy" "ftp_proxy" "all_proxy" "no_proxy"];
|
||||||
|
}
|
@ -3501,6 +3501,13 @@ let
|
|||||||
flex = flex_2_5_35;
|
flex = flex_2_5_35;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mesos = callPackage ../applications/networking/cluster/mesos {
|
||||||
|
sasl = cyrus_sasl;
|
||||||
|
automake = automake114x;
|
||||||
|
inherit (pythonPackages) python boto setuptools distutils-cfg wrapPython;
|
||||||
|
pythonProtobuf = pythonPackages.protobuf;
|
||||||
|
};
|
||||||
|
|
||||||
octave = callPackage ../development/interpreters/octave {
|
octave = callPackage ../development/interpreters/octave {
|
||||||
fltk = fltk13;
|
fltk = fltk13;
|
||||||
qt = null;
|
qt = null;
|
||||||
|
@ -5425,7 +5425,7 @@ rec {
|
|||||||
protobuf = buildPythonPackage rec {
|
protobuf = buildPythonPackage rec {
|
||||||
inherit (pkgs.protobuf) name src;
|
inherit (pkgs.protobuf) name src;
|
||||||
|
|
||||||
propagatedBuildInputs = [pkgs.protobuf];
|
propagatedBuildInputs = [ pkgs.protobuf setuptools ];
|
||||||
sourceRoot = "${name}/python";
|
sourceRoot = "${name}/python";
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
Loading…
Reference in New Issue
Block a user