tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andy Armstrong <a...@tagish.com>
Subject Re: #define JK_VERSION in j-t-c (doesn't exist)
Date Wed, 20 Jun 2001 19:09:02 GMT
jean-frederic clere wrote:
> 
> Hi,
> 
> I have prepared a patch for configure.in to generate JK_EXPOSED_VERSION and
> JK_VERSION.
> The result is a file named common/version.h:
> +++
> #define JK_EXPOSED_VERSION "mod_jk/1.2.0-dev"
> #define JK_VERSION (((1) << 16) + ((2) << 8) +
> (0))
> +++
> Any comments? - Otherwise I will commit it tomorrow -

Decimal fields might be more appropriate to the ranges of numbers
expected, and I think Henri suggested an additional field for alpha,
beta etc.

How about

  #define JK_DEV      0
  #define JK_ALPHA    1
  #define JK_BETA     2
  #define JK_RELEASE 99
  #define JK_MKVER(major, minor, sequence, type) \
    ((major) * 1000000 + (minor) * 10000 + (sequence) * 100 + (type))

  #define JK_VERSION JK_MKVER(1, 2, 0, JK_DEV)

> 
> Cheers
> 
> Jean-frederic
> 
> Andy Armstrong wrote:
> >
> > jean-frederic clere wrote:
> > [snip]
> > > > I'm categorically /not/ suggesting moving anything protocol specific
> > > > into the Domino connector, but the interface to the protocol code is
> > > > changing over time -- extra fields are being added and so on. I want the
> > > > Domino code to work with both the current jk stuff and the legacy 3.2
> > > > stuff is all.
> > >
> > > Yep, that is because it is a developement version ;-)
> >
> > Yes, I got that ;-)
> >
> > > > Maybe a specific example will explain what I'm talking about. Here's a
> > > > bit of code that handles parsing the SSL keysize and passing it to the
> > > > jk stuff. The field ssl_key_size wasn't available until recently so the
> > > > I have to cope with that case too. Surely that isn't too evil is it?
> > > >
> > > >    #if FOR_TOMCAT >= TOMCAT400
> > > >         /* Read the variable into a dummy variable: we do this for the
> > > > side
> > > >          * effect of reading it into workBuf.
> > > >          */
> > > >         GETVARIABLEINT("HTTPS_KEYSIZE", &dummy, 0);
> > > >         if (workBuf[0] == '[')
> > > >             s->ssl_key_size = atoi(workBuf+1);
> > > >    #else
> > > >         (void) dummy;
> > > >    #endif
> > >
> > > Ok, I will put this version information in a commun include file named
> > > version.h. (On Monday!).
> > > Of course we will to have to document our internal API so that for each version
> > > of mod_jk the connectors could know the parameters and the structures used
by
> > > the version.
> >
> > Thanks Jean. I don't think the documentation burden necessarily
> > increases that much. I expect most people writing a new connector to
> > start with the source of an existing one -- I certainly did -- that
> > pretty much documents everything you need to know. Perhaps it would be
> > enough to nominate one connector (mod_jk I guess) as 'state of the art'
> > and direct connector implementors to it.
> >
> > --
> > Andy Armstrong, Tagish
> 
>   ------------------------------------------------------------------------
> dnl
> dnl Process this file with autoconf to produce a configure script
> dnl
> AC_REVISION($Id: configure.in,v 1.5 2001/06/14 14:38:13 jfclere Exp $)dnl
> 
> AC_PREREQ(2.13)
> AC_INIT(common/jk_ajp13.h)
> AC_CONFIG_AUX_DIR(scripts/build/unix)
> 
> dnl package and version.
> PACKAGE=mod_jk
> VERMAJOR=1
> VERMINOR=2
> VERFIX=0
> dnl set VERISRELEASE to 1 when release (do not forget to commit!)
> VERISRELEASE=0
> 
> VERSION=${VERMAJOR}.${VERMINOR}.${VERFIX}
> 
> AM_INIT_AUTOMAKE(${PACKAGE}, ${VERSION})
> 
> dnl AM_PROG_LIBTOOL often causes problems.
> dnl I have solved them once using aclocal --acdir=/usr/local/share/aclocal/
> AM_PROG_LIBTOOL
> 
> AC_PROG_CC
> 
> AC_PROG_LD
> 
> AC_PATH_PROG(TEST,test,$PATH)dnl
> AC_SUBST(TEST)
> 
> AC_PATH_PROG(RM,rm,$PATH)dnl
> AC_SUBST(RM)
> 
> AC_PATH_PROG(GREP,grep,$PATH)dnl
> AC_SUBST(GREP)
> 
> AC_PATH_PROG(ECHO,echo,echo,$PATH)dnl
> AC_SUBST(ECHO)
> 
> AC_PATH_PROG(SED,sed,$PATH)dnl
> AC_SUBST(SED)
> 
> AC_PATH_PROG(CP,cp,$PATH)dnl
> AC_SUBST(CP)
> 
> AC_PATH_PROG(MKDIR,mkdir,$PATH)dnl
> AC_SUBST(MKDIR)
> 
> dnl prepare the string and value for mod_jk version logic
> JK_EXPOSED_VERSION=${PACKAGE}/${VERSION}
> if ${TEST} ${VERISRELEASE} -eq 0 ; then
>     JK_EXPOSED_VERSION=${JK_EXPOSED_VERSION}-dev
> fi
> 
> AC_SUBST(JK_EXPOSED_VERSION)
> AC_SUBST(PACKAGE)
> AC_SUBST(VERSION)
> AC_SUBST(VERMAJOR)
> AC_SUBST(VERMINOR)
> AC_SUBST(VERFIX)
> 
> WEBSERVER=""
> apache_dir=""
> apache_include=""
> APXS="apxs"
> AC_ARG_WITH(apxs,
> [  --with-apxs[=FILE]      Build shared Apache module. FILE is the optional
>                         pathname to the apxs tool; defaults to finding
>                         apxs in your PATH.],
> [
>     case "${withval}" in
>         y | yes | true) find_apxs=true ;;
>         n | no | false) find_apxs=false ;;
>         *) find_apxs=false ;;
>     esac
> 
>     if ${TEST} ${find_apxs} ; then
>         AC_MSG_RESULT([need to check for Perl first, apxs depends on it...])
>         AC_PATH_PROG(PERL,perl,$PATH)dnl
> 
>         if ${TEST} ${find_apxs} ; then
>             APXS=${withval}
>         else
>             AC_PATH_PROG(APXS,apxs,$PATH)dnl
>         fi
> 
>         if ${TEST} -n "${APXS}" ; then
>             dnl Seems that we have it, but have to check if it is OK first
>             if ${TEST} ! -x "${APXS}" ; then
>                 AC_MSG_ERROR(Invalid location for apxs: '${APXS}')
>             fi
> 
>             $APXS -q PREFIX >/dev/null 2>/dev/null || apxs_support=false
> 
>             if ${TEST} "${apxs_support}" = "false" ; then
>                 AC_MSG_RESULT(could not find apxs)
>                 AC_MSG_ERROR(You must specify a valid --with-apxs path)
>             fi
> 
>             dnl test apache version
>             $RM -rf test
>             $APXS -n test -g
>             APA=`grep STANDARD20 test/mod_test.c`
>             $RM -rf test
>             if ${TEST} -z "$APA" ; then
>                 WEBSERVER="apache-1.3"
>             else
>                 WEBSERVER="apache-2.0"
>             fi
>             AC_MSG_RESULT([building connector for \"$WEBSERVER\"])
> 
>             AC_SUBST(APXS)
> 
>             dnl apache_dir and apache_include are also needed.
>             apache_dir=`$APXS -q PREFIX`
>             apache_include="-I`$APXS -q INCLUDEDIR`"
>         fi
>     fi
> ],
> [
>         AC_MSG_RESULT(no apxs given)
> ])
> 
> dnl it is copied from the configure of JServ ;=)
> dnl and adapted.
> 
> apache_dir_is_src="false"
> AC_ARG_WITH(apache,
> [  --with-apache=DIR      Build static Apache module. DIR is the pathname
>                         to the Apache source directory.],
> [
>     if ${TEST} ! -z "$WEBSERVER" ; then
>         AC_MSG_ERROR([Sorry cannot use --with-apxs=${APXS} and --with-apache=${withval}
togother, please choose one of both])
>     fi
> 
>     AC_MSG_CHECKING([for Apache source directory (assume static build)])
> 
>     if ${TEST} -n "${withval}" && ${TEST} -d "${withval}" ; then
>         if ${TEST} -d "${withval}/src" ; then
>            # handle the case where people use relative paths to
>            # the apache source directory by pre-pending the current
>            # build directory to the path. there are probably
>            # errors with this if configure is run while in a
>            # different directory than what you are in at the time
>            if ${TEST} -n "`${ECHO} ${withval}|${GREP} \"^\.\.\"`" ; then
>                withval=`pwd`/${withval}
>            fi
> 
>            apache_dir=${withval}
>            apache_dir_is_src="true"
>            AC_MSG_RESULT(${apache_dir})
> 
>            AC_MSG_CHECKING(for Apache include directory)
> 
>            if ${TEST} -d "${withval}/src/include" ; then
>                # read osdir from the existing apache.
>                osdir=`${GREP} '^OSDIR=' ${withval}/src/Makefile.config | ${SED} -e 's:^OSDIR=.*/os:os:'`
>                if ${TEST} -z "${osdir}" ; then
>                    osdir=os/unix
>                fi
>                apache_include="-I${withval}/src/include \
>                    -I${withval}/src/${osdir}"
>                WEBSERVER="apache-1.3"
>                AC_MSG_RESULT([${apache_include}, version 1.3])
>            else
>                AC_MSG_ERROR([Sorry Apache 1.2.x is no longer supported.])
>            fi
>         else
>            if ${TEST} -d "${withval}/include" ; then
>               # osdir for Apache20.
>               WEBSERVER="apache-2.0"
>               apache_dir=${withval}
>               apache_dir_is_src="true"
>               AC_MSG_RESULT(${apache_dir})
>            fi
>         fi
>     fi
> 
>     dnl Make sure we have a result.
>     if ${TEST} -z "$WEBSERVER" ; then
>         AC_MSG_ERROR([Directory $apache_dir is not a valid Apache source distribution])
>     fi
> 
> # VT: Now, which one I'm supposed to use? Let's figure it out later
> 
>     configure_apache=true
>     configure_src=true
> 
>     AC_MSG_RESULT([building connector for \"$WEBSERVER\"])
> ],
> [
>         AC_MSG_RESULT(no apache given)
> ])
> AC_SUBST(apache_include)
> APACHE_DIR=${apache_dir}
> AC_SUBST(APACHE_DIR)
> 
> dnl Check for enable-jni
> JK_JNI_WORKER=""
> AC_ARG_ENABLE(jni,
> [  --enable-jni     Build jni_connect.so and enable jni_worker.],
> [
>     AC_MSG_RESULT(jni enable (need JDK))
>     CFLAGS="${CFLAGS} -DHAVE_JNI"
>     JK_JNI_WORKER="\${JK}/jk_jni_worker\${OEXT}"
> ])dnl
> AC_SUBST(JK_JNI_WORKER)
> 
> dnl CFLAGS for EAPI mod_ssl (Apache 1.3)
> dnl it also allows the CFLAGS environment variable.
> CFLAGS="${CFLAGS}"
> AC_ARG_ENABLE(
> EAPI,
> [  --enable-EAPI           Enable EAPI support (mod_ssl, Apache 1.3)],
> [
> case "${enableval}" in
>     y | Y | YES | yes | TRUE | true )
>         CFLAGS="${CFLAGS} -DEAPI"
>         AC_MSG_RESULT([...Enabling EAPI Support...])
>         ;;
> esac
> ])
> AC_SUBST(CFLAGS)
> 
> dnl the APXSCFLAGS is given by apxs to the C compiler
> dnl the APXSLDFLAGS is given to the linker (for APRVARS).
> APXSLDFLAGS=""
> APXSCFLAGS=""
> if ${TEST} -n "${CFLAGS}" ; then
>         APXSCFLAGS="${CFLAGS}"
> fi
> dnl the APXSLDFLAGS is normaly empty but APXSCFLAGS is not.
> if ${TEST} -n "${LDFLAGS}" ; then
>         APXSLDFLAGS="-Wl,${LDFLAGS}"
> fi
> AC_SUBST(APXSCFLAGS)
> AC_SUBST(APXSLDFLAGS)
> 
> if ${TEST} -n "${JK_JNI_WORKER}" ; then
> 
> dnl Find the JDK
> dnl Results go in JAVA_HOME
> dnl Also sets JAVA_PLATFORM to 1 for 1.1 and to 2 for 1.2
> 
> AC_MSG_CHECKING([for JDK location (please wait)])
> 
> dnl The order is: --with-java-home first, environment second, guessed value third.
> 
> dnl This is a safe default. Could screw up on the security features, but
> dnl oh well, this is what --with-java2 is for.
> 
> if ${TEST} -n "${JAVA_HOME}" ; then
>         JAVA_HOME_ENV="${JAVA_HOME}"
> else
>         JAVA_HOME_ENV=""
> fi
> JAVA_HOME=""
> JAVA_PLATFORM="1"
> 
> AC_ARG_WITH(java-home,
> [  --with-java-home=DIR     Where is your JDK root directory.],
> [
> 
>     # This stuff works if the command line parameter --with-java-home was
>     # specified, so it takes priority rightfully.
> 
>     JAVA_HOME=${withval}
> 
>     if ${TEST} ! -d "${JAVA_HOME}" ; then
>         AC_MSG_ERROR(Not a directory: ${JAVA_HOME})
>     fi
> 
>     AC_MSG_RESULT(${JAVA_HOME})
> 
> ],
> [
>     # This works if the parameter was NOT specified, so it's a good time
>     # to see what the enviroment says.
> 
>     # Since Sun uses JAVA_HOME a lot, we check it first and ignore the
>     # JAVA_HOME, otherwise just use whatever JAVA_HOME was specified.
> 
>     if ${TEST} -n "${JAVA_HOME_ENV}" ; then
> 
>         JAVA_HOME=${JAVA_HOME_ENV}
>         AC_MSG_RESULT(${JAVA_HOME_ENV} from environment)
>     fi
> ])
> 
> if ${TEST} -z "${JAVA_HOME}" ; then
> 
>     # Oh well, nobody set neither JAVA_HOME nor JAVA_HOME, have to guess
> 
>     # The following code is based on the code submitted by Henner Zeller
>     # for ${srcdir}/src/scripts/package/rpm/ApacheJServ.spec
> 
>     # Two variables will be set as a result:
>     #
>     # JAVA_HOME
>     # JAVA_PLATFORM
>     AC_MSG_CHECKING([Try to guess JDK location])
> 
> 
>     for JAVA_PREFIX in \
>             /usr/local \
>             /usr/local/lib \
>             /usr \
>             /usr/lib \
>             /opt  \
>             /
>     do
>         for JAVA_PLATFORM in 3 2 1 ;
>         do
> 
>             for subversion in .9 .8 .7 .6 .5 .4 .3 .2 .1 "" ;
>                 do
>                     for VARIANT in IBMJava2- java java- jdk jdk-;
>                     do
>                         GUESS="${JAVA_PREFIX}/${VARIANT}1.${JAVA_PLATFORM}${subversion}"
> dnl                        AC_MSG_CHECKING([${GUESS}])
>                         if ${TEST} -d "${GUESS}/bin" \
>                         && ${TEST} -d "${GUESS}/include" ; then
> 
>                             JAVA_HOME="${GUESS}"
>                             AC_MSG_RESULT([${GUESS}])
>                             break
>                         fi
> 
>                     done
> 
>                     if ${TEST} -n "${JAVA_HOME}" ; then
>                         break;
>                     fi
> 
>                 done
> 
>                 if ${TEST} -n "${JAVA_HOME}" ; then
>                     break;
>                 fi
> 
>             done
> 
>             if ${TEST} -n "${JAVA_HOME}" ; then
>                 break;
>             fi
> 
>         done
> 
>         if ${TEST} -n "${JAVA_HOME}" ; then
> 
>             dnl Just to have the messages looking uniformly
> 
>             AC_MSG_CHECKING(Java platform)
>             AC_MSG_RESULT([guess ${JAVA_PLATFORM}])
>         fi
> 
> 
> else
> 
>         AC_MSG_CHECKING(Java platform)
> 
>         AC_ARG_WITH(java-platform,
>         [  --with-java-platform=VAL Force the Java platorm
>                           (value is 1 for 1.1.x or 2 for 1.2.x or greater)],
>         [
>             dnl This requires a bit of tweaking to be handled properly, but
>             dnl the default is good enough
> 
>             JAVA_PLATFORM="2"
>         ])
> 
>         AC_MSG_RESULT(forced Java ${JAVA_PLATFORM})
> 
> fi
> dnl end of JServ ;=)
> 
> dnl test if --enable-jni give but not valid JAVA_HOME
> if ${TEST} -z "${JAVA_HOME}" ; then
>     AC_MSG_ERROR([JDK home not found, please specify one with --with-java-home option
(run ./configure --help for more options)])
> fi
> 
> dnl guess OS = OS_TYPE for jni_md.h
> OS=""
> AC_ARG_WITH(os-type,
> [  --with-os-type[=SUBDIR]     Where is your JDK os-type subdirectory.],
> [
>     OS=${withval}
> 
>     if ${TEST} ! -d "${JAVA_HOME}/${OS}" ; then
>         AC_MSG_ERROR(Not a directory: ${JAVA_HOME}/${OS})
>     fi
> ],
> [
>     AC_MSG_CHECKING(os_type directory)
>     if ${TEST} -f ${JAVA_HOME}/include/jni_md.h; then
>         OS=""
>     else
>         for f in ${JAVA_HOME}/include/*/jni_md.h; do
>             if ${TEST} -f $f; then
>                 OS=`dirname ${f}`
>                 OS=`basename ${OS}`
>                 echo " ${OS}"
>             fi
>         done
>         if ${TEST} -z "${OS}"; then
>             AC_MSG_RESULT(Cannot find jni_md.h in ${JAVA_HOME}/${OS})
>             AC_MSG_ERROR(You should retry --with-os-type=SUBDIR)
>         fi
>     fi
> ])
> fi
> AC_SUBST(JAVA_HOME)
> AC_SUBST(OS)
> 
> dnl Check that  a WEBSERVER has been given
> if ${TEST} -z "$WEBSERVER" ; then
>         AC_MSG_ERROR(Cannot find the WebServer)
> fi
> 
> dnl Add common to subdir list
> WEBSERVER="common ${WEBSERVER}"
> 
> AC_SUBST(WEBSERVER)
> 
> AM_CONDITIONAL(MAKE_DYNAMIC_APACHE, ${TEST} "${apache_dir_is_src}" = "false")
> 
> dnl automake needs the path it does not work with $WEBSERVER
> dnl that why useless Makefiles are build.
> AC_OUTPUT([
>         Makefile
>         apache-1.3/Makefile
>         apache-1.3/Makefile.apxs
>         apache-2.0/Makefile
>         apache-2.0/Makefile.apxs
>         common/Makefile
>         common/list.mk
>         common/version.h
>         ])

-- 
Andy Armstrong, Tagish

Mime
View raw message