Status of libtool 2.2.X?

Kevin Kofler kevin.kofler at chello.at
Sat Oct 11 16:34:42 UTC 2008


Dan Nicholson <dbn.lists <at> gmail.com> writes:
> The main goal of the autotools is that the package comes to you ready to
> build with just basic unix tools: shell, make, compiler/linker. So, you tend
> to not want to try to regenerate the build files on your own.

And that's one of the main design flaws:
* Bugs at one place get copied into hundreds of packages.
* It wastes space for autogenerated files in tarballs (and those configure 
scripts can often be HUGE, e.g. anything including the KDE 3 acinclude.m4 ends 
up with a huge (over a MB) configure script).
* It makes you reliant on the shell, which may be not available (Window$ - 
sure, there is MSYS, but having to install MSYS is no better than having to 
install e.g. CMake) or very buggy (some proprietary Unix systems, workarounds 
for which are littered all throughout the autotools).
* It is unnecessary: Why is it OK to have to install make and not e.g. CMake?
* It leads to non-reproducibility, i.e. programs which only build with 
generated files which are very hard to regenerate properly ("fragile" as you 
call it), which makes it harder to modify the programs (I've had my fair share 
of problems already with programs which were hard to modify because they 
depended on some ancient autotools version which was no longer available in 
current distributions - the lack of backwards compatibility is a real problem, 
using pregenerated files solves this problem only for users, not for 
developers), going against the spirit of Free Software, maybe even against the 
letter of the GPL.

(CMake is only an example in the above - you could fill in any central build 
tool there, like SCons, qmake etc.)

Unfortunately, I don't think all the problems caused by this design flaw can be 
fixed within the autotools. What I would suggest to you and other autotools 
developers (and that's a serious suggestion!) is:
* improve backwards compatibility: Don't depend on pregenerated files for 
backwards compatibility, instead make sure there's a way to use older .ac 
and .am files with newer autotools. Keying compatibility features off macros 
like AC_PREREQ might work, or maybe something like Java's --source 1.5 (or 1.4 
or ...) switch.
* start discouraging shipping pregenerated files, instead make sure that 
autoreconf actually works (which mainly amounts to the above point about 
backwards compatibility).
But unfortunately, this won't solve the problem of the reliance on the shell, 
and as configure.ac scripts can contain arbitrary shell snippets, this can't 
really be fixed without a major redesign, the result of which would effectively 
no longer be autotools.

        Kevin Kofler




More information about the devel mailing list