Re: [exim] errors when building Makefile

Top Page
Delete this message
Reply to this message
Author: Prashanth Katuri
Date:  
To: Todd Lyons
CC: exim-users@exim.org
Subject: Re: [exim] errors when building Makefile
Todd,

Thank you for your reply.

Below is the exim version currently running on our Solaris machine.

exim -bV
Exim version 3.36 #1 built 07-Dec-2010 03:13:49
Copyright (c) University of Cambridge 2002

Thanks,
Prashanth

-----Original Message-----
From: Todd Lyons [mailto:tlyons@ivenue.com]
Sent: Wednesday, May 22, 2013 9:23 AM
To: Prashanth Katuri
Cc: exim-users@???
Subject: Re: [exim] errors when building Makefile

On Tue, May 21, 2013 at 2:13 PM, Prashanth Katuri <PKaturi@???> wrote:
>
> We are using SunOne LDAP (5.2 P6) version.
> Below is the output after removing lookups.a and ldap.o files.
>
>
> make FULLECHO=''
> `Makefile' is up to date.
>
> make[1]: Entering directory `/home/pkaturi/exim-4.80.1/build-SunOS5-5.10-sparc'
> /bin/sh ../scripts/Configure-config.h "make"
> make[2]: Entering directory `/home/pkaturi/exim-4.80.1/build-SunOS5-5.10-sparc'
> make[2]: `buildconfig' is up to date.
> make[2]: Leaving directory `/home/pkaturi/exim-4.80.1/build-SunOS5-5.10-sparc'
> Building configuration file config.h
>>>> config.h built
>
>>>> version 4.80.1 #46
>
>>>> exicyclog script built
>>>> exinext script built
>>>> exiwhat script built
>>>> exigrep script built
>>>> eximstats script built
>>>> exipick script built
>>>> exiqgrep script built
>>>> exiqsumm script built
>>>> transport-filter.pl script built
>>>> convert4r3 script built
>>>> convert4r4 script built
>>>> exim_checkaccess script built


Something got changed at the Makefile level because it went through and rebuilt EVERYTHING. I really only wanted to see it build the files that I had you remove. But then I saw that it didn't rebuild
those:


> make[2]: Entering directory `/home/pkaturi/exim-4.80.1/build-SunOS5-5.10-sparc/lookups'
> make[2]: Nothing to be done for `all'.
> make[2]: Leaving directory `/home/pkaturi/exim-4.80.1/build-SunOS5-5.10-sparc/lookups'


then again a little while later:

> make[2]: Entering directory `/home/pkaturi/exim-4.80.1/build-SunOS5-5.10-sparc/lookups'
> make[2]: Nothing to be done for `all'.
> make[2]: Leaving directory `/home/pkaturi/exim-4.80.1/build-SunOS5-5.10-sparc/lookups'


On my system, when I remove the lookups.a file, it rebuilds it on that first pass through the lookups subdirectory:

make[2]: Entering directory
`/work/home/exim-build/projects/exim/src/build-Linux-i386/lookups'
ar cq lookups.a
ranlib lookups.a
make[2]: Leaving directory
`/work/home/exim-build/projects/exim/src/build-Linux-i386/lookups'

but then later, something made it build a few specific files in the lookups, which mine does in this strange order too:

> gcc lookups/lf_quote.c
> gcc -c -O -I/usr/local/include -I. -I/usr/local/BerkeleyDB/include -I/usr/local/include lookups/lf_quote.c
> gcc lookups/lf_check_file.c
> gcc -c -O -I/usr/local/include -I. -I/usr/local/BerkeleyDB/include -I/usr/local/include lookups/lf_check_file.c
> gcc lookups/lf_sqlperform.c
> gcc -c -O -I/usr/local/include -I. -I/usr/local/BerkeleyDB/include -I/usr/local/include lookups/lf_sqlperform.c


> gcc -o exim  acl.o child.o crypt16.o daemon.o dbfn.o debug.o deliver.o directory.o dns.o drtables.o enq.o exim.o expand.o filter.o filtertest.o globals.o dkim.o header.o host.o ip.o log.o lss.o match.o moan.o os.o parse.o queue.o rda.o readconf.o receive.o retry.o rewrite.o rfc2047.o route.o search.o sieve.o smtp_in.o smtp_out.o spool_in.o spool_out.o std-crypto.o store.o string.o tls.o tod.o transport.o tree.o verify.o lookups/lf_quote.o lookups/lf_check_file.o lookups/lf_sqlperform.o local_scan.o perl.o malware.o mime.o regex.o spam.o spool_mbox.o demime.o bmi_spam.o spf.o srs.o dcc.o version.o \
>           routers/routers.a transports/transports.a lookups/lookups.a \
>           auths/auths.a pdkim/pdkim.a \
>           -lresolv -lsocket -lnsl -lkstat -lm    \
>           -L/usr/lib -R /usr/lib -liconv -lpam -ldb 
> -L/usr/local/BerkeleyDB/lib/ -R /usr/local/BerkeleyDB/lib/ 
> -L/usr/local/lib -lldap -llber  \


Linking does reference the ldap and lber libraries, and gives it the correct search path.

>           -R /usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE  
> /usr/perl5/5.8.4/lib/sun4-solaris-64int/auto/DynaLoader/DynaLoader.a 
> -L/usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE -lperl -lsocket -lnsl 
> -ldl -lm -lc  -L/usr/local/lib -R/usr/local/lib -lpcre
> ld: warning: global symbol '_END_' has non-global binding:
>         (file /usr/local/lib/liblber.so value=LOCL);
> ld: warning: global symbol '_START_' has non-global binding:
>         (file /usr/local/lib/liblber.so value=LOCL);


and based on the error message, it is looking in the version that you referenced.

> Undefined                       first referenced
>  symbol                             in file
> ldap_start_tls_s                    lookups/lookups.a(ldap.o)
> ld: fatal: symbol referencing errors. No output written to exim


There was a fair amount of work that went into the TLS routines last year. What is the last version that correctly builds for this system?

...Todd
--
The total budget at all receivers for solving senders' problems is $0.
If you want them to accept your mail and manage it the way you want, send it the way the spec says to. --John Levine