added first version of native apache 2 module

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@24977 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Dave Wetzel 2007-04-10 17:51:22 +00:00
parent c751ea3e90
commit 47ace186dd
8 changed files with 8515 additions and 0 deletions

View file

@ -0,0 +1,133 @@
# Makefile for Apache GNUstepWeb module
# Copyright (C) 2005-2007 Free Software Foundation, Inc.
#
# Updated by: David Wetzel <dave@turbocat.de>
# Written by: David Ayers <d.ayers@inode.at>
# Based on work by: Manuel Guesdon <mguesdon@sbuilders.com>
#
# This file is part of the GNUstep Web Library.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the Free
# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
APXS:=@APXS@
SERVERAPI:=@SERVERAPI@
APRCONFIG:=@APRCONFIG@
C_CPPFLAGS=@CONFIG_CPPFLAGS@
C_LDFLAGS=@CONFIG_LDFLAGS@
# To avoid ABI (Application Binary Interface) issues
# we build all module components with APXS which should
# invoke the same compiler with the same options with
# which the Apache server was built.
# The following variables should be the basis of any
# Apache specific flags we need to build the module.
# Some are currently unused and should be removed once
# this file stabalizes.
AP_CC := $(shell ($(APXS) -q CC))
AP_CFLAGS := $(shell ($(APXS) -q CFLAGS))
AP_CFLAGS_SH := $(shell ($(APXS) -q CFLAGS_SHLIB))
AP_LDFLAGS_SH := $(shell ($(APXS) -q LDFLAGS_SHLIB))
AP_LIBS_SH := $(shell ($(APXS) -q LIBS_SHLIB))
AP_INCDIR := $(shell ($(APXS) -q INCLUDEDIR))
AP_LIBDIR := $(shell ($(APXS) -q LIBEXECDIR))
AP_SYSDIR := $(shell ($(APXS) -q SYSCONFDIR))
APR_CFLAGS := $(shell ($(APRCONFIG) --cflags))
APR_CPPFLAGS := $(shell ($(APRCONFIG) --cppflags))
APR_INCDIR := $(shell ($(APRCONFIG) --includedir))
APR_LDFLAGS := $(shell ($(APRCONFIG) --ldflags))
APR_LIBS := $(shell ($(APRCONFIG) --libs))
ifneq ($(APR_INCDIR),)
APR_CPPFLAGS += -I$(APR_INCDIR)
endif
# It is not clear, why some versions of of apxs do not
# specify -shared in AP_LDFLAGS_SH as it seems to be the
# key flag to create DSO (Dynamic Shared Objects) which
# is stated goal of apxs compilation. For now we
# simply add it if AP_LDFLAGS_SH is not set.
ifeq ($(AP_LDFLAGS_SH),)
AP_LDFLAGS_SH = -shared
endif
CC:=$(APXS) -c
# Not really sure how this variable is useful.
SRCROOT = ..
ifeq ($(MOD_CONF_DIR),)
MOD_CONF_DIR=$(AP_SYSDIR)
endif
ifeq ($(SERVERAPI),Apache2)
ADAPTOR := mod_gsw.la
else
ADAPTOR := mod_gsw.so
endif
MOD_CONF := mod_gsw.conf
COMMON = $(SRCROOT)/common
GSW_CPPFLAGS = \
-D$(SERVERAPI) -DREENTRANT -DEAPI \
-I. -I$(COMMON) \
-I$(AP_INCDIR) $(APR_CPPFLAGS) \
$(C_CPPFLAGS) $(OTHER_CPPFLAGS)
GSW_CFLAGS = \
$(AP_CFLAGS) $(AP_CFLAGS_SH) \
$(APR_CFLAGS) \
$(OTHER_CFLAGS)
GSW_LDFLAGS = \
$(AP_LDFLAGS_SH) $(AP_LIBS_SH) \
$(APR_LDFLAGS) $(APR_LIBS) \
$(C_LDFLAGS) $(OTHER_LDFLAGS)
# We currently include the CPPFLAGS in the CFLAGS so the
# common makefiles still work.
comma:=,
CFLAGS = $(GSW_CPPFLAGS)
CFLAGS += $(addprefix -Wc$(comma),$(GSW_CFLAGS))
LDFLAGS = $(addprefix -Wl$(comma),$(GSW_LDFLAGS))
# Declare default rule before including common.make
all:: $(ADAPTOR)
# Link the final adaptor module with APXS
$(ADAPTOR): $(SRCROOT)/Apache2/mod_gsw.c
$(APXS) -c -o $@ $(APXS_FLAGS) $(CFLAGS) $(LDFLAGS) \
$(SRCROOT)/Apache2/mod_gsw.c
# Install module (via apxs) and mod_gsw.conf file
install: $(ADAPTOR)
$(APXS) -i -n gsweb $(ADAPTOR)
echo "-------------------------------------" ; \
echo Please update your httpd.conf ; \
echo Valid options are: ; \
echo ShowApps on/off ; \
echo App Name=YOURAPP Instance=1 Host=HOSTIP:PORT ; \
clean:
rm -f $(ADAPTOR) core *~
distclean: clean
rm -rf config.log config.status GNUmakefile autom4te.cache

