I have solved this by setting SASL_* and OPENSSL_* as referenced
in Makefile.PL to include every -l -L -R option necessary for
linking libsasl2.so into IMAP.so

Your perl/imap/README and perl/imap/Makefile.PL need some work.

README should mention SASL_INC, SASL_LIB, OPENSSL_INC, and OPENSSL_LIB
environment variables referenced in Makefile.PL and describe precisely
what they can and/or should contain.

Makefile.PL is inconsistent and confusing here:

  my $SASL_INC = $ENV{SASL_INC};
  my $SASL_LIB = $ENV{SASL_LIB} || "-lsasl2";

  my $OPENSSL_INC = $ENV{OPENSSL_INC};
  my $OPENSSL_LIB = $ENV{OPENSSL_LIB};

combined with line 63:

'LIBS' => ["$SASL_LIB $OPENSSL_LIB -lssl -lcrypto"],

Make up your mind how you want to do it :) I suggest either:

A) Changing:

my $SASL_LIB = $ENV{SASL_LIB} || "-lsasl2";

to:

my $SASL_LIB = $ENV{SASL_LIB};

and adding the appropriate '-lsasl2' on the LIBS line 63 ... OR...

B) Changing:

my $OPENSSL_LIB = $ENV{OPENSSL_LIB};

to:

my $OPENSSL_LIB = $ENV{OPENSSL_LIB} || "-lssl";

Jeff Blaine wrote:
I read the long thread (with no resolution) about this from
Jan 2003.

With our existing AND a brand new fresh/clean Perl 5.6.1
build for the sake of trying to get this to work, I cannot get
it to work and cannot make any sense of what the problem is:

- Solaris 7
- Cyrus IMAP 2.1.13 (working fine with 100 users - has been
  for months.  Just can't do any administration yet!)
- Cyrus IMAP 2.1.14 does the same thing.

=========================================================================
cd /cyrus/src/perl-5.6.1
sh Configure -des -Dprefix=/cyrus -Uinstallusrbinperl
make
make install
=========================================================================
% cd /cyrus/lib
% ls
libacap.a libdb-4.so@ libsasl2.so.2@
libcyrus.a libdb.a@ libsasl2.so.2.0.13*
libdb-4.1.a libdb.so@ perl5/
libdb-4.1.la libsasl2.la* sasl2/
libdb-4.1.so* libsasl2.so@
% nm libsasl2.so | grep sasl_client_init
[521] | 25256| 372|FUNC |GLOB |0 |10 |sasl_client_init
%
=========================================================================
% cd /cyrus/src/cyrus-imapd-2.1.13/perl/imap
% SASL_LIB="-L/cyrus/lib -R/cyrus/lib"
% SASL_INC=-I/cyrus/include
% OPENSSL_LIB="-L/usr/rcf/lib -R/usr/rcf/lib"
% OPENSSL_INC=-I/usr/rcf/include
% perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Cyrus::IMAP
% make
...
[ Output deleted - success and proper -L, -R, and -I options used ]
[ as set above! ]
...
% make install
...
[ Output deleted ]
...
% /cyrus/bin/cyradm
Can't load '/cyrus/lib/perl5/site_perl/5.6.1/sun4-solaris/auto/Cyrus/IMAP/IMAP.so' for module Cyrus::IMAP: ld.so.1: perl: fatal: relocation error: file /cyrus/lib/perl5/site_perl/5.6.1/sun4-solaris/auto/Cyrus/IMAP/IMAP.so: symbol sasl_client_init: referenced symbol not found at /cyrus/lib/perl5/5.6.1/sun4-solaris/DynaLoader.pm line 206.
at /cyrus/lib/perl5/site_perl/5.6.1/sun4-solaris/Cyrus/IMAP/Admin.pm line 44
Compilation failed in require at /cyrus/lib/perl5/site_perl/5.6.1/sun4-solaris/Cyrus/IMAP/Admin.pm line 44.
BEGIN failed--compilation aborted at /cyrus/lib/perl5/site_perl/5.6.1/sun4-solaris/Cyrus/IMAP/Admin.pm line 44.
Compilation failed in require at /cyrus/lib/perl5/site_perl/5.6.1/sun4-solaris/Cyrus/IMAP/Shell.pm line 60.
BEGIN failed--compilation aborted at /cyrus/lib/perl5/site_perl/5.6.1/sun4-solaris/Cyrus/IMAP/Shell.pm line 60.
Compilation failed in require.
BEGIN failed--compilation aborted.








Reply via email to