Re: [PATCH] Correct APXS behavior in non-standard layout installations

2002-04-24 Thread Thom May

* Thom May ([EMAIL PROTECTED]) wrote :
 * 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.

This patch would also fix PR 8453.
Cheers,
-Thom



Re: [PATCH] Correct APXS behavior in non-standard layout installations

2002-04-09 Thread Thom May

* 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 

[PATCH] Correct APXS behavior in non-standard layout installations

2002-04-06 Thread Pier Fumagalli

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).

Pie




patch.apxs.txt
Description: Binary data