1410
GSWAdaptors/Apache2/config.guess vendored Executable file

File diff suppressed because it is too large Load diff

1510
GSWAdaptors/Apache2/config.sub vendored Executable file

File diff suppressed because it is too large Load diff

3080
GSWAdaptors/Apache2/configure vendored Executable file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,118 @@
# configure.ac for GNUstepWeb library
# Process this file with autoconf to produce a configure script.
#
# Copyright (C) 2005 Free Software Foundation, Inc.
#
# Author: David Ayers <d.ayers@inode.at>
# Author: David Wetzel <dave@turbocat.de>
#
#
# This file is part of the GNUstepWeb library
#
# This library is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by the
# Free Software Foundation; either version 2, or (at your option) any
# later version.
#
# This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with program; see the file COPYING. If not, write to the Free
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
#
AC_INIT
AC_CONFIG_SRCDIR([mod_gsw.c])
AC_CANONICAL_TARGET([])
BIN_PATH=$PATH:/usr/local/sbin:/usr/apache/sbin:/usr/sbin:/usr/pkg/sbin
case "$target_os" in
freebsd* | openbsd* )
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
LDFLAGS="$LDFLAGS -L/usr/local/lib";;
netbsd*) CPPFLAGS="$CPPFLAGS -I/usr/pkg/include"
LDFLAGS="$LDFLAGS -Wl,-R/usr/pkg/lib -L/usr/pkg/lib";;
esac
AC_ARG_WITH(apxs,
[[ --with-apxs=[FILE|PATH] Path to apxs tool. Default is apxs.]],
APXS_OPT="$withval", APXS_OPT=default)
AC_ARG_WITH(apr-config,
[[ --with-apr-config=[FILE|PATH] Path to apr-config tool. Default is apr-config.]],
APRCONFIG_NAME="$withval", APRCONFIG_NAME=apr-config)
# Set APXS_NAME
# Default to apxs but remeber in APXS_OPT that no option was given.
if test x$APXS_OPT = xdefault ; then
APXS_NAME=apxs
else
APXS_NAME="$APXS_OPT"
fi
# If the user specified an executable, use it. Otherwise search
# for a usable apxs executable.
if test -x "$APXS_NAME"; then
APXS=APXS_NAME
else
AC_PATH_PROG(APXS, "$APXS_NAME", "no", $BIN_PATH)
if test x${APXS_OPT} = xdefault ; then
if test x${APXS} = xno -o x${APXS} = x ; then
AC_PATH_PROG(APXS2, apxs2, "no", $BIN_PATH)
APXS="$APXS2"
fi
fi
fi
if test x${APXS} = xno -o x${APXS} = x ; then
AC_MSG_ERROR([ apxs tool not found. Check path or use --with-apxs and specify a full path to the apxs tool. ])
fi
# This is currently testing for SERVERAPI which
# currently should be Apache for 1.3 and Apache2 for 2
# In the future it would be better to test for
# the actual features which we are using and
# generate a config.h with the correct defines.
AC_ARG_WITH(server-api,
[[ --with-server-api=[Apache|Apache2] Specify SERVERAPI explicitly.]],
server_api="$withval", server_api="no")
if test x${server_api} != xno ; then
SERVERAPI="${server_api}"
else
APXS_TARGET=`$APXS -q TARGET`
AC_PATH_PROG(APACHE, "$APXS_TARGET", "no", $BIN_PATH)
if ( $APACHE -v | grep "Apache@<:@^@<:@:space:@:>@@:>@*/1." > /dev/null 2>&1) ; then
SERVERAPI=Apache
elif ( $APACHE -v | grep "Apache@<:@^@<:@:space:@:>@@:>@*/2." > /dev/null 2>&1) ; then
SERVERAPI=Apache2
else
SERVERAPI=unknown
fi
fi
AC_MSG_CHECKING(server API)
AC_MSG_RESULT($SERVERAPI)
if test x${SERVERAPI} = xunknown ; then
AC_MSG_ERROR([ Could not determine Apache API version. Use --with-server-api and specify either Apache or Apache2. ])
fi
if test x${SERVERAPI} == xApache2 ; then
AC_PATH_PROG(APRCONFIG, "$APRCONFIG_NAME", "no", $BIN_PATH)
fi
CONFIG_CPPFLAGS="$CPPFLAGS"
CONFIG_LDFLAGS="$LDFLAGS"
AC_SUBST(APXS)
AC_SUBST(APRCONFIG)
AC_SUBST(SERVERAPI)
AC_SUBST(CONFIG_CPPFLAGS)
AC_SUBST(CONFIG_LDFLAGS)
AC_CONFIG_FILES([GNUmakefile])
AC_OUTPUT

