Re: Exim 4.62 with localscan_dlopen_exim_4.20 patch builds with an execption (OSX 10.4.6 PPC)
Ross Boylan <[email protected]> Tue, 05 Sep 2006 23:23:16 +0000
| Newsgroups | gmane.mail.exim.spamassassin |
|---|---|
| Organization | University of California San Francisco--Biostatistics |
| Message-ID | <[email protected]> |
On Tue, 2006-09-05 at 18:19 -0400, Kurt Zurich wrote: > On Tue, 05 Sep 2006 19:30:38 +0000 > Ross Boylan <[email protected]> wrote: > > > On Tue, 2006-09-05 at 14:14 -0400, Kurt Zurich wrote: > > > Hello! > > > > > > Patched Exim 4.62 sources with localscan_dlopen_exim_4.20 patch. > > > > > > "make" builds the binaries, except at the end, gcc complains that: > > > > > > "powerpc-apple-darwin8-gcc-4.0.1: unrecognized option '-rdynamic'" > > > > > > The patch file contains the following comment: > > > > > > "+# On systems which support dynamic loading of shared libraries, Exim > > > can +# load a local_scan function specified in its config file instead > > > of having +# to be recompiled with the desired local_scan function." > > > > > > Do I understand gcc's exception correctly to mean that sa-exim cannot be > > > loaded dynamically under OSX? > > > > > > Thank you. > > > > > That seems unlikely; OSX has dynamic loading. However, the option names > > are somewhat idiosyncratic; the error just means that option name is > > unrecognized by your gcc. > > Thank you for your reply Ross. > > I downgraded to gcc-3.33 to try and build the plugins, but no joy. I wouldn't expect that to help. And if you change compiler versions you need to rerun config--the safest route is to remove your old build directory and start from scratch. > > Below, the stdout and stderr from my first attempt: > > -------------------------------------------------------------------------- > Building sa-exim-4.2.1.so > gcc-3.3 -I"/usr/tmp/exim-4.62-SA-EXIM/src" -I -DDLOPEN_LOCAL_SCAN > -DSPAMASSASSIN_CONF=\"/opt/local/etc/exim/sa-exim\" > -DSPAMC_LOCATION=\"/usr/bin/spamc\" -O2 -Wall -shared -o sa-exim-4.2 .1.so > sa-exim.c gcc-3.3: unrecognized option `-shared' > In file included from sa-exim.c:32: > /usr/tmp/exim-4.62-SA-EXIM/src/local_scan.h:21:20: config.h: No such file > or directory sa-exim.c:512:2: warning: #warning you should not worry about > the "might be clobbered by long jmp", see source The non-existence of config.h strongly suggests that configuration has not taken place successfully. It's a bit odd, since it should have been there from before. P > make: *** [sa-exim-4.2.1.so] Error 1 > -------------------------------------------------------------------------- > > In fact, there is no "config.h" file. > > If I comment (/* */) "#define "config.h"", I get the following stdout and > stderr: > [etc] > -------------------------------------------------------------------------- > > I'm wondering if the sa-exim code is not compatible with exim 4.62. You're having basic problems with the build system; there's nothing to suggest incompatibility with exim (which doesn't mean it is compatible, just that you haven't gotten that far). There are things to suggest incompatibility with OSX. > > Any ideas? One quirk of OSX is that it has a libtool that is different from the GNU (or is it BSD?) libtool used by many build systems. The latter is supposed to, among other things, know how to make shared libraries on different platforms. I'm not sure if OSX is one of the platforms it knows about, particularly if you have an old version of libtool. But this is one area that could cause trouble if the build system was not made with OSX in mind. You're going to have to look into the build system for sa-exim, and possibly the linker and compiler options for OSX shared libraries (which may be called "bundles") to get things right. Unless someone on this list has more direct experience. I've never built sa-exim, and so don't know the details of how that works. Ross P.S. In case you don't know, the canonical unix build style is ./configure make make install Also, the 2 flavors of libtool can coexist as long as the build system uses a syntax like ./libtool to invoke GNU libtool.