You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mesos.apache.org by Brenden Matthews <br...@airbedandbreakfast.com> on 2013/03/12 18:46:56 UTC

Build system

Hey folks,

I've started in replacing the current Mesos build system, with a few goals
in mind:

a) easing development

b) simplifying deployment

c) removing third party libraries from the source tree (where possible)


To facilitate this I've started replacing autotools with CMake, which I
believe is a much better build system.

Please let me know your thoughts so I can continue the replacement.

Best,

Brenden

Re: Build system

Posted by Benjamin Mahler <be...@gmail.com>.
Sorry I forgot to get around to replying to this.

I don't think you'll find disagreement with me in terms of which tool
is easier to use. There are mostly two concerns for me:

1. Users will need to install CMake. Not a big deal.

2. Myself and others now have an understanding of autotools, we will
have learn the CMake system. This is also not a big deal, should CMake
provide a much better build system.

3. This one is the most concerning to me; there are *a lot* of
semantics captured in our current build setup. Take a look at our
./configure.ac and src/Makefile.am. It will be a big undertaking to
capture all those semantics using CMake as well, and if you've done
C++ development in the past, your efforts might be better spent on
some of the more pressing things we need done.

Ben

On Tue, Mar 12, 2013 at 5:36 PM, Brenden Matthews
<br...@airbedandbreakfast.com> wrote:
> Hey Ben,
>
> Build systems are very important for any project, and they're something
> people tend to be opinionated about.
>
> I've done quite a bit of C and C++ development in the past, and dealt with
> a lot of deployment issues.  For a discussion of CMake vs. autotools, you
> can get most of the information you need from your favourite search engine.
>
> Modern operating systems will handle the third party libraries for you.
>  This might be an issue for people who are still running older
> distributions, and there is little that can be done about this.  As far as
> I can tell, Mesos isn't using anything particularly special with regards to
> third party libraries.  The OS libraries (at least with Debian or Fedora &
> derivatives) should be adequate in most cases.  For those who want to run
> the bleeding edge, they may need to update the libraries themselves.
>
> For developers, a switch from autotools to Mesos won't change much in terms
> of workflow.  Installing CMake isn't brain surgery, and CMake is (in my
> opinion) much easier to use than autotools.  Regardless of whether you use
> CMake or another build tool, developers are required to install the build
> dependencies.
>
> CMake has built in tools for generating packages (like RPMs and Debian
> packages).  It's as simple as 'make package' once you have it configured
> correctly.
>
> I think the best way for me to convince you (and others) would be to finish
> the conversion, you let you try it out for yourself.  If it's not working,
> we should discuss how to make it work.
>
> Let me know if that seems reasonable.
>
> Best,
>
> Brenden
>
>
> On Tue, Mar 12, 2013 at 1:03 PM, Benjamin Hindman <be...@eecs.berkeley.edu>wrote:
>
>> Hi Brenden,
>>
>> For a little history, this would be the second replacement. ;) We started
>> with organic makefiles before moving to autotools.
>>
>> I don't think any of us would be opposed to a new build system (but I only
>> speak for myself), but I'd love to hear *concretely* how the new build
>> system will ease development and simplify deployment. For example, we
>> include third party libraries in the source tree precisely to make
>> development and deployment easier/simpler! This is a common strategy in JVM
>> based projects (packages which include lots of third party JARs), and until
>> C/C++ gets the equivalent of a maven, I don't know of an easier/simpler way
>> to do it.
>>
>> Moving to a new build system is a pretty substantial undertaking: it both
>> requires developers to learn the new semantics as well as requires users to
>> make sure they have the proper prerequisites (i.e., cmake would need to get
>> installed to build Mesos). So I think it makes sense to have a careful
>> discussion first.
>>
>> Clearly some low hanging fruit that would make deployment significantly
>> easier would be to create/maintain Debian packages and RPMs. It's not clear
>> to me that we'd need a new build system for this, but I'd be happy to learn
>> otherwise.
>>
>> Ben.
>>
>>
>> On Tue, Mar 12, 2013 at 10:46 AM, Brenden Matthews <
>> brenden.matthews@airbedandbreakfast.com> wrote:
>>
>> > Hey folks,
>> >
>> > I've started in replacing the current Mesos build system, with a few
>> goals
>> > in mind:
>> >
>> > a) easing development
>> >
>> > b) simplifying deployment
>> >
>> > c) removing third party libraries from the source tree (where possible)
>> >
>> >
>> > To facilitate this I've started replacing autotools with CMake, which I
>> > believe is a much better build system.
>> >
>> > Please let me know your thoughts so I can continue the replacement.
>> >
>> > Best,
>> >
>> > Brenden
>> >
>>

Re: Build system

