Automation is always nice, but I think this is one of those cases where there’s not solution beyond updating guidelines and trusting the reviewers.
I recently faced another case of modifying a Makefile.am which didn’t need to update a CMakeLists.txt. If you add a stout test file, it needs to be added into the libprocess Makefile.am (the tests are running from there), but the stout CMake file is within stout. > On 06 Oct 2015, at 14:58, 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) >>
