As a clarification, on OS X 10.9 (Mavericks) you should only need to do:

  $ ./bootstrap
  $ mkdir build && cd build
  $ ../configure && make check

Also, I wanted to give a big shout out to Till Toenshoff for all the early
investigative work on getting Mesos to build with clang
(MESOS-860<https://issues.apache.org/jira/browse/MESOS-860>,
MESOS-863 <https://issues.apache.org/jira/browse/MESOS-863>,
MESOS-864<https://issues.apache.org/jira/browse/MESOS-864>
)!


On Mon, Dec 30, 2013 at 3:41 PM, Benjamin Hindman <
[email protected]> wrote:

> As many of you know, OS X 10.9 (Mavericks) made clang the default compiler
> which broke Mesos. We had a couple of options:
>
>   (1) Install and use gcc instead.
>   (2) Get Mesos to build with clang.
>
> Unfortunately, (1) wasn't sufficient because there were issues with
> linking clang built libraries with gcc ones, especially for our Python
> bindings. Doing (2) was also a non-starter because libprocess (the
> concurrency library Mesos uses) had hard dependencies on gcc (or more
> precisely on libstdc++). Our intuition was that the best way to eliminate
> those dependencies was to refactor the libprocess code to use C++11, and
> then build Mesos using clang with C++11.
>
> To that end I've pushed a branch at
> https://github.com/benh/mesos/tree/c++11-and-clang that has 14 commits
> enabling first C++11 in Mesos (and libprocess, and stout) and then C++11
> with clang. I've thus far tested this on OS X 10.7 with gcc 4.2.1 (no
> C++11), gcc 4.8 (with C++11), and clang 3.3 (with C++11, in fact, we force
> clang to build with C++11). I'd love to get others trying it out! Note that
> we don't expect to support earlier versions of gcc or clang for C++11.
>
> You can compile with clang via:
>
>   CC=/path/to/clang-3.3 CXX=/path/to/clang++-3.3 ../configure && make check
>
> And via gcc 4.8 for C++11:
>
>   CC=/path/to/gcc-4.8 CXX=/path/to/g++-4.8 ../configure --with-cxx11 &&
> make check
>
> At this point in time on OS X if you use a non-LLVM wrapped gcc (i.e., the
> non-default gcc) you can't build Python unless you've built you're own
> Python using the same compiler you're using for Mesos (since some compiler
> options might not be valid for non-LLVM wrapped compilers). You can disable
> Python via --disable-python (which is necessary for me using gcc 4.8
> because I didn't build Python with gcc 4.8).
>
> The changes necessary did involve upgrading the embedded third party
> ZooKeeper dependency as well as adding a patch to the embedded glog
> dependency. In the long run, the goal is to eliminate the embedded
> dependencies all together. In the short-term, however, we wanted to unblock
> people using Mesos on OS X for development and testing. The updates should
> not have any negative impact on building Mesos without the embedded
> libraries (if anything, this should help since some distributions required
> Mesos to build against ZooKeeper 3.4.5) and until we have a glog
> distribution that works with clang/C++11 we'll likely need to compromise
> and keep the glog library and patch embedded but only for building on OS X.
>
> As laid out in https://issues.apache.org/jira/browse/MESOS-750 we'll be
> moving to "phase 3" after this code gets committed where we'll continue to
> support both C++03 and C++11 compilers for at least another release (or
> two) of Mesos.
>
> Looking forward to feedback. Happy New Year!
>
> Ben.
>

Reply via email to