rse 99/12/16 08:10:31
Modified: src CHANGES src/support apxs.pl apxs.8 Log: Consistency cleanup of the complete APXS tool and corresponding manpage after the numerous small recent changes. Revision Changes Path 1.1481 +3 -0 apache-1.3/src/CHANGES Index: CHANGES =================================================================== RCS file: /home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.1480 retrieving revision 1.1481 diff -u -r1.1480 -r1.1481 --- CHANGES 1999/12/15 23:04:07 1.1480 +++ CHANGES 1999/12/16 16:10:25 1.1481 @@ -1,5 +1,8 @@ Changes with Apache 1.3.10 + *) Consistency cleanup of the complete APXS tool and corresponding manpage. + [Ralf S. Engelschall] + *) Add %q logging format directive (logs "?" and the query string part of a query, or the empty string if no query). Can be used in combination with %m, %U and %H: "%m %U%q %H" is the 1.31 +65 -69 apache-1.3/src/support/apxs.pl Index: apxs.pl =================================================================== RCS file: /home/cvs/apache-1.3/src/support/apxs.pl,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- apxs.pl 1999/12/07 00:03:24 1.30 +++ apxs.pl 1999/12/16 16:10:30 1.31 @@ -68,18 +68,18 @@ ## Configuration ## -my $CFG_TARGET = '@TARGET@'; # substituted via Makefile.tmpl -my $CFG_CC = '@CC@'; # substituted via Makefile.tmpl -my $CFG_CFLAGS = '@CFLAGS@'; # substituted via Makefile.tmpl -my $CFG_CFLAGS_SHLIB = '@CFLAGS_SHLIB@'; # substituted via Makefile.tmpl -my $CFG_LD_SHLIB = '@LD_SHLIB@'; # substituted via Makefile.tmpl -my $CFG_LDFLAGS_SHLIB = q(@LDFLAGS_MOD_SHLIB@);# substituted via Makefile.tmpl -my $CFG_LIBS_SHLIB = '@LIBS_SHLIB@'; # substituted via Makefile.tmpl -my $CFG_PREFIX = '@prefix@'; # substituted via APACI install -my $CFG_SBINDIR = '@sbindir@'; # substituted via APACI install -my $CFG_INCLUDEDIR = '@includedir@'; # substituted via APACI install -my $CFG_LIBEXECDIR = '@libexecdir@'; # substituted via APACI install -my $CFG_SYSCONFDIR = '@sysconfdir@'; # substituted via APACI install +my $CFG_TARGET = q(@TARGET@); # substituted via Makefile.tmpl +my $CFG_CC = q(@CC@); # substituted via Makefile.tmpl +my $CFG_CFLAGS = q(@CFLAGS@); # substituted via Makefile.tmpl +my $CFG_CFLAGS_SHLIB = q(@CFLAGS_SHLIB@); # substituted via Makefile.tmpl +my $CFG_LD_SHLIB = q(@LD_SHLIB@); # substituted via Makefile.tmpl +my $CFG_LDFLAGS_SHLIB = q(@LDFLAGS_MOD_SHLIB@); # substituted via Makefile.tmpl +my $CFG_LIBS_SHLIB = q(@LIBS_SHLIB@); # substituted via Makefile.tmpl +my $CFG_PREFIX = q(@prefix@); # substituted via APACI install +my $CFG_SBINDIR = q(@sbindir@); # substituted via APACI install +my $CFG_INCLUDEDIR = q(@includedir@); # substituted via APACI install +my $CFG_LIBEXECDIR = q(@libexecdir@); # substituted via APACI install +my $CFG_SYSCONFDIR = q(@sysconfdir@); # substituted via APACI install ## ## Cleanup the above stuff @@ -127,10 +127,10 @@ last; } $pos = index($argumentative,$first); - if($pos >= $[) { - if($args[$pos+1] eq ':') { + if ($pos >= $[) { + if ($args[$pos+1] eq ':') { shift(@ARGV); - if($rest eq '') { + if ($rest eq '') { unless (@ARGV) { print STDERR "apxs:Error: Incomplete option: $first (needs an argument)\n"; ++$errs; @@ -141,7 +141,7 @@ } elsif ($args[$pos+1] eq '+') { shift(@ARGV); - if($rest eq '') { + if ($rest eq '') { unless (@ARGV) { print STDERR "apxs:Error: Incomplete option: $first (needs an argument)\n"; ++$errs; @@ -152,7 +152,7 @@ } else { eval "\$opt_$first = 1"; - if($rest eq '') { + if ($rest eq '') { shift(@ARGV); } else { @@ -163,7 +163,7 @@ else { print STDERR "apxs:Error: Unknown option: $first\n"; ++$errs; - if($rest ne '') { + if ($rest ne '') { $ARGV[0] = "-$rest"; } else { @@ -197,39 +197,37 @@ my $name = 'unknown'; $name = $opt_n if ($opt_n ne ''); +# overriding of configuration variables if (@opt_S) { my ($opt_S); foreach $opt_S (@opt_S) { - if ($opt_S =~ m/^([^=]+)=(.*)$/) { - my ($var) = $1; - my ($val) = $2; - my $oldval = eval "\$CFG_$var"; - - unless ($var and $oldval) { - print STDERR "apxs:Error: no config variable $var\n"; - &usage; - } - - eval "\$CFG_${var}=\"${val}\""; - } else { - print STDERR "apxs:Error: malformatted -S option\n"; - &usage; - } + if ($opt_S =~ m/^([^=]+)=(.*)$/) { + my ($var, $val) = ($1, $2); + my $oldval = eval "\$CFG_$var"; + unless ($var and $oldval) { + print STDERR "apxs:Error: no config variable $var\n"; + &usage; + } + eval "\$CFG_${var}=\"${val}\""; + } else { + print STDERR "apxs:Error: malformatted -S option\n"; + &usage; + } } } ## -## Initial shared object support check +## Initial DSO support check ## if (not -x "$CFG_SBINDIR/$CFG_TARGET") { - print STDERR "apxs:Error: $CFG_SBINDIR/$CFG_TARGET not found or not executable\n"; - exit(1); + print STDERR "apxs:Error: $CFG_SBINDIR/$CFG_TARGET not found or not executable\n"; + exit(1); } if (not grep(/mod_so/, `$CFG_SBINDIR/$CFG_TARGET -l`)) { - print STDERR "apxs:Error: Sorry, no shared object support for Apache\n"; - print STDERR "apxs:Error: available under your platform. Make sure\n"; - print STDERR "apxs:Error: the Apache module mod_so is compiled into\n"; - print STDERR "apxs:Error: your server binary `$CFG_SBINDIR/$CFG_TARGET'.\n"; + print STDERR "apxs:Error: Sorry, no DSO support for Apache available\n"; + print STDERR "apxs:Error: under your platform. Make sure the Apache\n"; + print STDERR "apxs:Error: module mod_so is compiled into your server\n"; + print STDERR "apxs:Error: binary `$CFG_SBINDIR/$CFG_TARGET'.\n"; exit(1); } @@ -259,7 +257,7 @@ ## if (-d $name) { - print STDERR "apxs:Error: Directory `$name' already exists. Remove first\n"; + print STDERR "apxs:Error: Directory `$name' already exists. Remove it first\n"; exit(1); } @@ -283,7 +281,6 @@ exit(0); } - if ($opt_q) { ## ## QUERY INFORMATION @@ -316,7 +313,7 @@ if ($opt_c) { ## - ## SHARED OBJECT COMPILATION + ## DSO COMPILATION ## # split files into sources and objects @@ -383,11 +380,11 @@ $opt = ''; my ($opt_Wl, $opt_L, $opt_l); foreach $opt_Wl (@opt_W) { - if ($CFG_LD_SHLIB !~ m/gcc$/) { - $opt .= " $1" if ($opt_Wl =~ m|^\s*l,(.*)$|); - } else { - $opt .= " -W$opt_Wl"; - } + if ($CFG_LD_SHLIB !~ m/gcc$/) { + $opt .= " $1" if ($opt_Wl =~ m|^\s*l,(.*)$|); + } else { + $opt .= " -W$opt_Wl"; + } } foreach $opt_L (@opt_L) { $opt .= " -L$opt_L"; @@ -404,13 +401,13 @@ # allow one-step compilation and installation if ($opt_i or $opt_e) { - @args = ( $dso_file ); + @args = ($dso_file); } } if ($opt_i or $opt_e) { ## - ## SHARED OBJECT INSTALLATION + ## DSO INSTALLATION ## # determine installation commands @@ -421,14 +418,14 @@ my $f; foreach $f (@args) { if ($f !~ m|\.so$|) { - print STDERR "apxs:Error: file $f is not a shared object\n"; + print STDERR "apxs:Error: file $f is not a DSO\n"; exit(1); } my $t = $f; $t =~ s|^.+/([^/]+)$|$1|; if ($opt_i) { - push(@cmds, "cp $f $CFG_LIBEXECDIR/$t"); - push(@cmds, "chmod 755 $CFG_LIBEXECDIR/$t"); + push(@cmds, "cp $f $CFG_LIBEXECDIR/$t"); + push(@cmds, "chmod 755 $CFG_LIBEXECDIR/$t"); } # determine module symbolname and filename @@ -455,8 +452,8 @@ } } if ($name eq '') { - print "apxs:Error: Sorry, cannot determine bootstrap symbol name\n"; - print "apxs:Error: Please specify one with option `-n'\n"; + print STDERR "apxs:Error: Sorry, cannot determine bootstrap symbol name.\n"; + print STDERR "apxs:Error: Please specify one with option `-n'.\n"; exit(1); } } @@ -476,7 +473,7 @@ # activate module via LoadModule/AddModule directive if ($opt_a or $opt_A) { if (not -f "$CFG_SYSCONFDIR/$CFG_TARGET.conf") { - print "apxs:Error: Config file $CFG_SYSCONFDIR/$CFG_TARGET.conf not found\n"; + print STDERR "apxs:Error: Config file $CFG_SYSCONFDIR/$CFG_TARGET.conf not found\n"; exit(1); } @@ -510,7 +507,7 @@ } else { $content =~ s|^(.*\n)#?\s*$amd[^\n]*\n|$1$c$amd\n|sg; } - } + } if (@lmd or @amd) { if (open(FP, ">$CFG_SYSCONFDIR/$CFG_TARGET.conf.new")) { print FP $content; @@ -519,9 +516,9 @@ "cp $CFG_SYSCONFDIR/$CFG_TARGET.conf.new $CFG_SYSCONFDIR/$CFG_TARGET.conf && " . "rm $CFG_SYSCONFDIR/$CFG_TARGET.conf.new"); } else { - print STDERR "unable to open configuration file\n"; + print STDERR "apxs:Error: unable to open configuration file\n"; } - } + } } } @@ -536,7 +533,7 @@ APXS=apxs APACHECTL=apachectl -# additional defines, includes and libraries +# additional user defines, includes and libraries #DEF=-Dmy_define=my_value #INC=-Imy/include/dir #LIB=-Lmy/lib/dir -lmylib @@ -544,11 +541,12 @@ # the default target all: mod_%NAME%.so -# compile the shared object file +# compile the DSO file mod_%NAME%.so: mod_%NAME%.c $(APXS) -c $(DEF) $(INC) $(LIB) mod_%NAME%.c -# install the shared object file into Apache +# install the DSO file into the Apache installation +# and activate it in the Apache configuration install: all $(APXS) -i -a -n '%NAME%' mod_%NAME%.so @@ -560,12 +558,10 @@ test: reload lynx -mime_header http://localhost/%NAME% -# install and activate shared object by reloading Apache to -# force a reload of the shared object file +# reload the module by installing and restarting Apache reload: install restart -# the general Apache start/restart/stop -# procedures +# the general Apache start/restart/stop procedures start: $(APACHECTL) start restart: @@ -578,14 +574,14 @@ ** mod_%NAME%.c -- Apache sample %NAME% module ** [Autogenerated via ``apxs -n %NAME% -g''] ** -** To play with this sample module first compile it into a +** To play with this sample module, first compile it into a ** DSO file and install it into Apache's libexec directory ** by running: ** ** $ apxs -c -i mod_%NAME%.c ** -** Then activate it in Apache's %TARGET%.conf file for instance -** for the URL /%NAME% in as follows: +** Then activate it in Apache's %TARGET%.conf file, for instance +** for the URL /%NAME%, as follows: ** ** # %TARGET%.conf ** LoadModule %NAME%_module libexec/mod_%NAME%.so 1.10 +53 -48 apache-1.3/src/support/apxs.8 Index: apxs.8 =================================================================== RCS file: /home/cvs/apache-1.3/src/support/apxs.8,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- apxs.8 1999/07/09 21:44:31 1.9 +++ apxs.8 1999/12/16 16:10:31 1.10 @@ -57,21 +57,21 @@ .B apxs .B \-g [ -.BI \-S " name=value +.BI \-S " variable=value ] -.BI \-n " modname" +.BI \-n " name" .B apxs .B \-q [ -.BI \-S " name=value +.BI \-S " variable=value ] .IR query " ..." .B apxs .B \-c [ -.BI \-S " name=value +.BI \-S " variable=value ] [ .BI \-o " dsofile" @@ -80,7 +80,7 @@ .BI \-I " incdir" ] [ -.BI \-D " name=value" +.BI \-D " variable[=value]" ] [ .BI \-L " libdir" @@ -99,10 +99,10 @@ .B apxs .B \-i [ -.BI \-S " name=value +.BI \-S " variable=value ] [ -.BI \-n " modname" +.BI \-n " name" ] [ .B \-a @@ -115,10 +115,10 @@ .B apxs .B \-e [ -.BI \-S " name=value +.BI \-S " variable=value ] [ -.BI \-n " modname" +.BI \-n " name" ] [ .B \-a @@ -132,7 +132,7 @@ .B apxs is a tool for building and installing extension modules for the Apache HyperText Transfer Protocol (HTTP) server. This is achieved by building a -dynamic shared object (DSO) from one or more source or object +Dynamic Shared Object (DSO) from one or more source or object .I files which then can be loaded into the Apache server under runtime via the @@ -140,7 +140,7 @@ directive from .BR mod_so. -So to use this extension mechanism your platform has +So to use this extension mechanism, your platform has to support the DSO feature and your Apache .B httpd @@ -159,7 +159,7 @@ The module .B mod_so should be part of the displayed list. -If these requirements are fulfilled you can easily extend +If these requirements are fulfilled, you can easily extend your Apache server's functionality by installing your own modules with the DSO mechanism by the help of this .B apxs @@ -184,31 +184,28 @@ can be any C source file (.c), a object file (.o) or even a library archive (.a). The .B apxs -tool automatically recognizes these extensions and automtaically used the C -source files for compilation while just using the object and archive files for -the linking phase. But when using such pre-compiled objects make sure they are -compiled for position independend code (PIC) to be able to use them for a -dynamically loaded shared object. -For instance with GCC you always just have to use +tool automatically recognizes these extensions and automatically uses the C +source files for compilation while it just uses the object and archive files for +the linking phase. But when using such pre-compiled objects, make sure they are +compiled for Position Independend Code (PIC) to be able to use them for a +DSO. For instance with GCC you always just have to use .BR -fpic . For other -C compilers consult its manual -page or at watch for the flags +C compilers please consult its manual +page or watch for the flags .B apxs uses to compile the object files. -For more details about DSO support in Apache read the documentation +For more details about DSO support in Apache, first read the background +information about DSO in htdocs/manual/dso.html, then read the documentation of -.B mod_so -or perhaps even read the -.B src/modules/standard/mod_so.c -source file. +.BR mod_so . .PP .SH OPTIONS Common options: .TP 12 -.BI \-n " modname" +.BI \-n " name" This explicitly sets the module name for the .B \-i (install) @@ -231,14 +228,14 @@ .BR apxs 's knowledge about certain settings. The .I query -parameters can be one or more of the following strings: +parameters can be one or more of the following variable names: .nf CC TARGET CFLAGS SBINDIR CFLAGS_SHLIB INCLUDEDIR LD_SHLIB LIBEXECDIR LDFLAGS_SHLIB SYSCONFDIR - LIBS_SHLIB + LIBS_SHLIB PREFIX .fi Use this for manually determining settings. For instance use .nf @@ -249,8 +246,10 @@ .PP Configuration options: .TP 12 -.BI \-S " name=value" -This option changes the apxs settings described above. +.BI \-S " variable=value" +This option changes the +.B apxs +settings described above. .PP Template Generation options: .TP 12 @@ -262,10 +261,12 @@ and there two files: A sample module source file named .BI mod_ name.c which can be used as a template for creating your own modules or -as a quick start for playing with the APXS mechanism. +as a quick start for playing with the +.B apxs +mechanism. And a corresponding .B Makefile -for even easier build and installing of this module. +for even easier building and installing of this module. .PP DSO compilation options: .TP 12 @@ -273,7 +274,7 @@ This indicates the compilation operation. It first compiles the C source files (.c) of .I files -into corresponding object files (.o) and then builds a dynamically shared object in +into corresponding object files (.o) and then builds a DSO in .I dsofile by linking these object files plus the remaining object files (.o and .a) of @@ -287,14 +288,14 @@ .BI mod_ name.so .TP 12 .BI \-o " dsofile" -Explicitly specifies the filename of the created dynamically shared object. If +Explicitly specifies the filename of the created DSO file. If not specified and the name cannot be guessed from the .I files list, the fallback name .B mod_unknown.so is used. .TP 12 -.BI \-D " name=value" +.BI \-D " variable[=value]" This option is directly passed through to the compilation command(s). Use this to add your own defines to the build process. .TP 12 @@ -326,7 +327,7 @@ .TP 12 .B \-i This indicates the installation operation and installs one or more -dynamically shared objects into the +DSOs into the server's .I libexec directory. @@ -360,7 +361,7 @@ .SH EXAMPLES Assume you have an Apache module named mod_foo.c available which should extend Apache's server functionality. To accomplish this you first have to compile -the C source into a shared object suitable for loading into the Apache server +the C source into a DSO suitable for loading into the Apache server under runtime via the following command: .nf @@ -372,10 +373,10 @@ Then you have to update the Apache configuration by making sure a .B LoadModule -directive is present to load this shared object. To simplify this +directive is present to load this DSO. To simplify this step .B apxs -provides an automatic way to install the shared object in its +provides an automatic way to install the DSO in the "libexec" directory and updating the .B httpd.conf file accordingly. This can be achieved by running: @@ -395,7 +396,7 @@ .fi is added to the configuration file if still not present. -If you want to have this this disabled per default use the +If you want to have this operation to be disabled, use the .B \-A option, i.e. @@ -403,8 +404,12 @@ $ apxs -i -A mod_foo.c .fi -For a quick test of the APXS mechanism you can create a sample Apache module -template plus a corresponding Makefile via: +For a quick test of the +.B apxs +mechanism you can create a sample Apache module +template plus a corresponding +.B Makefile +via: .nf $ apxs -g -n foo @@ -414,7 +419,7 @@ $ _ .fi -Then you can immediately compile this sample module into a shared object and +Then you can immediately compile this sample module into a DSO and load it into the Apache server: .nf @@ -436,7 +441,9 @@ You can even use .B apxs -to compile complex modules outside the Apache source tree, like PHP3: +to compile complex modules outside the Apache source tree, like PHP3, because +.B apxs +automatically recognized C source files and object files. .nf $ cd php3 @@ -447,10 +454,8 @@ $ _ .fi -because -.B apxs -automatically recognized C source files and object files. Only C source files -are compiled while remaining object files are used for the linking phase. +Only C source files are compiled while remaining object files are used for the +linking phase. .PD .SH SEE ALSO