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