|
tools useful for A-A-P
The intention for A-A-P is to use existing tools as much as possible. To find
out which tools can be used this overview has been compiled.
Some tools cannot be used directly, but function as an example or can be
invoked by A-A-P (e.g., commercial tools and programs which are not portable).
Unless noted otherwise, tools are open-source.
If you find a tool that would be useful for A-A-P but is not listed here, or
when information is incorrect, send a message to
Bram AT a-a-p.org.
Note: this list is not intended to be complete. Information that is
irrelevant for A-A-P is omitted.
Script languages
Build
Install
Issue Tracking
Version control
Browse
IDEs
Various
Building
To create a program from sources it has to be compiled. And to be able to do
that, it may need to be configured for a specific system. Several tools exist
to do this automatically.
For A-A-P the intention is to be able to build a program on many different
systems. There appear to be only a few existing tools that do this. The
following list of existing tools can be used as examples, and also to fall
back to a system-specific tool once the system has been determined.
For compiling many different compilers exist, these are not listed here.
A list of configuration tools can be found
here
A nice article on configuring can be found
here
(SapCat was an entry to the Software Carpentry contest).
Another (shorter) list of build tools can be found
at dmoz.
Note that the remarks about each tool here are incomplete and biased towards
the goals for A-A-P. Your opinions may differ! Also note that some projects
are in active development and this page is not regularly updated, thus some
information may be outdated. Let me know when something needs to be updated!
The overview is roughly sorted: most interesting things first.
- ccbuild
-
A tool that helps C++ programmers to generate their build files.
It inspects the source code to find out how it should be build.
This one is special in that it can generate an Aap recipe.
Still new. Aimed at beginning programmers.
- FreeBSD ports
-
This might also be called an install tool, but since it's mostly about
building from source, this is in the build tools list.
Will download files that are required.
Handles dependencies between packages.
Works very well.
Not portable: Uses BSD-specific Makefiles and several Unix tools.
Can be used as an example and as a fall-back system on FreeBSD. Need to
check that A-A-P can do everything that FreeBSD ports can do.
Derived tools:
- Portage
-
Like the FreeBSD ports system, used for Gentoo Linux.
Uses bash shell scripts ("ebuild") and Python.
Supports a sandbox for safe installation, multiple versions in parallel
and package management.
A version is available.
Looks interesting, but because of bash it's not portable.
- linuxports
-
Linux version of FreeBSD ports system.
A version is available.
Appears inactive: no change since May 2001.
- gopenports
-
Gooey for FreeBSD ports system. Uses GTK+.
Only planned, nothing is available yet.
- ezupgrade
-
Linux port of FreeBSD ports system.
Not available yet.
- Autoconf
-
Automatic configuration for C programs on Unix. Is based on shell scripts
and the m4 macro language. Won't work on anything but Unix. Writing
autoconf scripts can be very tricky. The syntax is awkward and it's easy
to run into problems. But once it's done it works very well.
What's missing is a good way to automatically extract required tests from
source code.
The A-A-P configuration tool should be able to do all that autoconf can do,
eventually. Until that happens, and for existing autoconf scripts, A-A-P
should be able to handle projects with autoconf scripts in a nice way.
Related tools:
- Automake
-
Generates Makefile.in files.
- Libtool
-
Hides the complexity of using shared libraries behind a consistent,
portable interface.
- SCons
-
Make-like tool in Python.
Uses signatures instead of timestamps.
Automatic dependency analysis.
Support for parallel builds.
Can use a central repository for source code or pre-built targets.
Uses Python for build scripts. Although Python is nice, it is a
general-purpose language and not optimal for describing software builds.
Very interesting. Might be able to use some of the code.
- Cons
-
Make-like tool. Implemented in Perl. Portable.
Very similar to SCons, but using Perl instead of Python.
- Rebuild
-
Make-like tool in Python.
The file format is also Python.
Supports C/C++ with gcc and nasm assembly.
Although it is at version 1.0 it looks like it has only started. Very few
features, doesn't do much more than what can be done with plain Python.
- Source 2 Binary
-
Make-like tool in Python, much like SCons but less advanced.
Only in the alpha stage.
- bakefile
-
Makefile generator. Input is an XML file, output is a Makefile for one of
the many make variants. Can also do something with autoconf for Unix.
Used for WxWindows. Still in an early stage of development.
- tmake and qmake
-
Portable makefile generation tool, by Trolltech. Free.
Tmake converts a tmake project file to a Makefile.
Qmake is a newer version and handles dependencies.
Written in Perl. Does not appear to do automatic configuration.
tmake can be downloaded, qmake is part of Qt 3.0.
Can very well be used as an example, since it's portable over many systems.
- jam
-
Make-like tool by Perforce. Free. Portable. Written in C.
Uses its own interpreted language (a bit cryptic).
Can at least be used as an example. Possibly to start off with.
- Boost.Build
-
Make-like tool based on Boost.Jam, with ideas from Jam.
Free. Portable. Written in C.
Uses its own interpreted language.
Version "v1" is available.
They are working on version "v2", apparently a complete rewrite.
The jamfile specifies dependencies like in a Makefile, but with a slightly
different syntax that makes it easier to write portable build scripts.
There are several interesting items. Many things actually look similar to
an A-A-P recipe.
- make++ aka makepp
-
An improved version of GNU make. For Unix only.
Can use signatures instead of time stamps.
Supports using repositories.
Has a few nice ideas.
Very interesting if A-A-P recipes are going to be compatible with make.
- Cook
-
A make replacement with extra features.
Can use fingerprints (signatures) instead of modification time.
Can do parallel and remote builds.
Includes a tool to determine dependencies in C files.
Uses the terms "recipe" and "cookbook".
Uses autoconf, for Unix only.
Cook has been around for a while, it contains a lot of good ideas.
Its syntax is sane, but half LISPish half TCL feel.
- Makemake
-
A tool to generate "Makefile" from "Imakefile", including dependencies.
Different versions available for several kinds of source code (C, Fortran,
Modula 2).
Implemented in Perl.
Easier to use than imake.
A-A-P should should be able to do everything that makemake can do.
- imake and xmkmf
-
A tool to generate "Makefile" from "Imakefile", including dependencies.
xmkmf is a script that starts imake.
Based on the C preprocessor.
Part of the X window distribution.
A bit complicated to use.
A-A-P should should be able to do everything that imake can do.
- acdk_make
-
Generates makefiles.
Written in Lisp.
Part of Artefaktur Component Development Kit (ACDK).
user-unfriendly documentation.
- cfengine
-
This is a special kind of build system: It defines configuration actions.
But it's use is quite generic and includes defining dependencies.
Some of the ideas in cfengine can be useful for the A-A-P recipe, such as
rules for making symbolic links and updating files from a remote source.
But it is not a generic build tool, thus cannot be used as-is.
- Autobundle/Autobuild/Daily Build System
-
Unix only, based on autoconf/automake. Autobundle is used to build
packages from components. Autobuild for configuring and building software.
Does not appear to include things that are interesting for A-A-P.
- projectbuilder
-
Project build manager, uses python.
It's mentioned on sourceforge as being stable, but I can't find it
anywhere.
- Ant
-
Java based build tool, like make, but uses classes and XML.
Portable over systems, but requires Java.
Writing a build file in XML file is clumsy. XML is nice for computers to
parse and produce, not for humans.
Flow control is even more clumsy, XML is not a scripting language.
Can be used for ideas how recipes work.
Related tools:
- cruisecontrol
-
Automated build and test utilities. Builds upon Ant.
Good idea: automate building and testing as much as possible.
- Rant - Remote Ant
-
Allows building on a remote system from an Ant script.
Uses SOAP.
- jus
-
Improvement of ant with file-based targets and an easier-to-type
scripting language.
Not available yet.
- antfactory
-
Generator for ant scripts.
Not available yet.
- another anthill
-
Extension to the Apache-Ant project.
Performs scheduled builds: Get latest version from version control
system, increment build nr, build and store results.
Implemented in Java.
Some ideas look interesting.
- anthill
-
Integrated distribution of Ant that contains a preconfigured group of
open source tools typically used with ant.
Doesn't look very interesting.
- termite
-
A collection of build utilities.
Can be used together with Ant.
Currently appears to do nothing more than increasing the build number.
- NAnt
-
Ant for .Net and C#.
- jmk
-
Make replacement written in Java.
Portable, uses build-in commands instead of shell commands.
File format still looks a bit like a Makefile.
Has a few interesting ideas, but invents its own language.
- cake
-
Uses the C preprocessor.
Checks contents of files for changes.
Nice paper about it
here.
It's old, GNU make apparently replaces it.
- midwatch
-
Runs builds on a scheduler basis.
Integrates with Rational clearcase et al.
Written in Visual Basic. Runs on MS-Windows NT (at least).
Only interesting as an example for scheduled builds.
- kconfigure
-
KDE program to configure/compile without a terminal. Uses Qt.
Understands configure scripts.
Of limited use, can't do more than configure and make.
- Gconfigure
-
A shell script that allows or easy building from sources. Does the
untar/configure/make things with a few mouse clicks.
Still in an early development stage.
Depends on lots of other tools to do the actual work.
Not portable since it's a shell script.
- makeNG
-
Easier way to manage projects through the use of GNU make.
Calls itself "The superior Build System", but it's unclear why.
Unclear how useful this is.
- tmk
-
Combination of make and Tcl.
Good documentation.
Perhaps some ideas can be used for A-A-P.
- bras
-
Make replacement in Tcl.
Good documentation.
Perhaps some ideas can be used for A-A-P.
- otto
-
Portable build script, written in Perl
Works on MS-DOS, OS/2, Unix, et al.
Uses its own build script language, which is rather limited.
The detection of compilers and system could be used for A-A-P.
- odin
-
Make replacement with quite a few good ideas.
The user manual is well written.
Uses its own build script language.
Does not appear to be widely used, no web page.
Written in C (without comments) and uses shell scripts, Unix only.
The ideas are interesting for A-A-P, but not the implementation.
- Amake
-
Make replacement with quite a few good ideas.
Originally for the Amoeba system.
Uses its own build script language.
Does not appear to be widely used, no web page.
It's part of the Amoeba system, doesn't appear to be available separately.
The ideas are interesting for A-A-P, but not the implementation.
- makelib
-
Build tool that attempts to minimize the effort required to build
libraries, and binaries by managing OS, compiler, and environment
portability issues for the developer.
Doesn't look very interesting.
- Sire (previously Jake)
-
Replacement for Make.
Uses a free format syntax which should be easier to use.
Supports build scripts in stead of commands. Including Python.
Implemented in C++.
Looks interesting.
- Myke
-
A variation of make that has a few extra features. Written in C.
Might not do more than GNU make.
Might be used for code snippets.
- icmake
-
A variation of make that looks like a C program
Doesn't look useful.
- maketool
-
GUI for GNU make. Uses GTK.
The makefile parser might be interesting.
- PVM Gmake
-
GNU make with extensions for parallel building.
Documentation isn't very clear, looks like a hacker project.
- autodep
-
Inspects C, C++ and Java sources for dependencies and generates a
dependency file to be included in a makefile.
There does not seem to be recent development.
Doesn't look very interesting.
- PVM Gmake
-
Remote make facility.
Probably not useful for A-A-P.
- sds
-
Framework for building tools. Based on XML.
Implemented in Python, C++, Java and Common Lisp.
Currently mostly for extracting info from source files.
The front-ends to parse different languages might be interesting.
- motu
-
Framework for project building in Java, PHP, et al.
Supports sharing data between a team over the internet.
Still in an early development stage.
Perhaps some ideas can be used for A-A-P.
- Nmake from Lucent
-
Not to be confused with MS nmake! Lucent is now called Alcatel-Lucent.
Features distributed and parallel execution, automatic dependency
generation, language for flow control. Still uses shell commands. Compiles
makefiles to minimize work (as if that were important...).
This is a commercial program. An open source fork can be found here:
http://www.research.att.com/sw/download/. It's part of the ast-base package.
- Opus make
-
An extended make program with all kinds of extra features.
This is a commercial program.
- makeme
-
Make tool in Java.
Doesn't look very useful for A-A-P.
- maker
-
C++ program building without makefile.
Doesn't look very useful for A-A-P.
- dev-env
-
Console based build for C++/C programs.
Aims to be compiler and platform independent.
Doesn't look very useful for A-A-P.
|
|