Build system for KDE4
Hans Meine
hans_meine at gmx.net
Wed Jun 15 13:13:03 BST 2005
Hi Stefan!
On Tuesday 14 June 2005 14:03, Stefan Teleman wrote:
> first, we have a generically vague statement "automake sucks". i have
> several of these too: Python sucks, C++ template function pointer
> syntax sucks. are they useful ?
FWIW, I don't think "automake sucks". I believe the *concept* of automake,
autoconf, and libtool is great. Still, practice has really made me hate this
toolchain.
Some ugly facts that have been mentioned here:
- On the positive side, there is a theoretically very high portability of the
resulting configure file. However, this results in configure scripts that
are
* incredibly and ridiculously large (e.g. 1.603.833 bytes)
* take incredibly and ridiculously long to run (timed 10 Minutes on our
SunOS server, *with* fast-perl!)
- Furthermore, the availability of "good", standard configure checks is low,
and hardly anybody is able to write them, since it requires
* knowledge of M4 (easy, but ugly) and M4 and autoconf macros (hard part)
which are quite obscure and change between versions and so on (compare this
with python, which is easy to learn and offers nice, intuitive string and
list objects with nice convenient methods)
* knowledge on the availability and compatibility of sh/sed/grep-constructs,
parameters and variants (this is where the theoretical portability of
configure scripts gets lost in practice)
- The advantage that end-users do not have to have automake/autoconf installed
is narrowed by the disadvantage that developers have to have dozens of
different autoconf/automake versions installed, because they differ so much
and are not backwards-compatible and each project uses a different version
(apart from that, the availability of python is very high nowadays)
- I find it hard to strip configure files down to what I really need, and
trying to make distributions, I often end up with configure files that try
running automake or autoconf again on end-user machines (and then fail
because of a wrong version).
Finally, 99% of my problems getting KDE to run here at our university can be
attributed to the build system. See e.g. the config.pl fix that I sent
today, and right now I had to hand-edit arts/mcopidl/mcopidl, the libtool-
generated wrapper script, because it tried to do
LD_LIBRARY_PATH="$thisdir/../mcop/.libs:/software/glib-2.4.7/SunOS-5.8/lib:/software/gettext-0.11.5/SunOS-5.8/lib:/software/libiconv-1.8/SunOS-5.8/lib:"
exec $progdir/$program ${1+"$@"}
which means that the LD_LIBRARY_PATH which it carefully set up only seven
lines above (line 80 here) gets overwritten and I get
ld.so.1: /raid0/sw/kde-3.4svn/source/build-SunOS-5.8/arts/mcopidl/.libs/mcopidl:
fatal: libstdc++.so.2.10.0: open failed: No such file or directory
Killed
because C++ runtime library is missing from LD_LIBRARY_PATH.
This is a typical case of libtool's unnecessary and harmful
trying-to-be-too-intelligent which I always thought to be M$-behaviour.
Although I don't know scons/bksys yet, I am hoping that something like that
will be tomorrow's build system.
Ciao, / /
/--/
/ / ANS
More information about the kde-core-devel
mailing list