* Aaron Bannert ([EMAIL PROTECTED]) wrote :
On Sat, Apr 06, 2002 at 07:49:43PM +0100, Pier Fumagalli wrote:
Pier Fumagalli [EMAIL PROTECTED] wrote:
This patch will fix a couple of problems I found when building modules using
APXS when Apache 2.0 is installed not following a custom layout (but a
weird one like my DarwinBundle).
Thom actually showed me his patch posted as
Subject: [PATCH] Fix apxs so it is relocatable...
Message-ID: 20020401184143.GA9215@eustasy
It works great for me on my wicked installation layout, and today we fixed
another couple of things left from his patch (a couple of hardcoded build
directories were still in, and it wasn't properly resolving the ServerRoot
when apxs was called from a symlink)...
I've got to go sit in the eye-doctor's office for a bit, I'll review
these while I'm there. :)
Hopefully this is everything fixed - we now set the LD_LIBRARY_PATH when
running httpd in relocated installs.
Cheers,
-Thom
Index: support/apxs.in
===
RCS file: /home/cvspublic/httpd-2.0/support/apxs.in,v
retrieving revision 1.36
diff -u -u -r1.36 apxs.in
--- support/apxs.in 13 Mar 2002 20:48:05 - 1.36
+++ support/apxs.in 9 Apr 2002 22:57:31 -
@@ -58,36 +58,6 @@
package apxs;
##
-## Configuration
-##
-
-my $prefix = @prefix@;
-my $CFG_PREFIX = $prefix;
-
-# read the configuration variables once
-my %config_vars = ();
-get_config_vars($prefix/build/config_vars.mk,\%config_vars);
-
-my $exec_prefix= get_vars(exec_prefix);
-my $CFG_TARGET = get_vars(progname);
-my $CFG_SYSCONFDIR = get_vars(sysconfdir);
-my $CFG_CFLAGS = join ' ', map { get_vars($_) }
- qw(SHLTCFLAGS CFLAGS NOTEST_CPPFLAGS EXTRA_CPPFLAGS EXTRA_CFLAGS);
-my $includedir = get_vars(includedir);
-my $CFG_INCLUDEDIR = eval qq($includedir);
-my $CFG_CC = get_vars(CC);
-my $libexecdir = get_vars(libexecdir);
-my $CFG_LIBEXECDIR = eval qq($libexecdir);
-my $sbindir= get_vars(sbindir);
-my $CFG_SBINDIR= eval qq($sbindir);
-my $ltflags= $ENV{'LTFLAGS'};
-$ltflags or $ltflags = --silent;
-
-my %internal_vars = map {$_ = 1}
-qw(TARGET CC CFLAGS CFLAGS_SHLIB LD_SHLIB LDFLAGS_SHLIB LIBS_SHLIB
- PREFIX SBINDIR INCLUDEDIR LIBEXECDIR SYSCONFDIR);
-
-##
## parse argument line
##
@@ -108,6 +78,7 @@
my $opt_A = 0;
my $opt_q = 0;
my $opt_h = 0;
+my $opt_d = '';
# this subroutine is derived from Perl's getopts.pl with the enhancement of
# the + metacharacter at the format string to allow a list to be built by
@@ -174,19 +145,19 @@
}
sub usage {
-print STDERR Usage: apxs -g [-S var=val] -n modname\n;
-print STDERRapxs -q [-S var=val] query ...\n;
-print STDERRapxs -c [-S var=val] [-o dsofile] [-D
name[=value]]\n;
+print STDERR Usage: apxs -d server-root -g [-S var=val] -n modname\n;
+print STDERRapxs -d server-root -q [-S var=val] query ...\n;
+print STDERRapxs -d -c [-S var=val] [-o dsofile] [-D
+name[=value]]\n;
print STDERR[-I incdir] [-L libdir] [-l libname]
[-Wc,flags]\n;
print STDERR[-Wl,flags] files ...\n;
-print STDERRapxs -i [-S var=val] [-a] [-A] [-n modname] dsofile
...\n;
-print STDERRapxs -e [-S var=val] [-a] [-A] [-n modname] dsofile
...\n;
+print STDERRapxs -d server-root -i [-S var=val] [-a] [-A] [-n
+modname] dsofile ...\n;
+print STDERRapxs -d server-root -e [-S var=val] [-a] [-A] [-n
+modname] dsofile ...\n;
exit(1);
}
# option handling
my $rc;
-($rc, @ARGV) = Getopts(qn:gco:I+D+L+l+W+S+eiaA, @ARGV);
+($rc, @ARGV) = Getopts(d:qn:gco:I+D+L+l+W+S+eiaA, @ARGV);
usage if ($rc == 0);
usage if ($#ARGV == -1 and not $opt_g);
usage if (not $opt_q and not ($opt_g and $opt_n) and not $opt_i and not $opt_c and
not $opt_e);
@@ -217,10 +188,81 @@
}
}
+
+##
+## Configuration
+##
+
+# read the configuration variables once
+my %config_vars = ();
+my $mode;
+my $working_dir;
+my $server_root;
+my $installbuilddir;
+
+my $temp_path = $0;
+
+while (-l $temp_path) {
+$temp_path = readlink $temp_path;
+}
+
+if ($temp_path =~ /^(.*)\/apxs/){
+$working_dir=$1;
+}
+
+if ($opt_d ne ''){
+$mode=rel;
+$server_root=$opt_d ./;
+$installbuilddir=$server_root . @rel_installbuilddir@;
+}
+elsif ($working_dir eq '@exp_bindir@') {
+#if ($working_dir eq '@exp_bindir@') {
+#we are in absolute mode
+$installbuilddir = '@exp_installbuilddir@/';
+$mode = exp;
+$server_root='@prefix@'./;
+}
+elsif ($working_dir =~ /(.*)@rel_bindir@/) {
+#we are working in relative mode.
+#we need to calculate what the server root is,
+#and then use that as a base to work from
+$server_root = $1;
+$mode = rel;
+$installbuilddir=$server_root . @rel_installbuilddir@;
+}
+else {
+die Can't calculate what the server