build systems



hello!

i will begin this mail with a warning:
**************************************
this topic is highly dangerous, it could result in flame-wars,
holy-wars, suicide, death or murdering. so please be kind and nobody
will get hurt (even not your cat or your hamster) and vincent may gets
an ice cream ;)
**************************************

now, as some of you know, cheese uses toc2 as build system. why? will
some of you ask, he could have used autofoo too! well, it wasnt just "i
dont like autofoo and therefore..", the whole decision was made in
several weeks and i really tried autofoo (and got about 7 patches, which
autofoo'd cheese). i want to tell you what kept me off from autotools:

it always takes three steps
===========================
most projects in the unix world, who have compiled a package by themself
know that three-step ./configure && make && make install. and in my
opinion i really like it, its simple and gives (at least it should) you
enough options to install it how and where you want. this is fine, but
there are some cases, where this drove me crazy. do i really want to
look through a 1000-lines Makefile and edit my things there, thats just
far to complicate as it really doesnt have any structure. editing
Makefile.in or configure.ac directly? see next point

exotic? yeah, my holidays are exotic
====================================
if you want a build system that works, you would have to know how it
works. so in the case of autofoo i would have to know how m4 works. but
why am i supposed to? i think the discussion about sourcecode management
tools made it clear: we dont want exotic scm-tools, like darcs (which is
coded in haskell), as nobody knows that language. so build systems in
ocaml, lisp, brainfuck, whitespace... hey, the knowledge of a programmer
which is used to c, python, shell, ... should be enough to understand a
build tool.

im going for a tee
==================
i think english people can skip that point as they are happy to drink a
tea now and then. its really no problem to wait that really long time
just because you changed a variable name and did a make clean wrongly.
so just enter those three steps and go for a drink somewhere, and when
you come back....

cryptology
==========
yeah, if you are coming back you will find this error message: "ERROR:
haha you will never find out what this error message means". some other
messages are like: "libfoo-1.2.3 found, but you will need at least
libfoo-0.0.1" (this one is really happened to me some weeks ago). i dont
know if the usability experts really want such a thing.

my grandma used fortran
=======================
autofoo is checking if i have installed the gnu fortran 77 compiler. of
course it could also check whats the color of my underpants or the
number of illegally aquired songs and movies in my home directory, i
think you get it.

my hard disk is big enough
==========================
eog (plain svn checkout): about 40 files for autofoo
eog (after doing a ./configure): about 100 files
this is pretty much, really! even if there are some gigs free on my
harddisk.

1010010000010001100
===================
/bin/sh ../../libtool --tag=CC   --mode=compile gcc [...] `test -f
'eggmarshalers.c' || echo './'`eggmarshalers.c

honestly, i never saw a such strange way to compile things... ;)

toc2 instead
============
toc2 instead was really nice, i can edit most of it using bash or
makefiles. its fast as hell and does what i want:
      * fast: it doesnt open a shell for each executed command, which
        allows to be very fast
      * lives in the src-dir
      * use whatever language you want to enhance it, in my case bash
        and makefiles
      * maintaineance is very easy
      * custom things:
      ./configure --maintainer
        enables the maintainer mode, which just sets the paths to the
        glade or ui-files correctly, in order to allow an execution in 
        the src-dir.
      make dist
        just a normal "make dist", but mine prints the md5sum of the 
        package so that i just have to copy it

i made my decision based on that, even though i got _many_ lets say nice
or not so nice messages about that. after about 4 months i am still
satisfied with my decision. 

though my biggest concern about toc2 at the moment is translation
handling, which is not supported by itself and therefore has to be done
manually with xgettext and msgmerge.

so richard hughes and ali sabil told me about waf
(http://code.google.com/p/waf/) as a build system replace for toc2,
which would support translations nicely. has anyone used this tool?



please understand, i dont want to bring up a "autotools is bad and it
should die"-thread, i just want to use my time to code and not to use
that time and effort on a build system. i also know, that i have stabbed
into a beehive, so please be kind lets keep this discussion objective
and realistic.


thanks a lot for reading the whole mail till here and not pressing the
"reply flame"-button immidiately ;)

daniel

-- 
this mail was sent using 100% recycled electrons
================================================
daniel g. siegel <dgsiegel gmail com>
http://home.cs.tum.edu/~siegel
gnupg key id: 0x6EEC9E62
fingerprint: DE5B 1F64 9034 1FB6 E120 DE10 268D AFD5 6EEC 9E62
encrypted email preferred

Attachment: signature.asc
Description: This is a digitally signed message part



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