SUMMARY: Problems running CyrAdm - SOLVED

Christopher S. Pallone cpallone at michaels.com
Tue Apr 22 11:26:29 EDT 2003


I can confirm that the patch listed below has been working for me for the 
last 3 weeks. I have Cyrus IMAP 2.1.12 running on AIX 5.1 using perl 5.8.0. 
The only way I was able to get the Cyrus::IMAP module to compile was to 
change Perl_sv_setsv to sv_setsv.

Chris Pallone
Michaels Stores, Inc.



--On Tuesday, April 22, 2003 12:03:06 +0200 Nikola Milutinovic 
<Nikola.Milutinovic at ev.co.yu> wrote:

> Hi all.
>
> DESCRIPTION
> -----------
> Just to recap, the problem was that running "cyradm" on Perl-5.8.0
> belched an error saying that there was an undefined symbol
> "Perl_sv_setsv" in "IMAP.so".
>
> The same modules and the same "cyradm" on Perl-5.6.1 ran just fine (I had
> some quirks with authentication, but Ken helped me sort things out).
>
> PROBLEM SOURCE
> --------------
> It took me some time to track the problem, but here it is.
> "Perl_sv_setsv" is a Perl function specific to Perl 5.6. It doesn't exist
> under 5.8.0 and there are no macros to "bridge the gap". The idea, if I
> understand correctly, is to use "sv_setsv()" which will be expanded via
> macro into what the actual platform uses.
>
> For 5.6.1 "sv_setsv" expands to "Perl_sv_setsv", while for 5.8.0 it
> expands to "Perl_sv_setsv_flags". Normally, "IMAP.so" with such a symbol
> reference couldn't be loaded and thus the failure.
>
> SOLUTION
> --------
> I manually edited IMAP.xs and changed two lines holding "Perl_sv_setsv"
> to "sv_setsv" and recompiled. Then I placed newly created "IMAP.so" into
> Perl directory and it is working.
>
> As far as I can see "IMAP.xs" is the only file with this, so here is a
> diff output (sorry guys, I don't have GNU diff), I hope you can use it.
>
> PATCH
> -----
> FILE: cyrus-imapd-2.1.12/perl/imap/IMAP.xs
> 605c605,606
> <           Perl_sv_setsv(aTHX_ pcb, av_shift(av));
> ---
>  >           /* Perl_sv_setsv(aTHX_ pcb, av_shift(av)); */
>  >             sv_setsv(aTHX_ pcb, av_shift(av));
> 608c609,610
> <             Perl_sv_setsv(aTHX_ pcb, av_shift(av));
> ---
>  >             /* Perl_sv_setsv(aTHX_ pcb, av_shift(av)); */
>  >               sv_setsv(aTHX_ pcb, av_shift(av));
>
> I hope someone else can test it and post a real patch. I haven't tested
> it under 5.6.1 yet, but from what I've seen it should work.
>
> Nix.
>








More information about the Info-cyrus mailing list