For the time being we're planning on adding a new test container that will just use CMake and will run make check. Later, when we get to a point where all the tests are being picked up by CMake, we will follow your advice to make sure that CMake and autotools do not diverge.
Cheers, Artem. On Tue, Oct 6, 2015 at 5:58 AM, Alex Rukletsov <[email protected]> wrote: > I'm thinking about how we can automate the process so we do not have a > dependecy on a single human. I think if the build bot can run the test > suite for both makefile and cmakelists and compare the outcome, this should > suffice. > On 4 Oct 2015 6:50 pm, "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) >>
