* Jeff Trawick ([EMAIL PROTECTED]) wrote :
> Pier Fumagalli <[EMAIL PROTECTED]> writes:
> 
> > This is (again) Thom's patch to make APXS work when we don't use standard
> > layouts, and we move things around after building...
> 
> a few comments/questions:
> 
> 1) application/octet-stream attachments are a pain
> 
> 2) why no spaces around '.' and '='?
> 
> 3) I think this line
> 
>    print STDERR "       apxs -d -c [-S <var>=<val>] [-o <dsofile>] [-D 
><name>[=<value>]]\n";
> 
>    was supposed to be
> 
>    print STDERR "       apxs -d <server-root> -c [-S <var>=<val>] [-o <dsofile>] [-D 
><name>[=<value>]]\n";
> 
> 4) -d <server-root> is optional everywhere, not required, as far as I
>     can tell; syntax should show [-d <server-root>] 
> 
> 5) I think it is better to have the -d syntax shown *after* the major
>    option (e.g., '-d', '-q', '-c') in the usage message
> 

Hopefully this new patch takes care of your concerns.
-- 
Thom May -> [EMAIL PROTECTED]

* liiwi starts planning breakfast
<aj> "And then, squadron A will attempt to extract the cereal from quadrant 34,
     while teams F and Q ensure the lactic fluid remains chilled and readily 
     available..."

Index: apxs.in
===================================================================
RCS file: /home/cvspublic/httpd-2.0/support/apxs.in,v
retrieving revision 1.36
diff -u -u -r1.36 apxs.in
--- apxs.in     13 Mar 2002 20:48:05 -0000      1.36
+++ apxs.in     29 Apr 2002 17:38:43 -0000
@@ -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 STDERR "       apxs -q [-S <var>=<val>] <query> ...\n";
-    print STDERR "       apxs -c [-S <var>=<val>] [-o <dsofile>] [-D 
<name>[=<value>]]\n";
+    print STDERR "Usage: apxs -g [-d <server-root>] [-S <var>=<val>] -n <modname>\n";
+    print STDERR "       apxs -q [-d <server-root>] [-S <var>=<val>] <query> ...\n";
+    print STDERR "       apxs -c [-d <server-root>] [-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 STDERR "       apxs -i [-S <var>=<val>] [-a] [-A] [-n <modname>] <dsofile> 
...\n";
-    print STDERR "       apxs -e [-S <var>=<val>] [-a] [-A] [-n <modname>] <dsofile> 
...\n";
+    print STDERR "       apxs -i [-d <server-root>] [-S <var>=<val>] [-a] [-A] [-n 
+<modname>] <dsofile> ...\n";
+    print STDERR "       apxs -e [-d <server-root>]  [-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("qn:gd:co: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 root is. Please use -d\n";
+}
+
+get_config_vars("$installbuilddir/config_vars.mk",\%config_vars)||die "Can't open 
+config_vars.mk, $!";
+       
+my $prefix         = $server_root;
+my $CFG_PREFIX     = $prefix;
+my $exec_prefix    = $server_root . get_vars("rel_exec_prefix");
+my $progname       = get_vars("progname");
+my $CFG_TARGET     = $progname;
+my $CFG_SYSCONFDIR = $server_root . get_vars("rel_sysconfdir");
+my $CFG_CFLAGS     = join ' ', map { get_vars($_) }
+  qw(SHLTCFLAGS CFLAGS NOTEST_CPPFLAGS EXTRA_CPPFLAGS EXTRA_CFLAGS);
+my $includedir     = $server_root . get_vars("rel_includedir");
+my $CFG_INCLUDEDIR = eval qq("$includedir");
+my $CFG_CC         = get_vars("CC");
+my $libexecdir     = $server_root . get_vars("rel_libexecdir");
+my $CFG_LIBEXECDIR = eval qq("$libexecdir");
+my $sbindir        = $server_root . get_vars("rel_sbindir");
+my $CFG_SBINDIR    = eval qq("$sbindir");
+my $libdir         = $server_root . get_vars("rel_libdir");
+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);
+
 ##
 ##  Initial shared object support check
 ##
-my $httpd = get_vars("sbindir") . "/" . get_vars("progname");
+my $httpd = $sbindir . "/" . $progname;
 $httpd = eval qq("$httpd");
 $httpd = eval qq("$httpd");
 
@@ -234,6 +276,10 @@
        exit 1;
 }
 
+if ($mode eq 'rel') {
+    $httpd = "LD_LIBRARY_PATH=$libdir $httpd";
+}
+
 unless (grep /mod_so/, `$httpd -l`) {
     error("Sorry, no shared object support for Apache");
     error("available under your platform. Make sure");
@@ -321,6 +367,7 @@
     $data =~ s|%NAME%|$name|sg;
     $data =~ s|%TARGET%|$CFG_TARGET|sg;
     $data =~ s|%PREFIX%|$prefix|sg;
+    $data =~ s|%INSTBUILDDIR%|$installbuilddir|sg;
 
     my ($mkf, $mods, $src) = ($data =~ m|^(.+)-=#=-\n(.+)-=#=-\n(.+)|s);
 
@@ -415,7 +462,7 @@
         $la =~ s|\.c$|.la|;
         my $o = $s;
         $o =~ s|\.c$|.o|;
-        push(@cmds, "$prefix/build/libtool $ltflags --mode=compile $CFG_CC $cflags 
-I$CFG_INCLUDEDIR $opt -c -o $lo $s && touch $slo");
+        push(@cmds, "$installbuilddir/libtool $ltflags --mode=compile $CFG_CC $cflags 
+-I$CFG_INCLUDEDIR $opt -c -o $lo $s && touch $slo");
         unshift(@objs, $lo);
     }
 
@@ -440,7 +487,7 @@
         $opt .= " -l$opt_l";
     }
 
-    push(@cmds, "$prefix/build/libtool $ltflags --mode=link $CFG_CC -o $dso_file 
-rpath $CFG_LIBEXECDIR -module -avoid-version $opt $lo");
+    push(@cmds, "$installbuilddir/libtool $ltflags --mode=link $CFG_CC -o $dso_file 
+-rpath $CFG_LIBEXECDIR -module -avoid-version $opt $lo");
 
     #   execute the commands
     &execute_cmds(@cmds);
@@ -471,8 +518,8 @@
         $t =~ s|^.+/([^/]+)$|$1|;
         $t =~ s|\.la$|\.so|;
         if ($opt_i) {
-           push(@cmds, "$prefix/build/instdso.sh SH_LIBTOOL='" .
-                 "$prefix/build/libtool' $f $CFG_LIBEXECDIR");
+           push(@cmds, "$installbuilddir/instdso.sh SH_LIBTOOL='" .
+                 "$installbuilddir/libtool' $f $CFG_LIBEXECDIR");
            push(@cmds, "chmod 755 $CFG_LIBEXECDIR/$t");
         }
 
@@ -589,7 +636,7 @@
 builddir=$(shell pwd)
 top_srcdir=%PREFIX%
 top_builddir=%PREFIX%
-include %PREFIX%/build/special.mk
+include %INSTBUILDDIR%/special.mk
 
 #   the used tools
 APXS=apxs

Reply via email to