Discussion:
Building with Perlbrew environment.
Bill Moseley
2012-07-28 15:55:40 UTC
Permalink
Apache/2.2.17 Fedora 14, with mod_perl-2.0.7.


I'm tying to build libapreq2-2.13 in a non-root Perlbrew environment.

I'm able to build and install mod_perl2 without any problem. Although I
have to set MP_AP_DESTDIR to someplace I can write to since I don't want to
install system-wide with sudo. The important thing to realize here is
that mod_perl.so ends up in a non-standard location. That's a minor
problem because in my httpd.conf I can use Apache modules from their
standard location, but for mod_perl I only need to specify the full path to
the .so file.


It seems I can build libarpreq2 successfully

$ pwd
/home/bill/libapreq2-2.13

$ find -name \*.so
./module/apache2/.libs/mod_apreq2.so
./module/t/c-modules/apreq_cookie_test/.libs/mod_apreq_cookie_test.so
./module/t/c-modules/apreq_upload_test/.libs/mod_apreq_upload_test.so
./module/t/c-modules/apreq_access_test/.libs/mod_apreq_access_test.so
./module/t/c-modules/apreq_big_request_test/.libs/mod_apreq_big_request_test.so
./module/t/c-modules/apreq_redirect_test/.libs/mod_apreq_redirect_test.so
./module/t/c-modules/apreq_request_test/.libs/mod_apreq_request_test.so
./module/t/c-modules/apreq_output_filter_test/.libs/mod_apreq_output_filter_test.so
./library/.libs/libapreq2.so
./glue/perl/blib/arch/auto/APR/Request/Apache2/Apache2.so
./glue/perl/blib/arch/auto/APR/Request/Request.so
./glue/perl/blib/arch/auto/APR/Request/Cookie/Cookie.so
./glue/perl/blib/arch/auto/APR/Request/Parser/Parser.so
./glue/perl/blib/arch/auto/APR/Request/Error/Error.so
./glue/perl/blib/arch/auto/APR/Request/Param/Param.so
./glue/perl/blib/arch/auto/APR/Request/CGI/CGI.so
./glue/perl/blib/arch/auto/APR/Request/Hook/Hook.so



But many tests fail because mod_perl isn't getting loaded.


$ fgrep Compilation glue/perl/t/logs/error_log | head -1
[Sat Jul 28 08:32:29 2012] [error] [client 127.0.0.1] failed to resolve
handler `TestAPI::cookie': Can't load
'/home/bill/libapreq2-2.13/glue/perl/blib/arch/auto/APR/Request/Request.so'
for module APR::Request:
/home/bill/libapreq2-2.13/glue/perl/blib/arch/auto/APR/Request/Request.so:
*undefined
symbol: PL_tainting* at /usr/lib64/perl5/DynaLoader.pm line 200.\n at
/home/bill/libapreq2-2.13/glue/perl/blib/lib/APR/Request/Cookie.pm line
27\nCompilation failed in require at
/home/bill/libapreq2-2.13/glue/perl/blib/lib/APR/Request/Cookie.pm line
27.\nBEGIN failed--compilation aborted at
/home/bill/libapreq2-2.13/glue/perl/blib/lib/APR/Request/Cookie.pm line
27.\nCompilation failed in require at
/home/bill/libapreq2-2.13/glue/perl/t/response/TestAPI/cookie.pm line
9.\nBEGIN failed--compilation aborted at
/home/bill/libapreq2-2.13/glue/perl/t/response/TestAPI/cookie.pm line
9.\nCompilation failed in require at (eval 3) line 2.\n

Can you think of how to build and run tests in this situation?


BTW -- when running the tests I see warnings about missing include
directories that are configured in my /etc/httpd/conf/httpd.conf file. Why
would this configuration file get used when running tests?


Thanks,
--
Bill Moseley
***@hank.org
Bill Moseley
2012-07-28 16:14:46 UTC
Permalink
Sorry, I had one more related question to ask:

mod_perl has MP_AP_DESTDIR which I can set when running Makefile.PL so that
"make install" can install locally (w/o needing sudo).

Is there an equivalent environment variable I can set for libapreq2?


My goal is simply to be able to install libapreq2 via "cpan" or "cpanm"
from a Perlbrew environment as a non-root user. Or more precisely, have
an module (or app) that depends on Apache2::Request, for example, and
installing that will bring in libapreq2 automatically as a dependency.


Thanks,
--
Bill Moseley
***@hank.org
Loading...