Ok, this is pretty long, but I was trying to make sure I included everything relevant to the problem.
Is there a simple answer to getting 'make test' for mod_perl to work when all extra perl modules are in a custom location? Simply having PERL5LIB=/appl/perl/lib exported when running the builds doesn't seem to suffice. It works fine for everything else perlish, just not the mod_perl 'make test'. I'm building apache 1.3.23 and mod_perl 1.26 (with latest mod_ssl - but that doesn't seem to be part of the problem). I have all the modules not included with perl installed in /appl/perl/lib. This is a Solaris 8 64-bit system. perl was built with 'sh Configure -des - Duseshrplib' (useshrplib was for postgres, I'm building modperl statically). I used gcc 3.0.3 for everything (installed latest binutils first then gcc - both from sunfreeware). mod_perl: <<file:makepl_args.mod_perl>> APACHE_SRC=/data/build/WEB/apache SSL_BASE=/usr/local/ssl EVERYTHING=1 DO_HTTPD=1 PREP_HTTPD=1 USE_APACI=1 PERL_SSI=1 #perl Makefile.PL PERL5LIB=/appl/perl/lib && make apache: #SSL_BASE=/usr/local/ssl \ ./configure \ --with-layout=Apache \ --server-uid=web \ --server-gid=web \ --disable-rule=EXPAT \ --disable-module=asis \ --disable-module=imap \ --disable-module=negotiation \ --disable-module=userdir \ --enable-module=proxy \ --enable-module=rewrite \ --enable-module=define \ --activate-module=src/modules/perl/libperl.a \ --enable-module=perl \ --enable-module=ssl #make mod_perl: #PERL_HTTP_URI_CLASS=URI::URL make test Now that you have all the background, some deatils on the problem: My symptoms are that the httpd process (and the module/cgi and module/include subtests once the httpd issue was fixed) complains that the CGI modules can't be found. At the end I've included a capture of the make test output, both unmodified, and modified (that's coming) - I ignored the Net::HTTP errors since they just looked like warnings, rather than errors - please let me know if that's really a problem. I added a few BEGIN{print $ENV{PERL5LIB},"\n"} lines here and there in various places and found that my PERL5LIB wasn't getting picked up by either the httpd/mod_perl process, or the scripts run via cgi. I finally got it to work by modifying Makefile.PL and httpd.conf-dist, as well as creating a t/docs/local.pl. In Makefile.PL I noticed that at line 1273 it reads: PERL5LIB => "PERL5LIB=$ENV{PERL5LIB}", Shouldn't this be like this instead? PERL5LIB => "$ENV{PERL5LIB}", Maybe I don't understand the purpose, but it seems wrong, especially given the errors below where ../PERL5LIB=/data/web/xxx is actually shown in @INC for t/TEST. I can't see an immediate reason to have ../VAR=/path in the @INC. Anyway... I made that change and in that same file I modified line 99 so instead of $ENV{PERL5LIB} = "$PWD/lib"; it reads $ENV{PERL5LIB} = "$PWD/lib" . ($ENV {PERL5LIB} ? ":$ENV{PERL5LIB}" : ""); This way it preserves any local PERL5LIB settings while adding the mod_perl build location. I'm not sure if the $PWD/lib is even needed since it didn't seem to be right in the first place. Maybe the $PWD/lib part could just be dropped altogether. In httpd.conf-dist (or httpd.conf if I wasn't rerunning the whole build again but just the 'make run-tests') I had to add PassEnv PERL5LIB or the tests run through normal cgi instead of mod_perl don't work. I placed it in the #mod_perl section, right before 'PerlPassEnv PERl5LIB'. Finally, I created a local.pl, since that's looked for by the startup.pl in t/docs: use lib '/appl/perl/lib'; 1; So, I got all the tests to work, but I was wondering if there was a build option I was missing, or something that wasn't documented yet? I did spend 2 days researching this before posting, so I really hope I didn't miss something in the docs, the FAQ or the mod_perl guide. In making the changes, I tried to change things in as few places as possible. If there's a better way to do this, please, show me how! Also, since mod_perl and LWP still don't seem to play well together in their current versions, I used the PERL_HTTP_URI_CLASS=URI::URL "hack" to things to work. (I found that in the mod_perl list archives...) Thanks for anything you can help with on this. Jim <<<< PERL_HTTP_URI_CLASS=URI::URL make test >>>> <<<< cut out make dir recursion/iterations >>>> <<<< unmodified mod_perl-1.26 >>>> cp t/conf/mod_perl_srm.conf t/conf/srm.conf ../apache/src/httpd -f `pwd`/t/conf/httpd.conf -X -d `pwd`/t & httpd listening on port 8529 will write error_log to: t/logs/error_log letting apache warm up...[Wed Mar 27 16:19:06 2002] [error] Can't locate CGI.pm in @INC (@INC contains: /v01/data/build/WEB/mod_perl- 1.26/blib/lib /v01/data/build/WEB/mod_perl- 1.26/blib/arch /v01/data/build/WEB/mod_perl-1.26/t/docs blib/arch blib/lib /usr/local/lib/perl5/5.6.1/sun4-solaris /usr/local/lib/perl5/5.6.1 /usr/local/lib/perl5/site_per l/5.6.1/sun4- solaris /usr/local/lib/perl5/site_perl/5.6.1 /usr/local/lib/perl5/site_perl /v01/data/build/WEB/mod_p erl-1.26/t/ /v01/data/build/WEB/mod_perl- 1.26/t/lib/perl) at /v01/data/build/WEB/mod_perl- 1.26/t/net/perl/qredirect.pl line 2. BEGIN failed--compilation aborted at /v01/data/build/WEB/mod_perl- 1.26/t/net/perl/qredirect.pl line 2. Compilation failed in require at /v01/data/build/WEB/mod_perl-1.26/t//docs/startup.pl line 101. Compilation failed in require at (eval 1) line 1. Syntax error on line 62 of /v01/data/build/WEB/mod_perl- 1.26/t/conf/httpd.conf: Can't locate CGI.pm in @INC (@INC contains: /v01/data/build/WEB/mod_perl-1.26/blib/lib /v01/data/build/WEB/mod_perl- 1.26/blib/arch /v01/data/build/WEB/mod_perl-1.26/t/docs blib/arch blib/lib /usr/local/lib/perl5/5.6.1/sun4- solaris /usr/local/lib/perl5/5.6.1 /usr/local/lib/perl5/site_perl/5.6.1/sun4- solaris /usr/local/lib/perl5/site_perl/5.6.1 /usr/local/lib/perl5/site_perl /v01/data/build/WEB/mod_p erl-1.26/t/ /v01/data/build/WEB/mod_perl- 1.26/t/lib/perl) at /v01/data/build/WEB/mod_perl- 1.26/t/net/perl/qredirect.pl line 2. BEGIN failed--compilation aborted at /v01/data/build/WEB/mod_perl- 1.26/t/net/perl/qredirect.pl line 2. Compilation failed in require at /v01/data/build/WEB/mod_perl-1.26/t//docs/startup.pl line 101. Compilation failed in require at (eval 1) line 1. done /bin/perl t/TEST 0 Can't locate LWP/UserAgent.pm in @INC (@INC contains: ../blib/lib ../blib/arch ../PERL5LIB=/v01/data/build/WEB/mod_perl- 1.26/lib /usr/local/lib/perl5/5.6.1/sun4-solaris /usr/local/lib/perl5/5.6.1 /usr/local/lib/perl5/site_per l/5.6.1/sun4- solaris /usr/local/lib/perl5/site_perl/5.6.1 /usr/local/lib/perl5/site_perl ../.) at t/TEST line 48. I still can't find LWP::UserAgent, try: /bin/perl -MCPAN -e install LWP or http://www.perl.com/cgi-bin/cpan_mod?module=LWP Must skip important tests without LWP... kill `cat t/logs/httpd.pid` cat: cannot open t/logs/httpd.pid /bin/sh: usage: kill [ [ -sig ] id ... | -l ] make: *** [kill_httpd] Error 1 <<<< modified as per above - make test output>>> cp t/conf/mod_perl_srm.conf t/conf/srm.conf ../apache/src/httpd -f `pwd`/t/conf/httpd.conf -X -d `pwd`/t & httpd listening on port 8529 will write error_log to: t/logs/error_log letting apache warm up...done /bin/perl t/TEST 0 still waiting for server to warm up......ok ok ok modules/actions.....ok modules/cgi.........ok modules/constants...ok modules/cookie......skipped test on this platform modules/file........ok modules/httpdconf...ok modules/include.....ok modules/log.........ok modules/module......skipped test on this platform modules/perlrun.....ok modules/psections...skipped test on this platform modules/request.....skipped test on this platform modules/src.........ok modules/ssi.........ok modules/stage.......skipped test on this platform modules/status......ok modules/symbol......skipped test on this platform modules/uri.........ok modules/util........ok internal/api........ok internal/auth.......ok internal/croak......ok internal/dirmagic...ok internal/error......ok internal/headers....ok internal/hooks......ok internal/http-get...Use of uninitialized value in substitution (s///) at /appl/perl/lib/Net/HTTP/Methods.pm line 425. Use of uninitialized value in substitution (s///) at /appl/perl/lib/Net/HTTP/Methods.pm line 426. Use of uninitialized value in hex at /appl/perl/lib/Net/HTTP/Methods.pm line 427. internal/http-get...ok 7/16Use of uninitialized value in substitution (s///) at /appl/perl/lib/Net/HTTP/Methods.pm line 425. Use of uninitialized value in substitution (s///) at /appl/perl/lib/Net/HTTP/Methods.pm line 426. Use of uninitialized value in hex at /appl/perl/lib/Net/HTTP/Methods.pm line 427. Use of uninitialized value in substitution (s///) at /appl/perl/lib/Net/HTTP/Methods.pm line 425. Use of uninitialized value in substitution (s///) at /appl/perl/lib/Net/HTTP/Methods.pm line 426. Use of uninitialized value in hex at /appl/perl/lib/Net/HTTP/Methods.pm line 427. Use of uninitialized value in substitution (s///) at /appl/perl/lib/Net/HTTP/Methods.pm line 425. Use of uninitialized value in substitution (s///) at /appl/perl/lib/Net/HTTP/Methods.pm line 426. Use of uninitialized value in hex at /appl/perl/lib/Net/HTTP/Methods.pm line 427. Use of uninitialized value in substitution (s///) at /appl/perl/lib/Net/HTTP/Methods.pm line 425. Use of uninitialized value in substitution (s///) at /appl/perl/lib/Net/HTTP/Methods.pm line 426. Use of uninitialized value in hex at /appl/perl/lib/Net/HTTP/Methods.pm line 427. Use of uninitialized value in substitution (s///) at /appl/perl/lib/Net/HTTP/Methods.pm line 425. Use of uninitialized value in substitution (s///) at /appl/perl/lib/Net/HTTP/Methods.pm line 426. Use of uninitialized value in hex at /appl/perl/lib/Net/HTTP/Methods.pm line 427. internal/http- get...ok internal/http- post..ok internal/proxy......ok internal/redirect...ok internal/rwrite.....ok internal/stacked....ok internal/table......ok internal/taint......ok All tests successful, 6 tests skipped. Files=34, Tests=390, 32 wallclock secs (25.09 cusr + 3.92 csys = 29.01 CPU) kill `cat t/logs/httpd.pid` rm -f t/logs/httpd.pid rm -f t/logs/error_log