martin 99/12/09 09:19:49
Modified: src CHANGES Configure Makefile.tmpl . INSTALL Makefile.tmpl configure src/helpers GuessOS TestCompile binbuild.sh src/include ap_config.h src/main http_main.c util_script.c src/support Makefile.tmpl htdigest.c Log: OS specific patches for IBM's OS/390. Submitted by: Ovies Brabson <[EMAIL PROTECTED]> Reviewed by: Martin Kraemer, Paul Gilmartin Revision Changes Path 1.1477 +3 -0 apache-1.3/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.1476 retrieving revision 1.1477 diff -u -r1.1476 -r1.1477 --- CHANGES 1999/12/09 12:04:59 1.1476 +++ CHANGES 1999/12/09 17:19:28 1.1477 @@ -1,5 +1,8 @@ Changes with Apache 1.3.10 + *) OS: Added first cut at support for IBM's OS/390. + [Ovies Brabson <[EMAIL PROTECTED]>] + *) Replace all occurrences of "\012\015" by a macro CRLF. This makes the code (somewhat) more readable, and improves the portability to character sets other than ASCII (e.g., EBCDIC). 1.378 +13 -1 apache-1.3/src/Configure Index: Configure =================================================================== RCS file: /export/home/cvs/apache-1.3/src/Configure,v retrieving revision 1.377 retrieving revision 1.378 diff -u -r1.377 -r1.378 --- Configure 1999/12/07 12:19:48 1.377 +++ Configure 1999/12/09 17:19:30 1.378 @@ -783,6 +783,14 @@ CFLAGS="-D_TANDEM_SOURCE -D_XOPEN_SOURCE_EXTENDED=1" CC='c89' ;; + *-IBM-OS390*) + OS='OS390' + OSDIR='os/os390' + CC='c89' + CFLAGS="$CFLAGS -DOS390 -DCHARSET_EBCDIC -D_ALL_SOURCE" + DEF_WANTHSREGEX=yes + LIBS="$LIBS" + ;; *) # default: Catch systems we don't know about OS='Unknown and unsupported OS' echo Sorry, but we cannot grok \"$PLAT\" @@ -830,6 +838,7 @@ echo >>Makefile.config "INCDIR=\$(SRCDIR)/include" echo >>Makefile.config "INCLUDES0=-I\$(OSDIR) -I\$(INCDIR)" echo >>Makefile.config "SHELL=$SHELL" +echo >>Makefile.config "OS=$OS" #################################################################### ## And adjust/override WANTHSREGEX as needed @@ -2237,7 +2246,10 @@ @for i in \$(MODULES) ""; do \\ if [ "x\$\$i" != "x" ]; then \\ echo "===> \$(SDP)modules/\$\$i"; \\ - (cd \$\$i && \$(MAKE) \$(MFLAGS_STATIC) SDP='\$(SDP)' CC='\$(CC)' AUX_CFLAGS='\$(CFLAGS)' RANLIB='\$(RANLIB)' \$@) || exit 1; \\ + case "x\$(OS)" in \\ + xOS390 | xTPF) (cd \$\$i && \$(MAKE) SDP='\$(SDP)' \$@) || exit 1;; \\ + *) (cd \$\$i && \$(MAKE) \$(MFLAGS_STATIC) SDP='\$(SDP)' CC='\$(CC)' AUX_CFLAGS='\$(CFLAGS)' RANLIB='\$(RANLIB)' \$@) || exit 1;; \\ + esac; \\ echo "<=== \$(SDP)modules/\$\$i"; \\ fi; \\ done 1.115 +4 -1 apache-1.3/src/Makefile.tmpl Index: Makefile.tmpl =================================================================== RCS file: /export/home/cvs/apache-1.3/src/Makefile.tmpl,v retrieving revision 1.114 retrieving revision 1.115 diff -u -r1.114 -r1.115 --- Makefile.tmpl 1999/08/19 08:54:14 1.114 +++ Makefile.tmpl 1999/12/09 17:19:31 1.115 @@ -63,7 +63,10 @@ subdirs: @for i in $(SUBDIRS); do \ echo "===> $(SDP)$$i"; \ - ( cd $$i && $(MAKE) $(MFLAGS_STATIC) SDP='$(SDP)' CC='$(CC)' AUX_CFLAGS='$(CFLAGS)' RANLIB='$(RANLIB)') || exit 1; \ + case ".$(OS)" in \ + .OS390 | .TPF) ( cd $$i && $(MAKE) SDP='$(SDP)' ) || exit 1;; \ + *) ( cd $$i && $(MAKE) $(MFLAGS_STATIC) SDP='$(SDP)' CC='$(CC)' AUX_CFLAGS='$(CFLAGS)' RANLIB='$(RANLIB)') || exit 1;; \ + esac; \ echo "<=== $(SDP)$$i"; \ done 1.61 +10 -0 apache-1.3/INSTALL Index: INSTALL =================================================================== RCS file: /export/home/cvs/apache-1.3/INSTALL,v retrieving revision 1.60 retrieving revision 1.61 diff -u -r1.60 -r1.61 --- INSTALL 1999/08/29 10:17:07 1.60 +++ INSTALL 1999/12/09 17:19:35 1.61 @@ -160,6 +160,8 @@ [--without-support] [--suexec-gidmin=GID] [--without-confadjust] [--suexec-safepath=PATH] [--without-execstrip] + [--server-uid=UID] + [--server-gid=GID] Use the CC, OPTIM, CFLAGS, INCLUDES, LDFLAGS, LIBS, CFLAGS_SHLIB, LD_SHLIB, LDFLAGS_SHLIB, LDFLAGS_SHLIB_EXPORT, RANLIB, DEPS and TARGET @@ -413,6 +415,14 @@ Use the --verbose option to enable additional verbose messages. + Use the --server-uid option to specify the user ID you want the server to run + as. If not specified the server will run as user nobody. If the user ID + specified is different than the ID of the user starting the server, you need to + start the server as root. + + Use the --server-gid option to specify the group ID you want the server user ID to + be a member of. If not specified, the group ID will be #-1. + 4. Building the package -------------------- 1.94 +10 -1 apache-1.3/Makefile.tmpl Index: Makefile.tmpl =================================================================== RCS file: /export/home/cvs/apache-1.3/Makefile.tmpl,v retrieving revision 1.93 retrieving revision 1.94 diff -u -r1.93 -r1.94 --- Makefile.tmpl 1999/12/02 21:00:19 1.93 +++ Makefile.tmpl 1999/12/09 17:19:35 1.94 @@ -69,6 +69,9 @@ # safe environment SHELL = @SHELL@ +# what platform are we on +PLATFORM = @PLATFORM@ + # paths to the source tree parts TOP = . SRC = @SRC@ @@ -176,11 +179,17 @@ # build the standard stuff build-std: - @cd $(TOP)/$(SRC); $(MAKE) $(MFLAGS) SDP=$(SRC)/ all + @case "x$(PLATFORM)" in \ + x*390*) _C89_STEPS="0xffffffff"; export _C89_STEPS;; \ + esac; \ + cd $(TOP)/$(SRC); $(MAKE) $(MFLAGS) SDP=$(SRC)/ all # build the additional support stuff build-support: @echo "===> $(SRC)/support"; \ + case "x$(PLATFORM)" in \ + x*390*) _C89_STEPS="0xffffffff"; export _C89_STEPS;; \ + esac; \ cd $(TOP)/$(SRC)/support; $(MAKE) $(MFLAGS) all || exit 1; \ if [ ".$(suexec)" = .1 ]; then \ $(MAKE) $(MFLAGS) \ 1.113 +51 -2 apache-1.3/configure Index: configure =================================================================== RCS file: /export/home/cvs/apache-1.3/configure,v retrieving revision 1.112 retrieving revision 1.113 diff -u -r1.112 -r1.113 --- configure 1999/12/07 14:14:59 1.112 +++ configure 1999/12/09 17:19:35 1.113 @@ -134,6 +134,7 @@ fi ## +## ## determine path to (optional) Perl interpreter ## PERL=no-perl-on-this-system @@ -197,6 +198,16 @@ esac ## +## Request USTAR format for tar files on OS/390 +## Request that prelink step be used for 390 +## +case $PLATFORM in + *-IBM-OS390*) + TAROPT="${TAROPT}U" + ;; +esac + +## ## determine path to sh, it's not /bin/sh on ALL systems ## SHELL=/bin/sh @@ -347,6 +358,12 @@ esac ## +## Initialize server user ID and group ID variables +## +conf_user="" +conf_group="" + +## ## Iterate over the command line options the first time. ## ## This time we pre-process options which need high priority @@ -417,6 +434,8 @@ echo " --without-support disable the build and installation of support tools" echo " --without-confadjust disable the user/situation adjustments in config" echo " --without-execstrip disable the stripping of executables on installation" + echo " --server-uid=UID set the user ID the web server should run as [nobody]" + echo " --server-gid=GID set the group ID the web server UID is a memeber of [-1]" echo "" echo "suEXEC options:" echo " --enable-suexec enable the suEXEC feature" @@ -954,6 +973,22 @@ suexec_safepath="$apc_optarg" suexec_ok=1 ;; + --server-uid=*) + conf_user="$apc_optarg" + # protect the '#' against interpretation as comment + case x"${conf_user}" in + "#"*) conf_user="\\\\${conf_user}";; + "\\#"*)conf_user="\\${conf_user}";; + esac + ;; + --server-gid=*) + conf_group="$apc_optarg" + # protect the '#' against interpretation as comment + case x"${conf_group}" in + "#"*) conf_group="\\\\${conf_group}";; + "\\#"*)conf_group="\\${conf_group}";; + esac + ;; * ) echo "configure:Error: invalid option '$apc_option'" 1>&2 exit 1 @@ -1098,8 +1133,6 @@ ## on platforms using NIS. But then you propably do not want a ## UID/GID as production oriented as a web server in NIS anyway. ## -conf_user="nobody" -conf_group="\\\\#-1" if [ "x$port" != "x" ]; then conf_port=$port else @@ -1109,12 +1142,15 @@ conf_servername="new.host.name" if [ "x$confadjust" = "x1" ]; then if [ -f /etc/passwd ]; then + if [ "x$conf_user" = "x" ]; then for uid in nobody www daemon demon http httpd; do if [ "x`egrep \^${uid}: /etc/passwd`" != "x" ]; then conf_user="$uid" break fi done + fi + if [ "x$conf_group" = "x" ]; then for gid in nobody nogroup www daemon demon http httpd; do if [ "x`egrep \^${gid}: /etc/group`" != "x" ]; then conf_group="$gid" @@ -1122,6 +1158,7 @@ fi done fi + fi if [ "x`$aux/getuid.sh`" != "x0" -a "x$port" = "x" ]; then conf_port="8080" fi @@ -1130,6 +1167,17 @@ fi ## +## Default server user id and group id if not specified on configure invocation and none +## of the ids in /etc/passwd or /etc/group worked. +## +if [ "x$conf_user" = "x" ]; then + conf_user="nobody" +fi +if [ "x$conf_group" = "x" ]; then + conf_group="\\\\#-1" +fi + +## ## determine prefix-relative paths for directories ## because Apache supports them for the -d and -f ## options, the LoadModule directive, etc. @@ -1201,6 +1249,7 @@ echo "Creating $mkf" fi sed <Makefile.tmpl >$mkf \ +-e "[EMAIL PROTECTED]@%$PLATFORM%g" \ -e "[EMAIL PROTECTED]@%$PERL%g" \ -e "[EMAIL PROTECTED]@%$TAR%g" \ -e "[EMAIL PROTECTED]@%$TAROPT%g" \ 1.65 +3 -0 apache-1.3/src/helpers/GuessOS Index: GuessOS =================================================================== RCS file: /export/home/cvs/apache-1.3/src/helpers/GuessOS,v retrieving revision 1.64 retrieving revision 1.65 diff -u -r1.64 -r1.65 --- GuessOS 1999/11/28 11:24:27 1.64 +++ GuessOS 1999/12/09 17:19:40 1.65 @@ -279,6 +279,9 @@ *:*:*:"DRS 6000") echo "drs6000-whatever-whatever"; exit 0; ;; + OS/390:*) + echo "${MACHINE}-IBM-OS390-${RELEASE}-${VERSION}"; exit 0; + ;; esac # 1.35 +6 -4 apache-1.3/src/helpers/TestCompile Index: TestCompile =================================================================== RCS file: /export/home/cvs/apache-1.3/src/helpers/TestCompile,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- TestCompile 1999/07/21 14:32:55 1.34 +++ TestCompile 1999/12/09 17:19:42 1.35 @@ -1,6 +1,6 @@ #!/bin/sh exstat=1 -trap 'rm -f Makefile dummy dummy.exe testfunc.c testfunc testfunc.exe; exit $exstat' 0 1 2 3 15 +trap 'rm -f Makefile dummy ../dummy.o dummy.exe testfunc.c testfunc ../testfunc.o testfunc.exe; exit $exstat' 0 1 2 3 15 # # Yet another Apache Configure helper script. # This script tests certain aspects of the compilation @@ -191,7 +191,8 @@ # # Get makefile settings and build a basic Makefile # -rm -f dummy +rm -f dummy ../dummy.o testfunc ../testfunc.o + cat ../Makefile.config > Makefile cat <<EOF >> Makefile CFLAGS=\$(OPTIM) \$(CFLAGS1) \$(EXTRA_CFLAGS) @@ -200,10 +201,10 @@ LDFLAGS=\$(LDFLAGS1) \$(EXTRA_LDFLAGS) dummy: - cd ..; \$(CC) \$(CFLAGS) \$(INCLUDES) \$(LDFLAGS) helpers/dummy.c -o helpers/dummy $TLIB \$(LIBS) + cd ..; \$(CC) \$(CFLAGS) \$(INCLUDES) \$(LDFLAGS) -o helpers/dummy $TLIB \$(LIBS) helpers/dummy.c testfunc: - cd ..; \$(CC) \$(CFLAGS) \$(INCLUDES) \$(LDFLAGS) helpers/testfunc.c -o helpers/testfunc $TLIB \$(LIBS) + cd ..; \$(CC) \$(CFLAGS) \$(INCLUDES) \$(LDFLAGS) -o helpers/testfunc $TLIB \$(LIBS) helpers/testfunc.c EOF # Now run that Makefile @@ -221,3 +222,4 @@ fi exstat=0 fi + 1.14 +9 -4 apache-1.3/src/helpers/binbuild.sh Index: binbuild.sh =================================================================== RCS file: /export/home/cvs/apache-1.3/src/helpers/binbuild.sh,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- binbuild.sh 1999/08/13 03:26:29 1.13 +++ binbuild.sh 1999/12/09 17:19:42 1.14 @@ -6,12 +6,14 @@ # This script falls under the Apache License. # See http://www.apache.org/docs/LICENSE - -CONFIGPARAM="--with-layout=BinaryDistribution --enable-module=most --enable-shared=max" +OS=`src/helpers/GuessOS` +case "x$OS" in + x*390) CONFIGPARAM="--with-layout=BinaryDistribution --enable-module=most --enable-module=log_agent --enable-module=log_referer --enable-module=example --enable-module=mmap_static";; + *) CONFIGPARAM="--with-layout=BinaryDistribution --enable-module=most --enable-shared=max";; +esac APDIR=`pwd` APDIR=`basename $APDIR` VER=`echo $APDIR |sed s/apache_//` -OS=`src/helpers/GuessOS` TAR="`src/helpers/PrintPath tar`" GTAR="`src/helpers/PrintPath gtar`" GZIP="`src/helpers/PrintPath gzip`" @@ -269,7 +271,10 @@ else if [ "x$TAR" != "x" ] then - $TAR -cf ../apache_$VER-$OS.tar -C .. apache_$VER + case "x$OS" in + x*390) $TAR -cfU ../apache_$VER-$OS.tar -C .. apache_$VER;; + *) $TAR -cf ../apache_$VER-$OS.tar -C .. apache_$VER;; + esac if [ "x$GZIP" != "x" ] then $GZIP ../apache_$VER-$OS.tar 1.279 +23 -0 apache-1.3/src/include/ap_config.h Index: ap_config.h =================================================================== RCS file: /export/home/cvs/apache-1.3/src/include/ap_config.h,v retrieving revision 1.278 retrieving revision 1.279 diff -u -r1.278 -r1.279 --- ap_config.h 1999/12/08 23:02:23 1.278 +++ ap_config.h 1999/12/09 17:19:43 1.279 @@ -949,6 +949,29 @@ #define NO_KILLPG #define NEED_INITGROUPS #define NO_SLACK + +#elif defined(OS390) /* IBM OS/390 Operating System */ +#define HAVE_MMAP +#define HAVE_SHMGET +#define USE_SHMGET_SCOREBOARD +#define USE_MMAP_FILES +#define USE_FCNTL_SERIALIZED_ACCEPT +#define _POSIX_SOURCE +#include <signal.h> +#define NSIG SIGDUMP+1 +#define JMP_BUF sigjmp_buf +#define _XOPEN_SOURCE_EXTENDED 1 +#define _OPEN_MSGQ_EXT +#define _XOPEN_SOURCE +#define SHM_R S_IRUSR +#define SHM_W S_IWUSR +#include <sys/time.h> +#include <sys/types.h> +#include <sys/msg.h> +#include <sys/socket.h> +#define NET_SIZE_T size_t +#define NEED_HASHBANG_EMUL + #else /* Unknown system - Edit these to match */ #ifdef BSD 1.484 +1 -1 apache-1.3/src/main/http_main.c Index: http_main.c =================================================================== RCS file: /export/home/cvs/apache-1.3/src/main/http_main.c,v retrieving revision 1.483 retrieving revision 1.484 diff -u -r1.483 -r1.484 --- http_main.c 1999/12/08 18:51:03 1.483 +++ http_main.c 1999/12/09 17:19:44 1.484 @@ -116,7 +116,7 @@ #endif #ifdef WIN32 #include "../os/win32/getopt.h" -#elif !defined(BEOS) && !defined(TPF) && !defined(NETWARE) +#elif !defined(BEOS) && !defined(TPF) && !defined(NETWARE) && !defined(OS390) #include <netinet/tcp.h> #endif #ifdef HAVE_BSTRING_H 1.149 +1 -1 apache-1.3/src/main/util_script.c Index: util_script.c =================================================================== RCS file: /export/home/cvs/apache-1.3/src/main/util_script.c,v retrieving revision 1.148 retrieving revision 1.149 diff -u -r1.148 -r1.149 --- util_script.c 1999/12/09 12:05:04 1.148 +++ util_script.c 1999/12/09 17:19:45 1.149 @@ -250,7 +250,7 @@ } } - if (!(env_path = getenv("PATH"))) { + if (!(env_path = ap_pstrdup(r->pool, getenv("PATH")))) { env_path = DEFAULT_PATH; } 1.31 +6 -6 apache-1.3/src/support/Makefile.tmpl Index: Makefile.tmpl =================================================================== RCS file: /export/home/cvs/apache-1.3/src/support/Makefile.tmpl,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- Makefile.tmpl 1999/08/10 14:37:18 1.30 +++ Makefile.tmpl 1999/12/09 17:19:48 1.31 @@ -14,19 +14,19 @@ all: $(TARGETS) htpasswd: htpasswd.o - $(CC) $(CFLAGS) htpasswd.o -o htpasswd $(LDFLAGS) $(LIBS) + $(CC) $(CFLAGS) -o htpasswd $(LDFLAGS) htpasswd.o $(LIBS) htdigest: htdigest.o - $(CC) $(CFLAGS) htdigest.o -o htdigest $(LDFLAGS) $(LIBS) + $(CC) $(CFLAGS) -o htdigest $(LDFLAGS) htdigest.o $(LIBS) rotatelogs: rotatelogs.o - $(CC) $(CFLAGS) rotatelogs.o -o rotatelogs $(LDFLAGS) $(LIBS) + $(CC) $(CFLAGS) -o rotatelogs $(LDFLAGS) rotatelogs.o $(LIBS) logresolve: logresolve.o - $(CC) $(CFLAGS) logresolve.o -o logresolve $(LDFLAGS) $(LIBS) + $(CC) $(CFLAGS) -o logresolve $(LDFLAGS) logresolve.o $(LIBS) ab: ab.o - $(CC) $(CFLAGS) ab.o -o ab $(LDFLAGS) $(LIBS) + $(CC) $(CFLAGS) -o ab $(LDFLAGS) ab.o $(LIBS) apxs: apxs.pl sed <apxs.pl >apxs \ @@ -39,7 +39,7 @@ -e '[EMAIL PROTECTED]@%$(LIBS_SHLIB)%g' && chmod a+x apxs suexec: suexec.o - $(CC) $(CFLAGS) suexec.o -o suexec $(LDFLAGS) $(LIBS) + $(CC) $(CFLAGS) -o suexec $(LDFLAGS) suexec.o $(LIBS) clean: rm -f $(TARGETS) *.o 1.28 +1 -1 apache-1.3/src/support/htdigest.c Index: htdigest.c =================================================================== RCS file: /export/home/cvs/apache-1.3/src/support/htdigest.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- htdigest.c 1999/10/21 20:46:31 1.27 +++ htdigest.c 1999/12/09 17:19:48 1.28 @@ -72,7 +72,7 @@ #endif #include "ap.h" #include "ap_md5.h" -#if defined(MPE) || defined(QNX) || defined(WIN32) || defined(__TANDEM) +#if defined(MPE) || defined(QNX) || defined(WIN32) || defined(__TANDEM) || defined(OS390) #include <signal.h> #else #include <sys/signal.h>