Wednesday, April 26, 2006

Die, configure, die!!!

So I'm building a new version of Eterm and, as usual, the ./configure script is getting in the way.

First it couldn't find libast. That was legitimate - so I install libast and expect all to be well.

So now it constructs a compiler command line that gcc chokes on.

That's fine, I tell it to use cc instead and it can't find libast. The reason is simple - it's putting the -last ahead of the -L switch to tell it where the library is.

So I fix that and the compile just blows up. Looking more closely:

cc -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/local/i clude
-I/usr/local/i clude -I/usr/ope wi /i clude -O -c
actions.c -KPIC -DPIC -o .libs/actions.lo

Look closely: it's whacked all the n's out of the include directories.

So I randomly shuffle my PATH (presumably it's found a sed it doesn't like, but isn't that the sort of thing that autoconf is supposed to solve?) and eventually get it to work.

Won't compile. The code simply isn't liked by the Sun compiler.

Ho hum. Back to gcc - let's try a different version. OK, so I get it to configure and make, but it still fails, this time with an Undefined symbol error.

The upshot of all this is that autoconf has just wasted 10 minutes of my time and completely failed to produce a successful result at the end of it all.

Sadly, this is becoming the norm.


FithisUX said...

Autoconf tools are very problematic since when they work, they work fine. When they do not work, it makes life a hell, wastes time and is very hard to fix. I cannot understand why they didn't use some scripting language like TCL. Everything else seems very hacky and useless.

Simplicity my friends, simplicity. This is what ancient Greeks were trying to findout. Simplicity through patterns. (I am a Greek)

Robert said...

I am working on doing the same time compiling Eterm for fluxbox and it not only doesn't find libast but also
Ilibm2 and I compiled a program using
Ilibm2. Too bad there isn't a tracing program or script to trace were and what it searches. I also included the path using crle but still nothing.