Progress report May 2003
tools for developing, distributing, and installing software
By Bram Moolenaar, June 2 2003
Examples
Two larger examples have been made to show how Aap is useful for normal work:
- The ctags example
- The web site example
As a side effect a few small items have been fixed in the Recipe Executive. Thus writing the recipes also functioned as a test.
Variable naming
To make the use of variables more consistent, some variables have been renamed. This causes incompatibilities with previous versions. That is why it had to be done now, before the 1.0 release.
All variables that Aap uses internally all now all-caps. This makes them stand out in the recipe. The user can also still use this style, if he prepends "MY" before the name. If he doesn't do that, he takes the risc that in a future version of Aap the variable conflicts with the meaning Aap gives to it.
To make the use of special characters simpler, they can now be given as $(x)
. This replaces the diverse methods that existed, such as $$
for "$
" and $bar
for "|
". The user no longer has to lookup in the manual what needs to be done to avoid the special meaning of a character.
Wildcard expansion
Previously the Python glob()
function had to be used for wildcard expansion. Although this is nice to keep the meaning of variables consistent, most users prefer wildcards to be expanded directly.
Wildcards are now expanded in every place where a file name is expected. To avoid expansion, the wildcard characters should be enclosed in square brackets. The wildescape()
function has been added for this. This appears to be an acceptable complication, since file names with wildcard characters hardly ever appear.
The result is that several recipe examples have become simpler. It is especially nice that the first few examples no longer have to use a Python expression in backticks.
Tool support
Different tools exist on various systems. Especially the C compiler works differently on various platforms. The tool mechanism was added to make it easy to add support for various tools and toolchains. This works with a plugin mechanism and Python files.
The startup recipe contains code to figure out what tool to use by default. The user can overrule this and select his own tools with the ":usetool"
command. It is also possible to select a tool for a specific file, if needed. This is both easy to use and flexible.
Some of the ideas have been taken over from SCons. This was combined with the Aap action mechanism, which makes it simpler to use.
The actual tools to be used are still mostly to be filled in. Currently gcc and msvc are supported, so that it works on most Unix and MS-Windows systems.
Various
Support for rsync
was added. This works like scp
, but for files with small changes the transfer is much faster. rcp
is also supported. Made it possible for the user to specify a different command to be used.
Aap now also works on Mac OS X. Only a few small problems had to be solved. This is nice, because OS X comes with Python included, thus Aap works there right away.
An "add_VAR" attribute can be used to append to a variable. A useful mechanism to define a macro or add an include path, instead of overruling the value with a "var_VAR" attribute.
Progress
The work mostly progressed as planned in May. A bit more time was spend on fixing bugs and improving existing items than expected. Adding the tool mechanism was not planned, but took only one day to add. This means we lag behind the original schedule a bit more than two weeks. This will probably be compensated by dropping the cross referencer work package.
Two weeks were spend on making the examples. The Ctags example could be extended a bit further, especially the functionality for the maintainer is still limited. But that would take more time and doesn't provide the reader with extra insight in how Aap works.
The presentation for the O'Reilly conference was created. This is only a first version, updates are possible until the presentation is given. It will be published when it is ready.
Work on the documentation has started. Until now most parts were written in plain text and dumped somewhere in the manuals. Now the ordering of items needs to be taken care of and everything written as SGML.
Coming weeks
All the important functionality for Aap version 1.0 is now included. The details are also taken care of now. It is about time to make a beta release.
The work on the documentation will continue.
Joerg Beyer made an initial version of the configuration mechanism. This may be added to the released version of Aap. This depends on whether it will get in the way of the 1.0 release.
If there is time available before the 1.0 release some work will be done on supporting more version control systems. Probably for checkout only. There probably will not be enough time left to work on the cross referencer. Version 1.0 should then be ready by the end of June, just before the O'Reilly conference. The schedule is getting very tight!