*Description*
The Koala compiler toolkit forms a generic framework for component composition. The framework works as follows:
1 Components and compositions are expressed in the Koala component definition language
1 The tool =koala-compiler= is used to synthesize an abstract composition. The combination of =koala-pack=, =implode-asfix=, =koala-wire=, and =koala-compiler= is called the _first-phase_ composition.
1 Composition type-specific tools then perform a specific composition of components. The combination of tools for a particular composition type is called the _second-phase_ composition.
*First phase composition*
Given the component =koala-bundle= as showed in PackKoala, the first phase composition can be performed with the folllowing tool chain:
pack-koala -I ./koala-pb -i koala-tools-bundle \
| implode-asfix \
| koala-wire \
| koala-compiler
This produces an AbstractCompositionDefinition, describing the ingredients of the composition, its structure, as well as relations between modules and components in the composition.
*Second phase composition*
The second phase composition depends on the particular _composition-type_. Below we explain how [[http://www.cs.uu.nl/groups/ST/Merijn/PaperSourceTreeComposition][Source Tree Composition]] can be performed as second phase composition.
[[http://www.cs.uu.nl/groups/ST/Merijn/PaperSourceTreeComposition][Source Tree Composition]] consists of
1 Determining the build order of the components in the composition. This is performed by the tools =koala-tred= and =koala-build-order=. The first tool replaces transitive references (m1->C1->C2->m2) by direct references (m1->m2). The second tool reorders modules such that if a module is referenced, it occurs before the referencing module.
1 Obtaining and integrating source trees. This is achieved with the tool =koala-tree-composer=. This tool produces a shell script that, when executed creates a directory hierarchy in which it unpacks the source trees of all components.
1 Synthesizing a build and configuration process. This is achieved with the tool =koala-build-composer=. This tool creates in the constructed directory hierarchy a top-level Autoconf =configure= scripts as well as Automake =Makefiles=.
The second phase composition therefore consists of the following tool invocations:
koala-tred \
| koala-buildorder \
| koala-tree-composer -o > composer.sh
sh ./composer.sh
koala-tred \
| koala-buildorder \
| koala-build-composer -o
The location where the source tree is produced is denoted with =<prefix>=.
You can now compile the generated composition:
cd
sh ./bootstrap.sh
./configure
make install
We started developing some other second phase composition tools, including a petri-net composer and a graph composer.
-- Main.MerijnDeJonge - 17 Feb 2004