295
GSWAdaptors/Apache2/install-sh Executable file
View file

@ -0,0 +1,295 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2003-09-24.23
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
chmodprog="${CHMODPROG-chmod}"
chownprog="${CHOWNPROG-chown}"
chgrpprog="${CHGRPPROG-chgrp}"
stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
transformbasename=
transform_arg=
instcmd="$mvprog"
chmodcmd="$chmodprog 0755"
chowncmd=
chgrpcmd=
stripcmd=
rmcmd="$rmprog -f"
mvcmd="$mvprog"
src=
dst=
dir_arg=
usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
or: $0 -d DIR1 DIR2...
In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
In the second, create the directory path DIR.
Options:
-b=TRANSFORMBASENAME
-c copy source (using $cpprog) instead of moving (using $mvprog).
-d create directories instead of installing files.
-g GROUP $chgrp installed files to GROUP.
-m MODE $chmod installed files to MODE.
-o USER $chown installed files to USER.
-s strip installed files (using $stripprog).
-t=TRANSFORM
--help display this help and exit.
--version display version info and exit.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
"
while test -n "$1"; do
case $1 in
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
shift
continue;;
-c) instcmd=$cpprog
shift
continue;;
-d) dir_arg=true
shift
continue;;
-g) chgrpcmd="$chgrpprog $2"
shift
shift
continue;;
--help) echo "$usage"; exit 0;;
-m) chmodcmd="$chmodprog $2"
shift
shift
continue;;
-o) chowncmd="$chownprog $2"
shift
shift
continue;;
-s) stripcmd=$stripprog
shift
continue;;
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
shift
continue;;
--version) echo "$0 $scriptversion"; exit 0;;
*) if test -z "$src"; then
src=$1
else
# this colon is to work around a 386BSD /bin/sh bug
:
dst=$1
fi
shift
continue;;
esac
done
if test -z "$src"; then
echo "$0: no input file specified." >&2
exit 1
fi
# Protect names starting with `-'.
case $src in
-*) src=./$src ;;
esac
if test -n "$dir_arg"; then
dst=$src
src=
if test -d "$dst"; then
instcmd=:
chmodcmd=
else
instcmd=$mkdirprog
fi
else
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst"; then
echo "$0: no destination specified." >&2
exit 1
fi
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst ;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
dst=$dst/`basename "$src"`
fi
fi
# This sed command emulates the dirname command.
dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
# Make sure that the destination directory exists.
# Skip lots of stat calls in the usual case.
if test ! -d "$dstdir"; then
defaultIFS='
'
IFS="${IFS-$defaultIFS}"
oIFS=$IFS
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
IFS=$oIFS
pathcomp=
while test $# -ne 0 ; do
pathcomp=$pathcomp$1
shift
test -d "$pathcomp" || $mkdirprog "$pathcomp"
pathcomp=$pathcomp/
done
fi
if test -n "$dir_arg"; then
$doit $instcmd "$dst" \
&& { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
else
# If we're going to rename the final executable, determine the name now.
if test -z "$transformarg"; then
dstfile=`basename "$dst"`
else
dstfile=`basename "$dst" $transformbasename \
| sed $transformarg`$transformbasename
fi
# don't allow the sed command to completely eliminate the filename.
test -z "$dstfile" && dstfile=`basename "$dst"`
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
trap '(exit $?); exit' 1 2 13 15
# Move or copy the file name to the temp name
$doit $instcmd "$src" "$dsttmp" &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
# Now remove or move aside any old file at destination location. We
# try this two ways since rm can't unlink itself on some systems and
# the destination file might be busy for other reasons. In this case,
# the final cleanup might fail but the new file should still install
# successfully.
{
if test -f "$dstdir/$dstfile"; then
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
|| $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
|| {
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
(exit 1); exit
}
else
:
fi
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
fi &&
# The final little trick to "correctly" pass the exit status to the exit trap.
{
(exit 0); exit
}
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

File diff suppressed because it is too large Load diff

5
GSWAdaptors/README.txt Normal file
View file

@ -0,0 +1,5 @@
This Directory contains Adaptors to different Web servers.
Currently, only the Apache2 adaptor is maintained.
dw.