LWN.net Logo

LCA: Disintermediating distributions

LCA: Disintermediating distributions

Posted Feb 6, 2008 23:37 UTC (Wed) by vapier (subscriber, #15768)
In reply to: LCA: Disintermediating distributions by aleXXX
Parent article: LCA: Disintermediating distributions

too bad cmake and scons continue to re-solve the same problems autotools solved eons ago
(cross-compiling / tool discovery / custom flags).  scons in particular is just terrible and
not in any sort of usable shape for serious projects.


(Log in to post comments)

LCA: Disintermediating distributions

Posted Feb 7, 2008 1:33 UTC (Thu) by modernjazz (guest, #4185) [Link]

So why are so many projects, which already have "working" autoconf build 
systems, doing all that "useless work" to switch to CMake? The next thing 
that happens is most of them seem to express great satisfaction and 
relief with the result. Is this just self-delusion to justify the work?

LCA: Disintermediating distributions

Posted Feb 7, 2008 10:25 UTC (Thu) by drag (subscriber, #31333) [Link]

Sometimes. 

Like the migration lots of projects have done from going from CVS to SVN to Git or whatever
else.

When mucking around with a program have you ever noticed that once you program something out,
but find some reason to rewrite it, that it turns out to be better then your original version?
Ya sure you could of spent that time bugfixing the old code or hacking new features into it,
but your going to be almost certain that the new code is going to make your job of maintaining
and improving it just that much better.

I have a feeling that if many of those projects just stripped out all the stuff they used make
(or autotools or whatever) for and then reimplimented it from scratch then they would of been
nearly as happy with it.

Also projects that are ho-hum about converting to cmake are not all of a sudden going to turn
around and broadcast to the world that they spent a great deal of their time on something that
ended up not mattering a whole lot. It's not like they are going to end up being examples
while other projects just love it.

LCA: Disintermediating distributions

Posted Feb 7, 2008 10:59 UTC (Thu) by modernjazz (guest, #4185) [Link]

Sure, a simple project works great with any of several build strategies, 
so of course not everyone will be thrilled by switching. But if CMake 
only lacks the "I got burned by #!@%*& CMake" contingent, it's already 
ahead of the competition.

LCA: Disintermediating distributions

Posted Feb 7, 2008 12:36 UTC (Thu) by nix (subscriber, #2304) [Link]

My *eyes* got burned by cmake's language.

Haven't they learned that capital letters make things *harder* to read? Have we learned
nothing since the days when Lisp was written in capitals?

LCA: Disintermediating distributions

Posted Feb 7, 2008 14:26 UTC (Thu) by aleXXX (subscriber, #2742) [Link]

Since CMake 2.4.3, released July 2006 (or around that version) the 
commands can be written lowercase, with the coming version 2.6 this is 
even the preferred style (i.e. which is used in the documentation).

Alex

LCA: Disintermediating distributions

Posted Feb 7, 2008 21:28 UTC (Thu) by nix (subscriber, #2304) [Link]

YES! (Time to upgrade. Is my cmake really that old?

... 2.4.1. dammit.)

LCA: Disintermediating distributions

Posted Feb 7, 2008 22:10 UTC (Thu) by aleXXX (subscriber, #2742) [Link]

2.4.1 was a beta version, a lots of bugs were fixed for 2.4.3. Version 
2.4.8 has been released a few weeks ago, I recommend you use this. If 
there is no package for your distro, just download the binary package 
from www.cmake.org and just unpack it in some place you like, it will 
work.

Alex

LCA: Disintermediating distributions

Posted Feb 7, 2008 23:19 UTC (Thu) by nix (subscriber, #2304) [Link]

Yeah, like I said, it was really stupid of me not to upgrade. In fact I've 
*got* a more recent version installed: it's just this bloody old version 
in /usr/local/bin was hiding it... *sigh* chkdupexe time, I think.

LCA: Disintermediating distributions

Posted Feb 7, 2008 20:24 UTC (Thu) by vapier (subscriber, #15768) [Link]

i didnt say it wasnt working *for them*.  they probably wouldnt have made the build system
change if it wasnt working *for them*.  the trouble is when *anyone else* tries to build the
package.  you want to cross-compile it ?  build it on a different platform ?  build with your
own compiler/flags ?  sorry, but the $flavor-of-the-month build system never thought of that.
time to go re-implement the wheel even though autotools already had it solved.

LCA: Disintermediating distributions

Posted Feb 7, 2008 21:47 UTC (Thu) by nix (subscriber, #2304) [Link]

The worst I've found for this is Boost.Jam. It should *not* take 7Kb of 
diffs and a kilobyte of build-system shell scripting to do the equivalent 
of setting --prefix and CXXFLAGS when building Boost!

LCA: Disintermediating distributions

Posted Feb 7, 2008 22:17 UTC (Thu) by aleXXX (subscriber, #2742) [Link]

I'm not sure I get your point here, so I just state what cmake offers 
here:

CMake cvs (2.6.0 will be released soon) supports cross compiling (without 
scratchbox or any other emulators, but of course it can also be used 
inside scratchbox).

If you want to use your own CFLAGS/CXXFLAGS with CMake, you have at least 
two ways to do it:
set CFLAGS/CXXFLAGS when you run cmake, cmake will use them.
Or, later on, run "make edit_cache" and edit the 
CMAKE_C_FLAGS/CMAKE_CXX_FLAGS directly to what you want.

If you build the software on some system where it has never been built 
before it may very well be necessary that you have to do something on the 
buildsystem, add some more checks, add some other locations, other names 
for libraries (e.g. z lib has a lot of different names on Windows). I 
guess this is true for any buildsystem.

Alex

LCA: Disintermediating distributions

Posted Feb 7, 2008 22:40 UTC (Thu) by vapier (subscriber, #15768) [Link]

your comment backs up my point.  all of these alternative build systems consistently re-solve
the exact same problems that autotools solved eons ago.

cmake *just* added support for cross-compiling (and it isnt even in any released version) ?
without even looking at anything else about cmake, that tells me the project is useless to me.
i'm not saying my needs are the same as everyone out there, just that you cant champion a
replacement for autotools if it isnt a replacement.  i'm glad *you've* found it useful, but if
your target compiling audience is more than just you, then i feel sorry for those poor chaps
(where chaps != you).

the things i cite are just common examples ive come across quite frequently when dealing with
non-autotooled packages as a distribution maintainer (whether it be cmake or scons or hand
rolled or whatever).  they certainly a complete list.  i imagine there are numerous other
portability fixes autotools has which these "replacements" lack.

LCA: Disintermediating distributions

Posted Feb 7, 2008 23:22 UTC (Thu) by nix (subscriber, #2304) [Link]

autoconf-generated configure scripts also support the godsends which are 
site-config files. Nobody else seems to remember about that, which means 
you need to wrap another build system around your build system just to get 
your CFLAGS et al consistent.

Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds