mesos-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Clemmer (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (MESOS-898) Introduce CMake as an alternative build system.
Date Wed, 24 Jun 2015 16:44:04 GMT

    [ https://issues.apache.org/jira/browse/MESOS-898?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14599706#comment-14599706
] 

Alex Clemmer edited comment on MESOS-898 at 6/24/15 4:43 PM:
-------------------------------------------------------------

I'd like to start this conversation with (what I think is) the simplest step forward.

I've put together a prototype CMake-based build system that covers libprocess and the third-party
libraries, which successfully builds on several flavors of Linux. It is the [last commit of
this branch|https://github.com/hausdorff/mesos/commits/test_cmake]. In general, I'm hoping
that this will help focus the discussion around concrete things that I need to fix or do less
stupidly, to accomplish our goals in this project.

Some notes:

* I DON'T KNOW CMAKE (OR AUTOCONF), so if it looks like I'm doing something silly, it's because
I am!
* It's pretty well-commented. I'm hoping it's not too hard to navigate.
* It is build to be x-plat at the outset. So, you should be able to take this file and generate
makefiles or, like, nmake files.
* This commit spans Mesos, libprocess, and stout (rather than separating them out) mainly
to make it easy to consume -- for the "real" solution, I will happily split them out appropriately.
* So far, this prototype commit follows [~haosdent@gmail.com]'s supposition that we want to
build the CMake system incrementally and in parallel (though I want to note that stout is
a header-only library, and does not need to be built).

Some things on the roadmap if you all like the progress so far:

[x] Third-party dependencies are downloaded, configured, and built when you run `make` (or
whatever).
[ ] Support for system installations of the third-party dependencies (i.e., we should allow
users to use glog if it's already installed on their machine)
[x] Tests build and run on multiple flavors of Linux
[ ] Benchmarks build and run on multiple flavors of Linux

n.b., for issue 2 I have not decided what the "right" way of communicating the system dependencies
to CMake is. In the autoconf solution this comes from `configure`, but CMake will not have
a configure step because it needs to run not only on POSIX machines.


EDIT: sorry, folks, for double posting this. I don't interact with JIRA much.


was (Author: hausdorff):
I'd like to start this conversation with (what I think is) the simplest step forward.

I've put together a prototype CMake-based build system that covers libprocess and the third-party
libraries, which successfully builds on several flavors of Linux. It is the [last commit of
this branch|https://github.com/hausdorff/mesos/commits/test_cmake]. In general, I'm hoping
that this will help focus the discussion around concrete things that I need to fix or do less
stupidly, to accomplish our goals in this project.

Some notes:

* I DON'T KNOW CMAKE (OR AUTOCONF), so if it looks like I'm doing something silly, it's because
I am!
* It's pretty well-commented. I'm hoping it's not too hard to navigate.
* It is build to be x-plat at the outset. So, you should be able to take this file and generate
makefiles or, like, nmake files.

Some things on the roadmap if you all like the progress so far:

[x] Third-party dependencies are downloaded, configured, and built when you run `make` (or
whatever).
[ ] Support for system installations of the third-party dependencies (i.e., we should allow
users to use glog if it's already installed on their machine)
[x] Tests build and run on multiple flavors of Linux
[ ] Benchmarks build and run on multiple flavors of Linux

n.b., for issue 2 I have not decided what the "right" way of communicating the system dependencies
to CMake is. In the autoconf solution this comes from `configure`, but CMake will not have
a configure step because it needs to run not only on POSIX machines.


EDIT: sorry, folks, for double posting this. I don't interact with JIRA much.

> Introduce CMake as an alternative build system.
> -----------------------------------------------
>
>                 Key: MESOS-898
>                 URL: https://issues.apache.org/jira/browse/MESOS-898
>             Project: Mesos
>          Issue Type: Epic
>          Components: build
>            Reporter: Timothy St. Clair
>            Assignee: Alex Clemmer
>              Labels: build
>
> This is a rather substantial undertaking, so I would want upstream debate+buy-in prior
to full commitment.  The basic premise is: upstream rebundles several of its dependencies
in part to tightly control its stack.  This is not out of the norm, but in order to be picked
up by distribution channels it needs to built against system dependencies, and rebundling
is strictly forbidden.  Given that the mesos primary target platform are data-center distributions
such as RHEL/CENTOS/SL it makes sense to still have bundling support for those who do not
have dependencies in their channels "yet".  This is where cmake can be win with it's uber
macros (http://www.cmake.org/cmake/help/v2.8.8/cmake.html#module:ExternalProject).  I do not
know of any equivalent in the autotools world, other then to brew your own solution.   I've
done this type of work in the past, and completely transformed condor and would leverage a
lot of the work that was done there. 
> I currently have a tracking branch where I've started this work, but before I go off
into the woods, it makes sense to have a debate in public. 
> The primary benefits are: 
> 1. Enable downstream channels to easily distro without carrying a large patch sets. 
> 2. Still support existing "non-proper" distribution methods. 
> 3. Harden / future proof dependent interfaces. 
> Side Benefits: 
> Audit current build mechanics.  
>  - Presently the language specific binding are not installed.  (.py & .jar)
>  - make -jX currently fails 
>  - optionally look in arm support. 
> Costs:
> 1. Time
> 2. Potential temporary destabilization
> 3. Infrastructure around build+test may need to change.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message