Problem compiling cirus-imapd-2.2 (cvs 22042003)
Nikola Milutinovic
Nikola.Milutinovic at ev.co.yu
Thu Apr 24 03:02:45 EDT 2003
Rob Siemborski wrote:
> Okay, given the problems people are having with this I'm going to revert
> the change.
>
> Nikola, if you could be more specific with what problems you were having
> that would be helpful.
OK, here goes.
I have PERL-5.8.0: Threading: Multi-iThreads
I compiled Perl package for Cyrus and installed them, no obvious errors (some
warnings on ptr type mismatch - "char *" and "const char *", but this is usual
for most packages so far).
When I tried to run "cyradm", I got an error. Perl complained on loading
"IMAP.so" that there was an unresolved symbol "Perl_sv_setsv".
The online docs for Perl mentioned that *that* function is retired and that
"Perl_sv_setsv_flags" should be used instead. Compiling installing and running
the same setup on Perl-5.6.1 went without a glitch (if I disregard my personal
misunderstanding of SASL authentication, which was corrected by Ken Murchinson).
So, I knew my installation of Perl-5.8.0 was to blame.
Looking deeper into Perl docs, I found a note and confirmed it in *.h files of
the Perl itself, that programmers are supposed to use macro "sv_setsv" instead
of directly calling "Perl_sv_setsv*", since that macro will not change and will
expand to what the actual version of Perl is using as API.
When I changed "Perl_sv_setsv" to "sv_setsv" and compiled it on Perl-5.8.0,
"cyradm" started working and correct function was being used.
One other Perl fan (not of this list) commented that there is a "compatibility
switch" ("PERLPOLUTE"?) when building Perl, so that it would still support old
API. I havent found this while configuring Perl, but from the docs I'd gather
that using iThreads would turn it on automatically.
The error that you guys are reporting is strange. "sv_setsv" is a macro which
expects 3 parameters. "Perl_sv_setsv_flags" is a function which also expects 3
arguments. How did you end up with 4 is beyond my understanding.
Anyway, this patch is working on Cyrus 2.1.12 and Perl-5.8.0, as reported by one
other member of this list. It would seam that 2.2-alpha is problematic.
Nixie.
More information about the Info-cyrus
mailing list