git/list[1] front-page[2] threads[3] people[4] search[5] about
 

gitweb: Version independent mod_perl woes

From
Jakub Narebski <jnareb@gmail.com>
Date
Dec 21, 2006, 17:07 UTC
Message-ID
<200612211807.54668.jnareb@gmail.com>

I try to make gitweb run under mod_perl without need to set up CGI environmental variables, and without need to parse headers. I try to do this in such a way that one will be able to run gitweb under mod_cgi (as an ordinary CGI script), under mod_perl 1.0 Apache::registry and under mod_perl 2.0 ModPerl::Registry without changes.

I'm trying to do the first part (running without need for SetupEnv), but I'm encountering some strange errors and I'm stumped.

I have taken the version independent initialization from
  http://perl.apache.org/docs/2.0/user/porting/porting.html#Making_Code_Conditional_on_Running_mod_perl_Version
-- >8 --
# Set the constant MP_GEN to 0 if mod_perl is not available,
# to 1 if running under mod_perl 1.0
# and 2 for mod_perl 2.0
use constant MP_GEN => $ENV{'MOD_PERL'}
	? { ( exists $ENV{'MOD_PERL_API_VERSION'} and 
	      $ENV{'MOD_PERL_API_VERSION'} >= 2 ) ? 2 : 1 }
	: 0;
# use appropriate mod_perl modules (conditional use)
BEGIN {
	if (MP_GEN == 2) {
		require Apache2::RequestRec;
		require Apache2::ServerRec;
		require Apache2::Response;
		require Apache2::Const;
		import Apache2::RequestRec;
		import Apache2::ServerRec;
		Apache2::Const->import(-compile => qw(:common :http));
	} elsif (MP_GEN == 1) {
		require Apache;
		require Apache::Constants;
		import Apache;
		Apache::Constants->import(qw(:common :http));
	}
}

# mod_perl request my $r; $r = shift @_ if MP_GEN; -- >8 --

Then later I try to use mod_perl rather than $ENV{'SERVER_NAME'}
-- >8 --
# name of your site or organization to appear in page titles
# replace this with something more descriptive for clearer bookmarks
our $site_name = "++GITWEB_SITENAME++"
                 || (($r ? $r->server()->server_hostname() : $ENV{'SERVER_NAME'})
                     || "Untitled") . " Git";
-- >8 --
but I'm encountering the following error:
  Can't locate object method "server_hostname" via package "Apache2::ServerRec"
  at /var/www/perl/gitweb/gitweb.cgi line 83.
What is strange from time to time it _works_.
Can anyone tell me what I'm doing wrong?
-- 
Jakub Narebski
Poland
Next: Jakub Narebski
Message 1 of 3 in “gitweb: Version independent mod_perl woes”
  1. Jakub NarebskiDec 21, 2006
  2. Jakub NarebskiDec 21, 2006
  3. Jakub NarebskiDec 21, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.