Ethereal-dev: [Ethereal-dev] May the fleas of a thousand camels infest libtool 1.4
The good news is that, at least in theory, it supports MacOS X, so, in
theory, it might be possible to just build Ethereal on MacOS X.
The *bad* news is that
1) at least as invoked by the Makefile generated by our
Makefile.am and our configure script, on at least some
platforms, it tests variables that aren't set with
test $variable = yes
which causes "test" to fail as $variable expands to nothing;
2) on at least some platforms it "helpfully" creates a wrapper
script to work around a "problem" that curently doesn't affect
us, as far as I know:
http://www.gnu.org/software/libtool/manual.html#Linking%20executables
so that the "ethereal" file in the top-level directory is a
wrapper script, so if you're trying to use a non-installed
version to do some testing, you can't just run the debugger
on it, you have to run the debugger on ".libs/ethereal";
3) if you get annoyed by this and move ".libs/ethereal" to
"ethereal", the binary in question won't run:
machine$ ./ethereal -n -r /u/guy/captures/anothertest.pcap
ld.so.1: ./ethereal: fatal: gryphon.so: open failed: No such file or directory
and, sure enough, for some *unknown* reason, it felt
*obliged* to link Ethereal *at build time* with the plugins:
machine$ ldd ./ethereal
gryphon.so => (file not found)
mgcp.so => (file not found)
libdl.so.1 => /usr/lib/libdl.so.1
...
Problem 1) can be fixed either by
1) fixing a ton of "test" commands in the script
or
2) figuring out whether we're just not passing the right Magic
Command Line Arguments to it and, if we aren't, passing them
to it and hoping that doesn't break something else *or* cause
it not to build with earlier versions of libtool (unless we
want to require that all developers working from CVS
upgrade).
Problem 2) *might* be fixable by using the "-no-install" option, but
that might cause the resulting binary to have problems on at least some
platforms.
I don't know what the right way to fix problem 3) is, but it's clearly
*bogus* that it link with plugins - the whole point of which is that
they get loaded at *run* time - at *build* time.
Do we need to use libtool to link Ethereal? Or do we need it *only* to
know the right command line magic voodoo to produce shareable objects on
various platforms?