Hello,
On my test server, I just dowloaded exim 4.02. On this server, I also have
perl 5.6.1. Until now, all my exims (3.x) had been compiled with perl 5.6.0,
without ever a single problem. Thus my question: has exim 4.02 been compiled
with perl 5.6.1 support (probably yes), in which case I'm down for a
debugging round.
Solaris 8 on a sunblade 100.
This is where the compilation stops:
gcc -D_REENTRANT -fno-strict-aliasing -I/usr/pack/perl-5.6.1-bs/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/pack/perl-5.6.1-bs/lib/5.6.1/sun4-solaris-thread/CORE -c perl.c
In file included from exim.h:325,
from perl.c:15:
structs.h:496: `MAX_NAMED_LIST' undeclared here (not in a function)
structs.h:496: size of array `domain_cache' has non-integer type
structs.h:497: `MAX_NAMED_LIST' undeclared here (not in a function)
structs.h:497: size of array `localpart_cache' has non-integer type
structs.h:610: `DNS_MAXNAME' undeclared here (not in a function)
In file included from exim.h:326,
from perl.c:15:
globals.h:416: `MAX_NAMED_LIST' undeclared here (not in a function)
globals.h:416: size of array `sender_address_cache' has non-integer type
globals.h:422: `MAX_NAMED_LIST' undeclared here (not in a function)
globals.h:422: size of array `sender_host_cache' has non-integer type
In file included from perl.c:27:
/usr/pack/perl-5.6.1-bs/lib/5.6.1/sun4-solaris-thread/CORE/perl.h:23:1: warning: "VOIDUSED" redefined
/usr/pack/perl-5.6.1-bs/lib/5.6.1/sun4-solaris-thread/CORE/config.h:3118:1: warning: this is the location of the previous definition
perl.c: In function `xs_init':
perl.c:59: warning: passing arg 3 of `Perl_newXS' from incompatible pointer type
perl.c: In function `init_perl':
perl.c:75: warning: passing arg 2 of `perl_parse' from incompatible pointer type
perl.c:81: `thr' undeclared (first use in this function)
perl.c:81: (Each undeclared identifier is reported only once
perl.c:81: for each function it appears in.)
perl.c: In function `call_perl_cat':
perl.c:120: `thr' undeclared (first use in this function)
this is after a cpp round:
init_perl(uschar *startup_code)
{
register SV **sp = (((struct perl_thread *)pthread_getspecific(PL_thr_key))->Tstack_sp);
static int argc = 2;
static char *argv[3] = { "exim-perl", "/dev/null", 0 };
SV *sv;
STRLEN len;
if (interp_perl) return 0;
interp_perl = perl_alloc();
perl_construct(interp_perl);
perl_parse(interp_perl, xs_init, argc, argv, 0);
perl_run(interp_perl);
sv = Perl_newSVpv(((struct perl_thread *)pthread_getspecific(PL_thr_key)), (char *) startup_code,0
);
if (++(((struct perl_thread *)pthread_getspecific(PL_thr_key))->Tmarkstack_ptr) == (((struct perl_
thread *)pthread_getspecific(PL_thr_key))->Tmarkstack_max)) Perl_markstack_grow(((struct perl_thread
*)pthread_getspecific(PL_thr_key))); *(((struct perl_thread *)pthread_getspecific(PL_thr_key))->Tma
rkstack_ptr) = (sp) - (((struct perl_thread *)pthread_getspecific(PL_thr_key))->Tstack_base);
Perl_eval_sv(((struct perl_thread *)pthread_getspecific(PL_thr_key)), sv,0|2|16);
Perl_sv_free(((struct perl_thread *)pthread_getspecific(PL_thr_key)), (SV*)sv);
if (Perl_sv_true(((struct perl_thread *)pthread_getspecific(PL_thr_key)), (thr->errsv))) return (u
nsigned char *) ((((thr->errsv))->sv_flags & (0x00040000)) == 0x00040000 ? ((len = ((XPV*) ((thr->er
rsv))->sv_any)->xpv_cur), ((XPV*) ((thr->errsv))->sv_any)->xpv_pv) : Perl_sv_2pv(((struct perl_threa
d *)pthread_getspecific(PL_thr_key)), (thr->errsv),&len));
return ((void *)0);
}
Thanks for any help!
Bernard Stern, SWITCH
____________S_W_I_T_CH___Swiss Academic_______________________________________
mail: SWITCH Head Office a Tel: +41 1 268 1520
Limmatquai 138 n Fax: +41 1 268 1568
CH-8001 Zurich d e-mail: stern@???
________________________________________Reseach Network_______________________