All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jakub Narebski <jnareb@gmail.com>
To: git@vger.kernel.org
Subject: gitweb: Version independent mod_perl woes
Date: Thu, 21 Dec 2006 18:07:53 +0100	[thread overview]
Message-ID: <200612211807.54668.jnareb@gmail.com> (raw)

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

             reply	other threads:[~2006-12-21 17:05 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-21 17:07 Jakub Narebski [this message]
2006-12-21 17:51 ` gitweb: Version independent mod_perl woes Jakub Narebski
2006-12-21 18:09 ` Jakub Narebski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200612211807.54668.jnareb@gmail.com \
    --to=jnareb@gmail.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.