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)
