* 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