You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2015/06/29 01:05:05 UTC
[2/2] mesos git commit: Enabled compiling python egg with SSL and
libevent.
Enabled compiling python egg with SSL and libevent.
Review: https://reviews.apache.org/r/35967
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/14cf8d1c
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/14cf8d1c
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/14cf8d1c
Branch: refs/heads/master
Commit: 14cf8d1ca17bd5a7a2062bb7b610d4749e793f8b
Parents: b417ad7
Author: Artem Harutyunyan <ar...@mesosphere.io>
Authored: Sun Jun 28 15:57:26 2015 -0700
Committer: Benjamin Hindman <be...@gmail.com>
Committed: Sun Jun 28 16:03:43 2015 -0700
----------------------------------------------------------------------
configure.ac | 135 +++++++++++++++++++++++++++++++
src/python/native/ext_modules.py.in | 23 ++++--
2 files changed, 151 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/14cf8d1c/configure.ac
----------------------------------------------------------------------
diff --git a/configure.ac b/configure.ac
index 55c07a2..9290958 100644
--- a/configure.ac
+++ b/configure.ac
@@ -246,6 +246,30 @@ AC_ARG_WITH([network-isolator],
[builds the network isolator]),
[], [with_network_isolator=no])
+AC_ARG_ENABLE([libevent],
+ AS_HELP_STRING([--enable-libevent],
+ [use libevent instead of libev default: no]),
+ [enable_libevent=yes], [])
+
+AC_ARG_ENABLE([ssl],
+ AS_HELP_STRING([--enable-ssl],
+ [use ssl for libprocess communication
+ default: no]),
+ [enable_ssl=yes], [])
+
+AC_ARG_WITH([libevent],
+ AS_HELP_STRING([--with-libevent=@<:@=DIR@:>@],
+ [specify where to locate the libevent library]),
+ [], [])
+
+AC_ARG_WITH([ssl],
+ AS_HELP_STRING([--with-ssl=@<:@=DIR@:>@],
+ [specify where to locate the ssl library]),
+ [], [])
+
+# TODO(hartem): consolidate all of the ENABLE and _WITH statements
+# above in separate sections for better readability.
+
AC_ARG_VAR([JAVA_HOME], [location of Java Development Kit (JDK)])
AC_ARG_VAR([JAVA_CPPFLAGS], [preprocessor flags for JNI])
@@ -1419,6 +1443,117 @@ AM_CONDITIONAL([WITHOUT_PYTHON_DEPS],
AM_CONDITIONAL([GIT_REPO], [test -d ${srcdir}"/.git"])
+# Check if libevent prefix path was provided, and if so, add it to
+# the CPPFLAGS and LDFLAGS with respective /include and /lib path
+# suffixes.
+if test -z "`echo $with_libevent`" &&
+ test "$OS_NAME" = "darwin" &&
+ test -n "`command -v brew`" &&
+ test -n "`brew list --versions libevent`"; then
+ with_libevent=`brew --prefix libevent`
+fi
+
+if test -n "`echo $with_libevent`"; then
+ CPPFLAGS="-I${with_libevent}/include $CPPFLAGS"
+ LDFLAGS="-L${with_libevent}/lib $LDFLAGS"
+fi
+
+if test "x$enable_libevent" = "xyes"; then
+ AC_CHECK_HEADERS([event2/event.h],
+ [AC_CHECK_LIB([event],
+ [event_base_new],
+ [],
+ [AC_MSG_ERROR([cannot find libevent
+-------------------------------------------------------------------
+libevent is required for libprocess to build.
+-------------------------------------------------------------------
+ ])])],
+ [AC_MSG_ERROR([cannot find libevent headers
+-------------------------------------------------------------------
+libevent is required for libprocess to build.
+-------------------------------------------------------------------
+ ])])
+
+ AC_CHECK_HEADERS([event2/thread.h],
+ [AC_CHECK_LIB([event_pthreads],
+ [evthread_use_pthreads],
+ [],
+ [AC_MSG_ERROR([cannot find libevent_pthreads
+-------------------------------------------------------------------
+libevent_pthreads is required for libprocess to build.
+-------------------------------------------------------------------
+ ])])],
+ [AC_MSG_ERROR([cannot find libevent_pthreads headers
+-------------------------------------------------------------------
+libevent_pthreads is required for libprocess to build.
+-------------------------------------------------------------------
+ ])])
+fi
+
+AM_CONDITIONAL([ENABLE_LIBEVENT], [test x"$enable_libevent" = "xyes"])
+
+
+# Check if libssl prefix path was provided, and if so, add it to
+# the CPPFLAGS and LDFLAGS with respective /include and /lib path
+# suffixes.
+if test -z "`echo $with_ssl`" &&
+ test "$OS_NAME" = "darwin" &&
+ test -n "`command -v brew`" &&
+ test -n "`brew list --versions openssl`"; then
+ with_ssl=`brew --prefix openssl`
+fi
+
+if test -n "`echo $with_ssl`"; then
+ CPPFLAGS="-I${with_ssl}/include $CPPFLAGS"
+ LDFLAGS="-L${with_ssl}/lib $LDFLAGS"
+fi
+
+if test "x$enable_ssl" = "xyes"; then
+ AC_CHECK_HEADERS([openssl/ssl.h],
+ [AC_CHECK_LIB([ssl],
+ [SSL_CTX_new],
+ [],
+ [AC_MSG_ERROR([cannot find libssl
+-------------------------------------------------------------------
+libssl is required for an SSL-enabled build.
+-------------------------------------------------------------------
+ ])])],
+ [AC_MSG_ERROR([cannot find libssl headers
+-------------------------------------------------------------------
+libssl is required for an SSL-enabled build.
+-------------------------------------------------------------------
+ ])])
+
+ AC_CHECK_LIB([crypto], [RAND_poll], [], [AC_MSG_ERROR([cannot find libcrypto
+-------------------------------------------------------------------
+libcrypto is required for an SSL-enabled build.
+-------------------------------------------------------------------
+ ])])
+
+ if test "x$enable_libevent" = "xyes"; then
+ AC_CHECK_HEADERS([event2/bufferevent_ssl.h],
+ [AC_CHECK_LIB([event_openssl],
+ [bufferevent_openssl_get_ssl],
+ [],
+ [AC_MSG_ERROR([cannot find libevent_openssl
+-------------------------------------------------------------------
+libevent_openssl is required for an SSL-enabled build.
+-------------------------------------------------------------------
+ ])])],
+ [AC_MSG_ERROR([cannot find libevent_openssl headers
+-------------------------------------------------------------------
+libevent_openssl is required for an SSL-enabled build.
+-------------------------------------------------------------------
+ ])])
+ else
+ AC_MSG_ERROR([SSL is currently only supported with libevent])
+ fi
+ AC_DEFINE([USE_SSL_SOCKET], [1])
+fi
+
+AM_CONDITIONAL([ENABLE_SSL], [test x"$enable_ssl" = "xyes"])
+
+
# Provide more granular version numbers based on the version string,
# using the format MAJOR.MINOR.PATCH[-SUFFIX], where SUFFIX can itself
# contain dashes.
http://git-wip-us.apache.org/repos/asf/mesos/blob/14cf8d1c/src/python/native/ext_modules.py.in
----------------------------------------------------------------------
diff --git a/src/python/native/ext_modules.py.in b/src/python/native/ext_modules.py.in
index 4825fe4..4682e5e 100644
--- a/src/python/native/ext_modules.py.in
+++ b/src/python/native/ext_modules.py.in
@@ -38,7 +38,6 @@ libprocess = os.path.join('3rdparty', 'libprocess')
# include them here (or more precisely, down where we actually include
# libev.a and libprofiler.a).
glog = os.path.join(libprocess, '3rdparty', 'glog-0.3.3')
-libev = os.path.join(libprocess, '3rdparty', 'libev-4.15')
gperftools = os.path.join(libprocess, '3rdparty', 'gperftools-2.0')
protobuf = os.path.join(libprocess, '3rdparty', 'protobuf-2.5.0')
@@ -69,7 +68,6 @@ EXTRA_OBJECTS = [
# For leveldb, we need to check for the presence of libleveldb.a, since
# it is possible to disable leveldb inside mesos.
-libev = os.path.join(abs_top_builddir, libev, '.libs', 'libev.a')
libglog = os.path.join(abs_top_builddir, glog, '.libs', 'libglog.a')
libleveldb = os.path.join(abs_top_builddir, leveldb, 'libleveldb.a')
libzookeeper = os.path.join(
@@ -87,11 +85,6 @@ if os.path.exists(libzookeeper):
else:
EXTRA_OBJECTS.append('-lzookeeper_mt')
-if os.path.exists(libev):
- EXTRA_OBJECTS.append(libev)
-else:
- EXTRA_OBJECTS.append('-lev')
-
if os.path.exists(libglog):
EXTRA_OBJECTS.append(libglog)
else:
@@ -102,6 +95,22 @@ if os.path.exists(libprotobuf):
else:
EXTRA_OBJECTS.append('-lprotobuf')
+
+# libev is a special case because it needs to be enabled only when
+# libevent *is not* enabled through the top level ./configure.
+#
+# TODO(hartem): this entire block MUST be removed once libev is deprecated
+# in favor of libevent.
+if '@ENABLE_LIBEVENT_TRUE@' == '#':
+ libev = os.path.join(libprocess, '3rdparty', 'libev-4.15')
+ libev = os.path.join(abs_top_builddir, libev, '.libs', 'libev.a')
+
+ if os.path.exists(libev):
+ EXTRA_OBJECTS.append(libev)
+ else:
+ EXTRA_OBJECTS.append('-lev')
+
+
# For gperftools, we need to check for the presence of libprofiler.a, since
# it is possible to disable perftools inside libprocess.
libprofiler = os.path.join(