[Asterisk-Dev] build/make environment

Theo Zourzouvillys theo at crazygreek.co.uk
Fri May 21 21:22:48 MST 2004


On Friday 21 May 2004 20:10, Tilghman Lesher wrote:
> Congratulations.  You're the new maintainer of the autoconf option.
> And before we hand you the title officially, we need a guarantee that
> you'll be around for the next 3 years.  In case of death (your own),
> we expect at least a 90 day advance notice, so we can make plans
> to gut it or find a replacement maintainer.

I have and autoconf version based on asterisk cvs head here - and its 
pointless with the code the way it is - there are no more advantages to it 
than the current makefile system.

i totally agree with bk that the source tree needs a change around [1].  all 
projects that start out small at some point need a major re-work of 
'structure' from an administrative (not code) build system point of view, and 
it is a hugggge task initially, but well worth it in the long run, not only 
for the maintainers of the code, but more importantly for developers and 
porters.

a sensible directory structure, along with a roadmap (any maybe some rough 
dates would be good?) of which direction the code is heading, and if the 
maintainers want or give a shit about it compiling on anything other than 
linux/x86 are probably the best places to start.

wrt a structure, my first thoughts would be somethign like this:

|-- build
|-- doc
|-- support
|-- core
|   `-- arch
|-- libs
|   `-- stdtime
`-- modules
    |-- apps
    |   |-- adsiprog
    |   |-- echo
    |   `-- enumlookup
    |-- channels
    |   |-- agent
    |   `-- zap
    |-- codecs
    |   |-- a_mu
    |   |-- adpcm
    |   `-- ulaw
    |-- pbx
    |   |-- config
    |   |-- spool
    |   `-- willcallu
    `-- res
        |-- adsi
        |-- config
        |   |-- ini
        |   |-- perl
        |   `-- db
        |-- musiconhold
        `-- parking

all the *core* of asterisk should move into it's own directory, leaving the 
top directory fairly empty (somethign most people seem to like) other than a 
README, ./configure(.in), and few other misc files, all the build scripts and 
autoconf/make/header stuff should go into build/.

each module subdirectry should contain a directory for *each* module, which 
means people can split the bigger modules down into logical blocks, so you 
don't end up with files 4k+ in length which makes finding somethign you want 
pretty hard.

i'd question why libeditline and berkeleydb are in cvs at all?

some form of asterisk-config (or maybe just use pkg-config) tool should also 
be installed, which takes --cflags, --version and --libs to make it easy to 
add modules in that are outside of digiums source tree, somethign currently 
not the easiest of things.

headers should be installed, too.

all the paths curently -D'ed to gcc should move into an asterisk/paths.h or 
some form, but, thinking about it, why the hell are there any hard coded 
paths other than the *default* config file??

People, i think we need to take a stand back, and look what the hell we're 
buulding here - a makeshift shanty house, which keeps the rain off our head, 
or a nice shiny new house, built from the gound up well?  code seems to be 
added and added, and just 'hacked' in place - no real design or API's, 
cetianly nothing people like me could reference in a document/mailing list 
post somewhere.

and thats the only reason i'm not spending 4 hours+ a day doign things on 
asterisk (where's the todo list for people like me to work on when bored for 
a few hours/days?) - i can see a million thigns that would make life a lot 
easier for both users and developers from both a code and concept point of 
view.

i can sadly see a zebra/quagga situation starting to brew here.

 ~ Theo

1 - Change - We all hate that right?

-- 
Theo Zourzouvillys
theo at crazygreek.co.uk
http://www.crazygreek.co.uk/



More information about the asterisk-dev mailing list