My company recently took ownership of a project/website that was 
utilizes Apache, mod_perl, and Apache::ePerl on a Linux box. While I'm 
familiar with Apache, mod_perl, and other embedding methods (Embperl to 
name one), I'm new to ePerl.

I don't have access to the original server, and I've been asked to build 
a Linux/Apache/mod_perl/ePerl box from scratch. After a very basic 
RedHat install (to avoid RPM dependancy hell), I successfully built Perl 
5.6.1 and Apache 1.3.26 with mod_perl 1.27 and mod_ssl 2.8.10 all from 
source tarballs. Unfortunately on my last step, I'm having trouble 
building ePerl from the 2.2.14 or 2.2.13 tarballs.

I'm attempting to build the integrated Perl 5 modules (Parse::* and 
Apache::ePerl, etc.). The first step, "perl Makefile.PL" works fine. 
However, I get the following error when doing "make":

[gregg@litlink eperl-2.2.14]$ perl Makefile.PL
Configuring for ePerl 2.2.14 (02-08-1998)
Now please type 'make' to compile. Good luck.
[gregg@litlink eperl-2.2.14]$ make
./configure --with-perl=/usr/local/bin/perl
Configuring for ePerl 2.2.14 (02-08-1998)
creating cache ./config.cache

__ CHECK: Configuration of Perl Language __
checking for Perl language... /usr/local/bin/perl v

Latest Perl found on your system is ,
but at least Perl version 5.003 is required.
In case the newer one is not in PATH, just use
the option --with-perl=/path/to/bin/perl to
provide the correct executable.

configure: error: Perl version too old
make[1]: Entering directory `/home/gregg/eperl-2.2.14'
make[1]: *** No rule to make target `libeperl.a'.  Stop.
make[1]: Leaving directory `/home/gregg/eperl-2.2.14'
make: *** [all] Error 2


I came to the conclusion that Perl 5.6.1 produces a different output 
from its "perl -v" argument than version 5.003 for example. So I went 
into the "configure" file, and I edited line 574 to read 
'perlvers="5.6.1"'. That didn't work, and produced a similar error to 
the one described above, so I edited the line to read 'perlvers="5.003"'.

This time, it began making the files, but it stoped with a compiler error:

cd mod && make
make[1]: Entering directory `/home/gregg/eperl-2.2.14/mod'
make[2]: Entering directory `/home/gregg/eperl-2.2.14/mod/Parse'
cp ePerl.pm ../blib/lib/Parse/ePerl.pm
AutoSplitting ../blib/lib/Parse/ePerl.pm (../blib/lib/auto/Parse/ePerl)
/usr/local/bin/perl -I/usr/local/lib/perl5/5.6.1/i686-linux 
-I/usr/local/lib/perl5/5.6.1 /usr/local/lib/perl5/5.6.1/ExtUtils/xsubpp 
  -typemap /usr/local/lib/perl5/5.6.1/ExtUtils/typemap ePerl.xs > 
ePerl.xsc && mv ePerl.xsc ePerl.c
cc -c -I/home/gregg/eperl-2.2.14 -fno-strict-aliasing 
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 
-DVERSION=\"2.0214\" -DXS_VERSION=\"2.0214\" -fpic 
-I/usr/local/lib/perl5/5.6.1/i686-linux/CORE  ePerl.c
In file included from ePerl.xs:49:
/home/gregg/eperl-2.2.14/eperl_proto.h:84: parse error before 
`__extension__'
/home/gregg/eperl-2.2.14/eperl_proto.h:84: parse error before `n'
/home/gregg/eperl-2.2.14/eperl_proto.h:84: parse error before `if'
/home/gregg/eperl-2.2.14/eperl_proto.h:84: conflicting types for `__retval'
/home/gregg/eperl-2.2.14/eperl_proto.h:84: previous declaration of 
`__retval'
/home/gregg/eperl-2.2.14/eperl_proto.h:84: `__len' undeclared here (not 
in a function)
/home/gregg/eperl-2.2.14/eperl_proto.h:84: warning: initialization makes 
integer from pointer without a cast
/home/gregg/eperl-2.2.14/eperl_proto.h:84: initializer element is not 
constant
/home/gregg/eperl-2.2.14/eperl_proto.h:84: warning: data definition has 
no type or storage class
/home/gregg/eperl-2.2.14/eperl_proto.h:84: parse error before `if'
/home/gregg/eperl-2.2.14/eperl_proto.h:84: redefinition of `__retval'
/home/gregg/eperl-2.2.14/eperl_proto.h:84: `__retval' previously defined 
here
/home/gregg/eperl-2.2.14/eperl_proto.h:84: parse error before `char'
/home/gregg/eperl-2.2.14/eperl_proto.h:84: warning: data definition has 
no type or storage class
/home/gregg/eperl-2.2.14/eperl_proto.h:84: warning: data definition has 
no type or storage class
/home/gregg/eperl-2.2.14/eperl_proto.h:84: parse error before `}'
make[2]: *** [ePerl.o] Error 1
make[2]: Leaving directory `/home/gregg/eperl-2.2.14/mod/Parse'
make[1]: *** [subdirs] Error 2
make[1]: Leaving directory `/home/gregg/eperl-2.2.14/mod'
make: *** [all] Error 2


I'm using gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110). While 
I can hack Perl, I know little of C. I know ePerl-2.2.14 was released in 
1998, so it wasn't written with version 5.6.1 of Perl or gcc 2.96 in 
mind. Is there a way to build ePerl with a modern Linux distro? Am I 
doing something wrong, or must I use an older version of Perl and/or gcc?

Many thanks,
Gregg Casillo

Reply via email to