Ethereal-dev: [Ethereal-dev] May the fleas of a thousand camels infest libtool 1.4

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Guy Harris <guy@xxxxxxxxxx>
Date: Thu, 7 Jun 2001 19:07:45 -0700 (PDT)
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?