Posted by Brenden Matthews <br...@airbedandbreakfast.com>.
Hey Ben,

Build systems are very important for any project, and they're something
people tend to be opinionated about.

I've done quite a bit of C and C++ development in the past, and dealt with
a lot of deployment issues.  For a discussion of CMake vs. autotools, you
can get most of the information you need from your favourite search engine.

Modern operating systems will handle the third party libraries for you.
 This might be an issue for people who are still running older
distributions, and there is little that can be done about this.  As far as
I can tell, Mesos isn't using anything particularly special with regards to
third party libraries.  The OS libraries (at least with Debian or Fedora &
derivatives) should be adequate in most cases.  For those who want to run
the bleeding edge, they may need to update the libraries themselves.

For developers, a switch from autotools to Mesos won't change much in terms
of workflow.  Installing CMake isn't brain surgery, and CMake is (in my
opinion) much easier to use than autotools.  Regardless of whether you use
CMake or another build tool, developers are required to install the build
dependencies.

CMake has built in tools for generating packages (like RPMs and Debian
packages).  It's as simple as 'make package' once you have it configured
correctly.

I think the best way for me to convince you (and others) would be to finish
the conversion, you let you try it out for yourself.  If it's not working,
we should discuss how to make it work.

Let me know if that seems reasonable.

Best,

Brenden


On Tue, Mar 12, 2013 at 1:03 PM, Benjamin Hindman <be...@eecs.berkeley.edu>wrote:

> Hi Brenden,
>
> For a little history, this would be the second replacement. ;) We started
> with organic makefiles before moving to autotools.
>
> I don't think any of us would be opposed to a new build system (but I only
> speak for myself), but I'd love to hear *concretely* how the new build
> system will ease development and simplify deployment. For example, we
> include third party libraries in the source tree precisely to make
> development and deployment easier/simpler! This is a common strategy in JVM
> based projects (packages which include lots of third party JARs), and until
> C/C++ gets the equivalent of a maven, I don't know of an easier/simpler way
> to do it.
>
> Moving to a new build system is a pretty substantial undertaking: it both
> requires developers to learn the new semantics as well as requires users to
> make sure they have the proper prerequisites (i.e., cmake would need to get
> installed to build Mesos). So I think it makes sense to have a careful
> discussion first.
>
> Clearly some low hanging fruit that would make deployment significantly
> easier would be to create/maintain Debian packages and RPMs. It's not clear
> to me that we'd need a new build system for this, but I'd be happy to learn
> otherwise.
>
> Ben.
>
>
> On Tue, Mar 12, 2013 at 10:46 AM, Brenden Matthews <
> brenden.matthews@airbedandbreakfast.com> wrote:
>
> > Hey folks,
> >
> > I've started in replacing the current Mesos build system, with a few
> goals
> > in mind:
> >
> > a) easing development
> >
> > b) simplifying deployment
> >
> > c) removing third party libraries from the source tree (where possible)
> >
> >
> > To facilitate this I've started replacing autotools with CMake, which I
> > believe is a much better build system.
> >
> > Please let me know your thoughts so I can continue the replacement.
> >
> > Best,
> >
> > Brenden
> >
>

Re: Build system

Posted by Benjamin Hindman <be...@eecs.berkeley.edu>.
Hi Brenden,

For a little history, this would be the second replacement. ;) We started
with organic makefiles before moving to autotools.

I don't think any of us would be opposed to a new build system (but I only
speak for myself), but I'd love to hear *concretely* how the new build
system will ease development and simplify deployment. For example, we
include third party libraries in the source tree precisely to make
development and deployment easier/simpler! This is a common strategy in JVM
based projects (packages which include lots of third party JARs), and until
C/C++ gets the equivalent of a maven, I don't know of an easier/simpler way
to do it.

Moving to a new build system is a pretty substantial undertaking: it both
requires developers to learn the new semantics as well as requires users to
make sure they have the proper prerequisites (i.e., cmake would need to get
installed to build Mesos). So I think it makes sense to have a careful
discussion first.

Clearly some low hanging fruit that would make deployment significantly
easier would be to create/maintain Debian packages and RPMs. It's not clear
to me that we'd need a new build system for this, but I'd be happy to learn
otherwise.

Ben.


On Tue, Mar 12, 2013 at 10:46 AM, Brenden Matthews <
brenden.matthews@airbedandbreakfast.com> wrote:

> Hey folks,
>
> I've started in replacing the current Mesos build system, with a few goals
> in mind:
>
> a) easing development
>
> b) simplifying deployment
>
> c) removing third party libraries from the source tree (where possible)
>
>
> To facilitate this I've started replacing autotools with CMake, which I
> believe is a much better build system.
>
> Please let me know your thoughts so I can continue the replacement.
>
> Best,
>
> Brenden
>