Another update, as of this weekend, we've checked in CMake changes
that will allow you to build a pretty wide swath of the master!

You can try it for yourself:

```
mkdir build && cd build
cmake .. && make -j 8
```

On Sun, Oct 4, 2015 at 9:50 AM, Alex Clemmer
<[email protected]> wrote:
> I like the idea, but sometimes it's not actually true that you want to
> touch a CMakeLists when you touch a makefile.am. For example, headers
> dependencies are automatically generated by CMake, so you don't have
> to list the .hpp files. If you were only adding an hpp file to stout,
> so this technique would make you change the CMakeLists even though you
> don't actually want to. BTW, another thing to consider is that we also
> need to find a way in general to tell people that if they modify a
> configure script they likely need to modify a CMakeLists file as well.
>
> So, for now I think it's fine that we have basically me going out and
> reminding people manually.
>
> Another thing worth thinking about on the horizon: it turns out
> maintaining the CMake build is a bit more complicated than it might
> seem. For example, adding simple changes to source files can break the
> CMake build because it makes slightly different assumptions about how
> to do things (like linking), so even if I monitor every review for
> touching particular files, sometimes the build just breaks and I have
> to find out why. We probably want to wrap CMake builds up into the
> bulid bot tests so that contributors get used to it being a thing to
> think about when you write code, and so the build doesn't just explode
> randomly when I pull down from the master branch. I think Artem is
> working on that.
>
> On Wed, Sep 30, 2015 at 1:31 AM, Alex Rukletsov <[email protected]> wrote:
>> Can we extend a pre-commit hook in a way that it's not allowed to modify
>> makefile.am without touching CMakeLists and that any new file should
>> trigger touching CMakeLists? I think this can be part of reveiw r/38827.
>>
>> On Tue, Sep 29, 2015 at 6:46 PM, Alex Clemmer <[email protected]>
>> wrote:
>>
>>> Just as an update, we have expanded support for building the agent,
>>> and there is a review up[1] to support a large part of the master.
>>>
>>> The work is still anchored to the Windows work, so we expect the rest
>>> of the CMake solution to materialize sporadically until the
>>> November/December timeframe. In the mean time, I will be haunting all
>>> your reviews, asking you to make your makefile.am/configure changes in
>>> CMakeLists files also. :) (For more complicated changes, I will even
>>> attempt to help you write the code myself!)
>>>
>>> In the meantime, if you have the time, it would be great to have more
>>> people try it on their favorite platform. We've tried it on Windows
>>> 10, OS X 10.10, Ubuntu 14.04, and Ubuntu 15.04.
>>>
>>> [1] https://reviews.apache.org/r/38827/
>>>
>>> On Mon, Aug 10, 2015 at 12:13 PM, Alex Clemmer
>>> <[email protected]> wrote:
>>> > [... weeks later ...]
>>> >
>>> > Alex, I think that's a great idea, actually! The module you have
>>> > implemented is not a bad start. I've put it in a JIRA ticket so I
>>> > don't lose track of it[1].
>>> >
>>> > Also, just so we're clear: I'm not an expert at CMake. I wish I were,
>>> > it would have made this whole thing much easier.
>>> >
>>> > [1] https://issues.apache.org/jira/browse/MESOS-3249
>>> >
>>> > On Wed, Jul 29, 2015 at 2:31 AM, Alex Rukletsov <[email protected]>
>>> wrote:
>>> >> One related thing I have started to work on but have never polished is
>>> >> FindMesos CMake script. The prototype lives here:
>>> >>
>>> https://github.com/rukletsov/mesos-modules/blob/master/cmake-modules/FindMesos.cmake
>>> >>
>>> >> My original idea was to support not only system Mesos, but also custom
>>> >> builds, so that writers of Mesos Modules can use the script as well.
>>> >>
>>> >> Alex, as CMake expert, let me know what you think!
>>> >>
>>> >> On Mon, Jul 27, 2015 at 7:48 PM, Alex Clemmer <
>>> [email protected]>
>>> >> wrote:
>>> >>
>>> >>> Yes, CMake is currently checking if the -std=c++11 flag exists. CMake
>>> >>> 3 supports the autotools-style "feature check" style (which would be
>>> >>> more appropriate on platforms like Windows, anyway) but it's not clear
>>> >>> how far back we want to support just yet -- right now we support back
>>> >>> to 2.8.
>>> >>>
>>> >>> One thing to consider is that the "default" install of CMake for
>>> >>> apt-get on recent versions of Ubuntu is v2.8. In general, we'd like to
>>> >>> have as smooth an install experience as possible for as many platforms
>>> >>> as we can; I'm willing to be convinced that this isn't worth it, but
>>> >>> to be safe we've developed with 2.8 in mind, because it's easier to go
>>> >>> from 2.8 to 3 than the reverse.
>>> >>>
>>> >>> On Mon, Jul 27, 2015 at 9:37 AM, James Peach <[email protected]> wrote:
>>> >>> >
>>> >>> >> On Jul 23, 2015, at 12:40 PM, Alex Clemmer <
>>> [email protected]>
>>> >>> wrote:
>>> >>> >>
>>> >>> >> A fix is up for review here[1]. Thanks again for your feedback, this
>>> >>> >> is very valuable!
>>> >>> >>
>>> >>> >> [1] https://reviews.apache.org/r/36743/
>>> >>> >
>>> >>> > AFAICT this just checks whether the -std=c++11 compiler option is
>>> >>> accepted. The equivalent autoconf macro checks that various C++11
>>> features
>>> >>> compile, and people have added more over time ...
>>> >>> 9eda4331dd23c3646aba1ec710e0dd3190e579ab,
>>> >>> 623d6a0d0f0eb90be80b7e95c91ece89de513367,
>>> >>> b930d5ce32b60b7c126844a3ef6ae119d36bc8d0, etc.
>>> >>> >
>>> >>> > Am I reading the cmake right?
>>> >>> >
>>> >>> >>
>>> >>> >> On Thu, Jul 23, 2015 at 12:18 PM, Vinod Kone <[email protected]>
>>> >>> wrote:
>>> >>> >>> yup.
>>> >>> >>>
>>> >>> >>> checking for C++ compiler version... 4.1.2
>>> >>> >>>
>>> >>> >>> checking for C++ compiler vendor... (cached) gnu
>>> >>> >>>
>>> >>> >>> configure: error: GCC 4.8 or higher required (found 4.1.2)
>>> >>> >>>
>>> >>> >>> [vinod@smfd-atr-11-sr1 build-cmake]$ echo $?
>>> >>> >>>
>>> >>> >>> 1
>>> >>> >>>
>>> >>> >>> On Thu, Jul 23, 2015 at 12:17 PM, Alex Clemmer <
>>> >>> [email protected]>
>>> >>> >>> wrote:
>>> >>> >>>
>>> >>> >>>> We can easily change that to be a FATAL_ERROR or a WARNING. I
>>> >>> >>>> recommend being at parity with autotools -- am I correct in
>>> assuming
>>> >>> >>>> that it errors out?
>>> >>> >>>>
>>> >>> >>>> On Thu, Jul 23, 2015 at 12:12 PM, Vinod Kone <[email protected]
>>> >
>>> >>> wrote:
>>> >>> >>>>> The one thing I found odd while testing was that some errors when
>>> >>> running
>>> >>> >>>>> 'cmake' do not result in a non-zero exit status.
>>> >>> >>>>> For example, when I tested with an older version of GCC it gave a
>>> >>> warning
>>> >>> >>>>> about C++11 not being supported but went ahead otherwise.
>>> >>> >>>>>
>>> >>> >>>>> -- Performing Test COMPILER_SUPPORTS_CXX11 - Failed
>>> >>> >>>>>
>>> >>> >>>>> *--
>>> >>> >>>>>
>>> >>> >>>>
>>> >>>
>>> Thecompiler/usr/bin/c++doesnotsupportthe`-std=c++11`flag.PleaseuseadifferentC++compiler.*
>>> >>> >>>>>
>>> >>> >>>>> -- Looking for include file pthread.h
>>> >>> >>>>>
>>> >>> >>>>> -- Looking for include file pthread.h - found
>>> >>> >>>>>
>>> >>> >>>>> -- Looking for pthread_create
>>> >>> >>>>>
>>> >>> >>>>> -- Looking for pthread_create - not found
>>> >>> >>>>>
>>> >>> >>>>> -- Looking for pthread_create in pthreads
>>> >>> >>>>>
>>> >>> >>>>> -- Looking for pthread_create in pthreads - not found
>>> >>> >>>>>
>>> >>> >>>>> -- Looking for pthread_create in pthread
>>> >>> >>>>>
>>> >>> >>>>> -- Looking for pthread_create in pthread - found
>>> >>> >>>>>
>>> >>> >>>>> -- Found Threads: TRUE
>>> >>> >>>>>
>>> >>> >>>>> -- Found ZLIB: /usr/lib64/libz.so (found version "1.2.3")
>>> >>> >>>>>
>>> >>> >>>>> -- Found APR headers: /usr/include/apr-1
>>> >>> >>>>>
>>> >>> >>>>> -- Found APR library: /usr/lib64/libapr-1.so
>>> >>> >>>>>
>>> >>> >>>>> -- Found APRUTIL headers: /usr/include/apr-1
>>> >>> >>>>>
>>> >>> >>>>> -- Found APRUTIL library: /usr/lib64/libaprutil-1.so
>>> >>> >>>>>
>>> >>> >>>>> -- Found SVN lib: /usr/lib64/libsvn_client-1.so
>>> >>> >>>>>
>>> >>> >>>>> -- Found SVN lib: /usr/lib64/libsvn_delta-1.so
>>> >>> >>>>>
>>> >>> >>>>> -- Found SVN lib: /usr/lib64/libsvn_diff-1.so
>>> >>> >>>>>
>>> >>> >>>>> -- Found SVN lib: /usr/lib64/libsvn_fs-1.so
>>> >>> >>>>>
>>> >>> >>>>> -- Found SVN lib: /usr/lib64/libsvn_fs_base-1.so
>>> >>> >>>>>
>>> >>> >>>>>
>>> >>> >>>>>
>>> >>> >>>>>
>>> >>> >>>>> On Thu, Jul 23, 2015 at 12:07 PM, Alex Clemmer <
>>> >>> >>>> [email protected]>
>>> >>> >>>>> wrote:
>>> >>> >>>>>
>>> >>> >>>>>> I've put up a pair of fixes, tested on OS X 10.10. They are
>>> here:
>>> >>> >>>>>>
>>> >>> >>>>>> (1) https://reviews.apache.org/r/36740/
>>> >>> >>>>>> (2) https://reviews.apache.org/r/36741/
>>> >>> >>>>>>
>>> >>> >>>>>> This should resolve the issues, and thanks again for the bug
>>> report.
>>> >>> >>>>>>
>>> >>> >>>>>> On Thu, Jul 23, 2015 at 3:32 AM, haosdent <[email protected]>
>>> >>> wrote:
>>> >>> >>>>>>> Sure, I use OS X 10.10. Seems OS X don't have librt, don't add
>>> rt
>>> >>> when
>>> >>> >>>>>> the
>>> >>> >>>>>>> operate system is OSX?
>>> >>> >>>>>>>
>>> >>> >>>>>>> On Thu, Jul 23, 2015 at 6:22 PM, Alex Clemmer <
>>> >>> >>>>>> [email protected]>
>>> >>> >>>>>>> wrote:
>>> >>> >>>>>>>
>>> >>> >>>>>>>> Thanks for reporting the issue! I appreciate it.
>>> >>> >>>>>>>>
>>> >>> >>>>>>>> This code is trying to find librt, which provides the POSIX.1b
>>> >>> >>>>>>>> Realtime Extension (i.e., things like message passing, async
>>> I/O,
>>> >>> >>>>>>>> mmap'd files, etc.). Assuming you're running some flavor of
>>> Linux,
>>> >>> >>>>>>>> this _should_ exist on your system already, and
>>> `find_library` is
>>> >>> the
>>> >>> >>>>>>>> CMake-standard function to find it, so it is not immediately
>>> >>> clear to
>>> >>> >>>>>>>> me what went wrong here.
>>> >>> >>>>>>>>
>>> >>> >>>>>>>> Do you mind if I ask what system you are running?
>>> >>> >>>>>>>>
>>> >>> >>>>>>>> On Thu, Jul 23, 2015 at 1:16 AM, haosdent <[email protected]
>>> >
>>> >>> >>>> wrote:
>>> >>> >>>>>>>>> Hi, @Alex Clemmer  I try to build it on OS X 10.10
>>> >>> >>>>>>>>>
>>> >>> >>>>>>>>> ```
>>> >>> >>>>>>>>> mkdir build-cmake
>>> >>> >>>>>>>>> cmake ..
>>> >>> >>>>>>>>> make
>>> >>> >>>>>>>>> ```
>>> >>> >>>>>>>>>
>>> >>> >>>>>>>>> But have this error:
>>> >>> >>>>>>>>> ```
>>> >>> >>>>>>>>> CMake Error: The following variables are used in this
>>> project,
>>> >>> but
>>> >>> >>>>>> they
>>> >>> >>>>>>>> are
>>> >>> >>>>>>>>> set to NOTFOUND.
>>> >>> >>>>>>>>> Please set them or make sure they are set and tested
>>> correctly in
>>> >>> >>>> the
>>> >>> >>>>>>>> CMake
>>> >>> >>>>>>>>> files:
>>> >>> >>>>>>>>> LIBRT_LIBRARIES
>>> >>> >>>>>>>>>    linked by target "tests" in directory
>>> >>> >>>>>>>>>
>>> /Users/haosdent/workspace/cpp/mesos/3rdparty/libprocess/src/tests
>>> >>> >>>>>>>>>
>>> >>> >>>>>>>>> -- Configuring incomplete, errors occurred!
>>> >>> >>>>>>>>> ```
>>> >>> >>>>>>>>>
>>> >>> >>>>>>>>> Any steps I wrong here?
>>> >>> >>>>>>>>>
>>> >>> >>>>>>>>> On Thu, Jul 23, 2015 at 11:27 AM, Marco Massenzio <
>>> >>> >>>>>> [email protected]>
>>> >>> >>>>>>>>> wrote:
>>> >>> >>>>>>>>>
>>> >>> >>>>>>>>>> This is really cool!
>>> >>> >>>>>>>>>> Eclipse CDT is becoming a bit tiresome to use, but JetLabs'
>>> >>> CLion
>>> >>> >>>>>> only
>>> >>> >>>>>>>>>> support cmake, so I definitely have a stake in this working
>>> :)
>>> >>> >>>>>>>>>>
>>> >>> >>>>>>>>>> Please keep us posted on progress, I'll definitely try and
>>> give
>>> >>> >>>> it a
>>> >>> >>>>>>>> spin
>>> >>> >>>>>>>>>> on Ubuntu and OSX.
>>> >>> >>>>>>>>>> Thanks for doing it!
>>> >>> >>>>>>>>>>
>>> >>> >>>>>>>>>> *Marco Massenzio*
>>> >>> >>>>>>>>>> *Distributed Systems Engineer*
>>> >>> >>>>>>>>>>
>>> >>> >>>>>>>>>> On Wed, Jul 22, 2015 at 6:06 PM, Alex Clemmer <
>>> >>> >>>>>>>> [email protected]
>>> >>> >>>>>>>>>>>
>>> >>> >>>>>>>>>> wrote:
>>> >>> >>>>>>>>>>
>>> >>> >>>>>>>>>>> On Wed, Jul 22, 2015 at 3:47 PM, Vinod Kone <
>>> >>> >>>> [email protected]>
>>> >>> >>>>>>>> wrote:
>>> >>> >>>>>>>>>>>> This is exciting! Thanks for sharing the progress Alex.
>>> >>> >>>>>>>>>>>>
>>> >>> >>>>>>>>>>>> Mind sending us instructions on how to build/test with
>>> cmake
>>> >>> >>>> for
>>> >>> >>>>>>>> noobs
>>> >>> >>>>>>>>>>> like
>>> >>> >>>>>>>>>>>> me?
>>> >>> >>>>>>>>>>>
>>> >>> >>>>>>>>>>> Ah, rats, I knew I was forgetting something.
>>> >>> >>>>>>>>>>>
>>> >>> >>>>>>>>>>> It actually looks pretty much like the autotools build
>>> system:
>>> >>> >>>>>>>>>>>
>>> >>> >>>>>>>>>>> 1. Make sure you have all the "normal" system dependencies
>>> >>> >>>>>> installed
>>> >>> >>>>>>>>>>> (like APR, etc.)
>>> >>> >>>>>>>>>>> 2. Make sure you have CMake 2.8 or later installed on your
>>> >>> >>>> machine.
>>> >>> >>>>>>>>>>> (On Ubuntu this looks like: `sudo apt-get install cmake`)
>>> >>> >>>>>>>>>>> 3. Go to the root of your Mesos source tree and do
>>> something
>>> >>> >>>> like
>>> >>> >>>>>> the
>>> >>> >>>>>>>>>>> following. Note that you will never have to run bootstrap
>>> or
>>> >>> >>>>>>>>>>> configure, so you should _only_ have to run the following
>>> >>> >>>> commands.
>>> >>> >>>>>>>>>>>
>>> >>> >>>>>>>>>>> mkdir build-cmake
>>> >>> >>>>>>>>>>> cmake ..
>>> >>> >>>>>>>>>>> make
>>> >>> >>>>>>>>>>>
>>> >>> >>>>>>>>>>> 4. Watch as it builds, and hopefully doesn't explode!
>>> >>> >>>>>>>>>>>
>>> >>> >>>>>>>>>>> Finally to run tests, you can do `make test ARGS="-V"`.
>>> They
>>> >>> run
>>> >>> >>>>>>>>>>> without ANSI colors right now, which is not ideal, but we
>>> know
>>> >>> >>>>>> it's an
>>> >>> >>>>>>>>>>> issue.
>>> >>> >>>>>>>>>>>
>>> >>> >>>>>>>>>>>
>>> >>> >>>>>>>>>>> --
>>> >>> >>>>>>>>>>> Alex
>>> >>> >>>>>>>>>>>
>>> >>> >>>>>>>>>>> Theory is the first term in the Taylor series of practice.
>>> --
>>> >>> >>>>>> Thomas M
>>> >>> >>>>>>>>>>> Cover (1992)
>>> >>> >>>>>>>>>>>
>>> >>> >>>>>>>>>>
>>> >>> >>>>>>>>>
>>> >>> >>>>>>>>>
>>> >>> >>>>>>>>>
>>> >>> >>>>>>>>> --
>>> >>> >>>>>>>>> Best Regards,
>>> >>> >>>>>>>>> Haosdent Huang
>>> >>> >>>>>>>>
>>> >>> >>>>>>>>
>>> >>> >>>>>>>>
>>> >>> >>>>>>>> --
>>> >>> >>>>>>>> Alex
>>> >>> >>>>>>>>
>>> >>> >>>>>>>> Theory is the first term in the Taylor series of practice. --
>>> >>> Thomas
>>> >>> >>>> M
>>> >>> >>>>>>>> Cover (1992)
>>> >>> >>>>>>>>
>>> >>> >>>>>>>
>>> >>> >>>>>>>
>>> >>> >>>>>>>
>>> >>> >>>>>>> --
>>> >>> >>>>>>> Best Regards,
>>> >>> >>>>>>> Haosdent Huang
>>> >>> >>>>>>
>>> >>> >>>>>>
>>> >>> >>>>>>
>>> >>> >>>>>> --
>>> >>> >>>>>> Alex
>>> >>> >>>>>>
>>> >>> >>>>>> Theory is the first term in the Taylor series of practice. --
>>> >>> Thomas M
>>> >>> >>>>>> Cover (1992)
>>> >>> >>>>>>
>>> >>> >>>>
>>> >>> >>>>
>>> >>> >>>>
>>> >>> >>>> --
>>> >>> >>>> Alex
>>> >>> >>>>
>>> >>> >>>> Theory is the first term in the Taylor series of practice. --
>>> Thomas M
>>> >>> >>>> Cover (1992)
>>> >>> >>>>
>>> >>> >>
>>> >>> >>
>>> >>> >>
>>> >>> >> --
>>> >>> >> Alex
>>> >>> >>
>>> >>> >> Theory is the first term in the Taylor series of practice. --
>>> Thomas M
>>> >>> >> Cover (1992)
>>> >>> >
>>> >>>
>>> >>>
>>> >>>
>>> >>> --
>>> >>> Alex
>>> >>>
>>> >>> Theory is the first term in the Taylor series of practice. -- Thomas M
>>> >>> Cover (1992)
>>> >>>
>>> >>
>>> >>    1.
>>> >
>>> >
>>> >
>>> > --
>>> > Alex
>>> >
>>> > Theory is the first term in the Taylor series of practice. -- Thomas M
>>> > Cover (1992)
>>>
>>>
>>>
>>> --
>>> Alex
>>>
>>> Theory is the first term in the Taylor series of practice. -- Thomas M
>>> Cover (1992)
>>>
>
>
>
> --
> Alex
>
> Theory is the first term in the Taylor series of practice. -- Thomas M
> Cover (1992)



-- 
Alex

Theory is the first term in the Taylor series of practice. -- Thomas M
Cover (1992)

Reply via email to