Re: build systems



Il giorno ven, 09/11/2007 alle 15.51 +0100, Emmanuel Fleury ha scritto:
> Richard Hughes wrote:
> > On Fri, 2007-11-09 at 13:52 +0100, Daniel Svensson wrote:
> >> waf runs in two steps, first configure,
> >> then build. And I cannot stress enough how fast it is. Zooom! Also it
> >> has a very nice looks ;)
> > 
> > Yes, I evaluated waf a few months ago. It's a very nice internal design,
> > and very pluggable. Unfortunatly it needs the same modules written as
> > what we use with autotools, e.g. a module to install a schema file, do
> > the translation stuff etc.
> > 
> > It's written in python, and is really a nice project. If I was more l33t
> > at python I would be pushing it much harder than I am for use inside
> > GNOME.
> 
> Did someone tried out Scons (http://www.scons.org/) ?

I did try to use it for some projects of mine that I shared with about
six-seven people each. Ugly as they are, autotools where easier to write
and adapt than SCons, and everybody understood them after I spent half
an hour explaining the principles.

At the end, we reverted back to autotools, and it costed us less time in
maintenance and configuration. Also, what didn't compile in exotic
systems before, started working without doing anything else (MacOSX
comes to mind).

I may be biased, though, since I don't like Python much (I prefer Ruby).
However, moving away from a well established and - above all - working
infrastructure which is so widespread like the autoblah thing, requires
compelling reasons. For me, the cruft of updating Makefiles and
configures doesn't even remotely compares to maintaining SConstruct
files or whatever else is the fashion of the week.

Anyway, I also admit that I know autotools passably well. For example, I
always use a unique Makefile.am for the whole module I'm building
(recursive make is considered harmful!), which is something that not a
lot of people do, and I must say I've seen a lot of "strange" practices
in using autotools around, and that may explain why most people hate
them so badly (simply disliking them is healthy, anyway).

At least for me, SCons meant:

* learning a new language (Python) to do simple things autotools did in
a friendly - yet ugly - fashion;

* having to write complex code to get simple things done in a portable
way (at the time I tried it, I had to write by hand functions to check
for packages using pkg-config and then start setting variables all
around; more recently, compiling Mono binaries was a pain... see the
now-dead Diva project SCons build scripts). Certainly not a win, if I
can do the same thing in three lines within my configure.ac;

* having to understand what an Evironment is and how is used, and
reading through all that darn SCons man page (heck, can't we have GNU
Info support? Never mind) searching for a function which is named in a
way you'd never guess off-hand. I don't care having more granularity and
control over what I do, if in 99% of cases autotools do what I want in a
simplier way;

* people say that SCons errors are more understandable. To me, quite a
lot of times, scons failed silently and even more misteriously than
autotools (without even printing it failed, I had to echo $?)

However, I agree that autotools are just a huge kluge went widespread,
and I'd like to see them replaced. But, I still didn't find a build
system with low requirements, that's easy to learn, and with enough
momentum to ensure me that I won't be forced to hop from one system to
another several times across a few years of maintenance.

I also don't like GNOME resisting to C++/Python/C#/Java in the platform,
and opening to python for the build system. I don't want to have python
installed just to compile glib, old fashioned as you may consider me.
Yeah, I know that nowadays Python is installed for everyone, and all
that things. I just don't like shooting to flies with a cannon.
However, it's not that I hate python: I don't use deskbar applet because
it's too slow and demanding, but I use exaile as my player and bazaar as
my vcs, so go figure.

If I was less lazy, I'd write a configuration system, and I'd make it in
Ruby (if people want to use a damn cannon for killing mosquitos, at
least let's make sure it's a _freakin'_ cannon) or auto-bootstrapping in
C/C++ (yeah, I'm crazy).

Software configuration should be something collateral to your work, not
the most time-consuming thing in the process.

My 2c.
-- 
Matteo Settenvini
FSF Associated Member
Email : matteo member fsf org


-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d--(-) s+:- a-- C++ UL+++ 
P?>++ L+++>$ E+>+++ W+++ N++ o? 
w--- O- M++ PS++ PE- Y+>++ 
PGP+++ t+ 5 X- R tv-- b+++ DI+ 
D++ G++ e h+ r-- y?
------END GEEK CODE BLOCK------

Attachment: signature.asc
Description: Questa =?ISO-8859-1?Q?=E8?= una parte del messaggio firmata digitalmente



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]