Repository: mesos Updated Branches: refs/heads/master b4bd08693 -> 53401fdfa
MESOS-1170 Unbundle glog Enable mesos to build against the system installed version of glog. Review: https://reviews.apache.org/r/23453 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/53401fdf Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/53401fdf Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/53401fdf Branch: refs/heads/master Commit: 53401fdfa4b1adf3e447b3338ff1b9e604e0aea2 Parents: b4bd086 Author: Timothy St. Clair <[email protected]> Authored: Wed Aug 6 16:22:34 2014 -0500 Committer: Timothy St. Clair <[email protected]> Committed: Wed Aug 6 16:26:16 2014 -0500 ---------------------------------------------------------------------- 3rdparty/libprocess/3rdparty/Makefile.am | 18 +++++++++--- 3rdparty/libprocess/Makefile.am | 12 ++++++-- 3rdparty/libprocess/configure.ac | 41 +++++++++++++++++++++++++++ configure.ac | 41 +++++++++++++++++++++++++++ src/Makefile.am | 10 ++++++- src/python/native/ext_modules.py.in | 9 ++++-- 6 files changed, 121 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/53401fdf/3rdparty/libprocess/3rdparty/Makefile.am ---------------------------------------------------------------------- diff --git a/3rdparty/libprocess/3rdparty/Makefile.am b/3rdparty/libprocess/3rdparty/Makefile.am index 705d19c..497d038 100644 --- a/3rdparty/libprocess/3rdparty/Makefile.am +++ b/3rdparty/libprocess/3rdparty/Makefile.am @@ -95,7 +95,7 @@ BUILT_SOURCES += $(nodist_libgmock_la_SOURCES) $(GMOCK)/src/gmock-all.cc: $(GMOCK)-stamp $(GTEST)/src/gtest-all.cc: $(GMOCK)-stamp - +if WITH_BUNDLED_GLOG # NOTE: We explicitely set GTEST_CONFIG=no so that we don't attempt to # build glog against a system installed gtest (there's no reason to # "test" glog and it's highly likely it will cause a compilation bug @@ -103,6 +103,7 @@ $(GTEST)/src/gtest-all.cc: $(GMOCK)-stamp $(GLOG)/libglog.la: $(GLOG)-stamp cd $(GLOG) && ./configure GTEST_CONFIG=no $(CONFIGURE_ARGS) && \ $(MAKE) $(AM_MAKEFLAGS) +endif if HAS_GPERFTOOLS $(GPERFTOOLS)/libprofiler.la: $(GPERFTOOLS)-build-stamp @@ -169,7 +170,6 @@ endif stout_tests_CPPFLAGS = \ -I$(srcdir)/$(STOUT)/include \ - -I$(GLOG)/src \ -I$(GTEST)/include \ -I$(GMOCK)/include \ -I$(PROTOBUF)/src \ @@ -183,10 +183,17 @@ if WITH_BUNDLED_PICOJSON stout_tests_CPPFLAGS += -I$(PICOJSON) endif +if WITH_BUNDLED_GLOG + stout_tests_CPPFLAGS += -I$(GLOG)/src + LIBGLOG = $(GLOG)/libglog.la +else + LIBGLOG = -lglog +endif + stout_tests_LDADD = \ libgmock.la \ - $(GLOG)/libglog.la \ $(PROTOBUF)/src/libprotobuf.la \ + $(LIBGLOG) \ -ldl # We use a check-local target for now to avoid the parallel test @@ -199,7 +206,6 @@ check-local: stout-tests # Dependencies for all-local. ALL_LOCAL = \ $(STOUT)/Makefile \ - $(GLOG)/libglog.la \ $(PROTOBUF)/src/libprotobuf.la \ $(PROTOBUF)/src/protoc @@ -215,6 +221,10 @@ if WITH_BUNDLED_PICOJSON ALL_LOCAL += $(PICOJSON)-stamp endif +if WITH_BUNDLED_GLOG + ALL_LOCAL += $(LIBGLOG) +endif + if HAS_GPERFTOOLS ALL_LOCAL += $(GPERFTOOLS)/libprofiler.la endif http://git-wip-us.apache.org/repos/asf/mesos/blob/53401fdf/3rdparty/libprocess/Makefile.am ---------------------------------------------------------------------- diff --git a/3rdparty/libprocess/Makefile.am b/3rdparty/libprocess/Makefile.am index 583f6ef..edbe54b 100644 --- a/3rdparty/libprocess/Makefile.am +++ b/3rdparty/libprocess/Makefile.am @@ -48,11 +48,17 @@ libprocess_la_CPPFLAGS = \ -I$(srcdir)/include \ -I$(srcdir)/$(STOUT)/include \ -I$(BOOST) \ - -I$(GLOG)/src \ -I$(LIBEV) \ -I$(PICOJSON) \ $(AM_CPPFLAGS) +if WITH_BUNDLED_GLOG + libprocess_la_CPPFLAGS += -I$(GLOG)/src + LIBGLOG = $(GLOG)/libglog.la +else + LIBGLOG = -lglog +endif + if WITH_BUNDLED_HTTP_PARSER RY_HTTP_PARSER = 3rdparty/ry-http-parser-$(RY_HTTP_PARSER_VERSION) libprocess_la_CPPFLAGS += -I$(RY_HTTP_PARSER) @@ -69,7 +75,7 @@ else endif libprocess_la_LIBADD = \ - $(GLOG)/libglog.la \ + $(LIBGLOG) \ $(HTTP_PARSER_LIB) \ $(LIBEV_LIB) @@ -110,7 +116,7 @@ tests_CPPFLAGS = \ tests_LDADD = \ 3rdparty/libgmock.la \ libprocess.la \ - $(GLOG)/libglog.la \ + $(LIBGLOG) \ $(HTTP_PARSER_LIB) \ $(LIBEV_LIB) http://git-wip-us.apache.org/repos/asf/mesos/blob/53401fdf/3rdparty/libprocess/configure.ac ---------------------------------------------------------------------- diff --git a/3rdparty/libprocess/configure.ac b/3rdparty/libprocess/configure.ac index 3a38b04..7b39e63 100644 --- a/3rdparty/libprocess/configure.ac +++ b/3rdparty/libprocess/configure.ac @@ -92,6 +92,13 @@ AC_ARG_WITH([libev], location prefixed by the given path]), [without_bundled_libev=yes], []) +AC_ARG_WITH([glog], + AS_HELP_STRING([--with-glog@<:@=DIR@:>@], + [excludes building and using the bundled glog + package in lieu of an installed version at a + location prefixed by the given path]), + [without_bundled_glog=yes], []) + AC_ARG_WITH([http-parser], AS_HELP_STRING([--with-http-parser@<:@=DIR@:>@], [excludes building and using the bundled http-parser @@ -142,6 +149,11 @@ if test -n "`echo $with_picojson`"; then CPPFLAGS="$CPPFLAGS -I${with_picojson}/include" fi +if test -n "`echo $with_glog`"; then + CPPFLAGS="$CPPFLAGS -I${with_glog}/src" + LDFLAGS="$LDFLAGS -L${with_glog}/lib" +fi + if test -n "`echo $with_http-parser`"; then CPPFLAGS="$CPPFLAGS -I${with_http-parser}/include" fi @@ -229,6 +241,35 @@ fi AM_CONDITIONAL([WITH_BUNDLED_PICOJSON], [test "x$with_bundled_picojson" = "xyes"]) +# Check if user has asked us to use a preinstalled glog, or if they asked +# us to ignore all bundled libraries while compiling and linking. +if test "x$without_bundled_glog" = "xyes" || \ + test "x$enable_bundled" != "xyes"; then + # Check if headers and library were located. + AC_CHECK_HEADERS([glog/logging.h], + [AC_CHECK_LIB([glog], + [_init], + [found_glog=yes])]) + if test "x$found_glog" = "xyes"; then + with_bundled_glog=no + else + AC_MSG_ERROR([cannot find glog +------------------------------------------------------------------- +You have requested the use of a non-bundled glog but no suitable +glog could be found. + +You may want specify the location of glog by providing a prefix +path via --with-glog=DIR, or check that the path you provided is +correct if you're already doing this. +------------------------------------------------------------------- +]) + fi +else + with_bundled_glog=yes +fi + +AM_CONDITIONAL([WITH_BUNDLED_GLOG], [test "x$with_bundled_glog" = "xyes"]) + # Check if user has asked us to use a preinstalled http-parser, or if they asked # us to ignore all bundled libraries while compiling and linking. if test "x$without_bundled_http_parse" = "xyes" || \ http://git-wip-us.apache.org/repos/asf/mesos/blob/53401fdf/configure.ac ---------------------------------------------------------------------- diff --git a/configure.ac b/configure.ac index a9cc6df..8fb0a3a 100644 --- a/configure.ac +++ b/configure.ac @@ -158,6 +158,13 @@ AC_ARG_WITH([leveldb], location prefixed by the given path]), [without_bundled_leveldb=yes], []) +AC_ARG_WITH([glog], + AS_HELP_STRING([--with-glog@<:@=DIR@:>@], + [excludes building and using the bundled glog + package in lieu of an installed version at a + location prefixed by the given path]), + [without_bundled_glog=yes], []) + AC_ARG_WITH([cxx11], AS_HELP_STRING([--without-cxx11], [builds Mesos without C++11 support (deprecated)]), @@ -240,6 +247,11 @@ elif test "x$enable_bundled" = "xno"; then CPPFLAGS="$CPPFLAGS -I/usr/include/zookeeper" fi +if test -n "`echo $with_glog`"; then + CPPFLAGS="$CPPFLAGS -I${with_glog}/src" + LDFLAGS="$LDFLAGS -L${with_glog}/lib" +fi + # Check if user has asked us to use a preinstalled LevelDB, or if they asked # us to ignore all bundled libraries while compiling and linking. if test "x$without_bundled_leveldb" = "xyes" || \ @@ -267,6 +279,35 @@ else with_bundled_leveldb=yes fi +# Check if user has asked us to use a preinstalled glog, or if they asked +# us to ignore all bundled libraries while compiling and linking. +if test "x$without_bundled_glog" = "xyes" || \ + test "x$enable_bundled" != "xyes"; then + # Check if headers and library were located. + AC_CHECK_HEADERS([glog/logging.h], + [AC_CHECK_LIB([glog], + [_init], + [found_glog=yes])]) + if test "x$found_glog" = "xyes"; then + with_bundled_glog=no + else + AC_MSG_ERROR([cannot find glog +------------------------------------------------------------------- +You have requested the use of a non-bundled glog but no suitable +glog could be found. + +You may want specify the location of glog by providing a prefix +path via --with-glog=DIR, or check that the path you provided is +correct if you're already doing this. +------------------------------------------------------------------- +]) + fi +else + with_bundled_glog=yes +fi + +AM_CONDITIONAL([WITH_BUNDLED_GLOG], [test "x$with_bundled_glog" = "xyes"]) + AM_CONDITIONAL([WITH_BUNDLED_LEVELDB], [test "x$with_bundled_leveldb" = "xyes"]) http://git-wip-us.apache.org/repos/asf/mesos/blob/53401fdf/src/Makefile.am ---------------------------------------------------------------------- diff --git a/src/Makefile.am b/src/Makefile.am index 405d5dd..39af036 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -92,6 +92,9 @@ MESOS_CPPFLAGS += -I../$(PICOJSON) MESOS_CPPFLAGS += -I../$(PROTOBUF)/src MESOS_CPPFLAGS += -I../$(GLOG)/src +if WITH_BUNDLED_GLOG + MESOS_CPPFLAGS += -I../$(GLOG)/src +endif if WITH_BUNDLED_LEVELDB MESOS_CPPFLAGS += -I../$(LEVELDB)/include @@ -552,7 +555,12 @@ libmesos_la_LIBADD = libmesos_no_3rdparty.la # library each time. (Currently, we don't support platforms where this is not # possible.) libmesos_la_LIBADD += ../$(PROTOBUF)/src/libprotobuf.la -libmesos_la_LIBADD += ../$(GLOG)/libglog.la + +if WITH_BUNDLED_GLOG + libmesos_la_LIBADD += ../$(GLOG)/libglog.la +else + libmesos_la_LIBADD += -lglog +endif if WITH_BUNDLED_LEVELDB # We need to directly include the leveldb library in order to avoid http://git-wip-us.apache.org/repos/asf/mesos/blob/53401fdf/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 a0f74b2..477e63d 100644 --- a/src/python/native/ext_modules.py.in +++ b/src/python/native/ext_modules.py.in @@ -65,13 +65,13 @@ LIBRARY_DIRS = [] EXTRA_OBJECTS = [ os.path.join(abs_top_builddir, 'src', '.libs', 'libmesos_no_3rdparty.a'), os.path.join(abs_top_builddir, protobuf, 'src', '.libs', 'libprotobuf.a'), - os.path.join(abs_top_builddir, libprocess, '.libs', 'libprocess.a'), - os.path.join(abs_top_builddir, glog, '.libs', 'libglog.a') + os.path.join(abs_top_builddir, libprocess, '.libs', 'libprocess.a') ] # 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( abs_top_builddir, zookeeper, '.libs', 'libzookeeper_mt.a') @@ -91,6 +91,11 @@ if os.path.exists(libev): else: EXTRA_OBJECTS.append('-lev') +if os.path.exists(libglog): + EXTRA_OBJECTS.append(libglog) +else: + EXTRA_OBJECTS.append('-lglog') + # 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(
