Once nice trick for making a config file that will run on several versions of Apache (or even different server architectures) is to make all architecture-specific paths (mainly to DSO modules) relative to ServerRoot, while generic, architecture-agnositic paths are absolute. You then rely on the path compiled into httpd (via the "--prefix" configuration option) to find your DSOs.
The easiest way I've found to do this in Apache::Test is attached. It extracts the "PREFIX" from apxs and uses that as the default inherited ServerRoot value. If a value is hard-coded into the global httpd.conf, it supercedes the apxs value and everything works just like before.
The patch is against 1.05 and I tested it with Apache 1.3.29 and 1.3.28.
-- Mike Cramer http://www.webkist.com/ | AIM: MikeWebkist
diff --recursive -buB Apache-Test-1.05/lib/Apache/TestConfigParse.pm Apache-Test-1.05-mrc/lib/Apache/TestConfigParse.pm --- Apache-Test-1.05/lib/Apache/TestConfigParse.pm 2003-10-07 09:41:13.000000000 -0400 +++ Apache-Test-1.05-mrc/lib/Apache/TestConfigParse.pm 2003-10-31 12:01:21.000000000 -0500 @@ -246,7 +246,7 @@ #initialize array refs and such while (my($spec, $wanted) = each %wanted_config) { for my $directive (keys %$wanted) { - $spec_init{$spec}->($c, $directive); + $spec_init{$spec}->($c, $directive) unless $c->{$directive}; } } diff --recursive -buB Apache-Test-1.05/lib/Apache/TestConfig.pm Apache-Test-1.05-mrc/lib/Apache/TestConfig.pm --- Apache-Test-1.05/lib/Apache/TestConfig.pm 2003-10-22 10:39:14.000000000 -0400 +++ Apache-Test-1.05-mrc/lib/Apache/TestConfig.pm 2003-10-31 12:05:44.000000000 -0500 @@ -292,6 +292,7 @@ $vars->{sbindir} ||= $self->apxs('SBINDIR'); $vars->{target} ||= $self->apxs('TARGET'); $vars->{conf_dir} ||= $self->apxs('SYSCONFDIR'); + $self->{inherit_config}->{ServerRoot} ||= $self->apxs('PREFIX'); if ($vars->{conf_dir}) { $vars->{httpd_conf} ||= catfile $vars->{conf_dir}, 'httpd.conf';