diff options
author | lawrance <lawrance@FreeBSD.org> | 2006-02-07 08:50:09 +0000 |
---|---|---|
committer | lawrance <lawrance@FreeBSD.org> | 2006-02-07 08:50:09 +0000 |
commit | 0dbf44f2e44716f3c3b19aaf706e26ea8868277d (patch) | |
tree | ac6207ff1ad078d8f37ce79287ab718225fb29d0 /www/tomcat55/files | |
parent | 1bc1a68a46ba43d35d424b84ee8715da075ed0ee (diff) | |
download | FreeBSD-ports-0dbf44f2e44716f3c3b19aaf706e26ea8868277d.zip FreeBSD-ports-0dbf44f2e44716f3c3b19aaf706e26ea8868277d.tar.gz |
Clean up Tomcat 4, 4.1, 5, and 5.5 ports.
These changes apply to all ports, unless mentioned otherwise:
- Move jakarta-tomcat55 to tomcat55 (it is no longer a Jakarta project). [6]
- Improve the tomcat55 rc script. Fix PID handling. Improve the
shutdown process. Use USE_RC_SUBR to its full potential. [2]
- Backport tomcat55 rc script to the other tomcat ports. This allows
us to pass command line arguments to the JVM. Noted in UPDATING.
[1], [3], [4]
- Change ownership of installed files. All files are now installed
with default uid/gid (root:wheel) except for those in the conf/, logs/,
temp/ and work/ directories. [5]
- No longer install tomcatXXctl binary. rc scripts are more flexible
and can be reconfigured without recompiling.
- Remove AUTO_START and STOP_TIMEOUT (replaced with rc tomcatXX_stop_timeout).
- Remove a long list of sed expressions in favour of SUB_LIST.
- Move pkg_{,de}install to files/pkg_{,de}install.in. Add them to
SUB_FILES. Tidy up substitutions and remove hardcoded values.
- Some nonfunctional tidying and removal of Makefile cruft.
PR: ports/38018 [1], ports/38020 [2], ports/74344 [3],
ports/75143 [4], ports/83434 [5], ports/92692 [6]
Submitted by: Ari Suutari <ari.suutari@syncrontech.com> [1] [2],
SimpleRezo Team <freebsd@simplerezo.com> [3],
Anton Yudin <toha@toha.org.ua> [4],
Jan Grant <jan.grant@bristol.ac.uk> [5],
lawrance [6]
Approved by: Kang Liu <liukang@cn.freebsd.org> (maintainer) [6]
Maintainer timeouts on [1], [2], [3], [4], [5]
Big thanks to: hq for the initial tomcat55 script
jasonb on FreeNode #tomcat for packaging advice
Diffstat (limited to 'www/tomcat55/files')
-rw-r--r-- | www/tomcat55/files/pkg-deinstall.in | 47 | ||||
-rw-r--r-- | www/tomcat55/files/pkg-install.in | 53 | ||||
-rw-r--r-- | www/tomcat55/files/tomcat.sh.in | 115 | ||||
-rw-r--r-- | www/tomcat55/files/tomcat55.sh.in | 153 |
4 files changed, 253 insertions, 115 deletions
diff --git a/www/tomcat55/files/pkg-deinstall.in b/www/tomcat55/files/pkg-deinstall.in new file mode 100644 index 0000000..655ee46 --- /dev/null +++ b/www/tomcat55/files/pkg-deinstall.in @@ -0,0 +1,47 @@ +#!/bin/sh +# +# This script does the following. +# +# * Checks if the PID file exists. If it does, it kills the +# process and removes the PID file. +# +# * Checks if the '%%USER%%' user exists. If it does, then it displays +# a message. +# +# $FreeBSD$ +# + +USER=%%USER%% +PID_FILE=%%PID_FILE%% + +# Make sure we're in the right stage of the process +if [ "$2" = "DEINSTALL" ]; then + + # Kill the process if it is still running + if [ -s ${PID_FILE} ]; then + PID=`cat ${PID_FILE}` + echo -n ">> Killing Tomcat process (${PID})..." + /bin/kill ${PID} > /dev/null 2> /dev/null + if [ $? -eq 0 ]; then + echo " [ DONE ]" + else + echo " [ FAILED ]" + fi + echo -n ">> Removing PID file (${PID_FILE})..." + rm ${PID_FILE} > /dev/null 2> /dev/null + if [ $? -eq 0 ]; then + echo " [ DONE ]" + else + echo " [ FAILED ]" + fi + fi +fi + +if [ "$2" = "POST-DEINSTALL" ]; then + # If the user exists, then display a message + if pw usershow "${USER}" 2>/dev/null 1>&2; then + echo "To delete the ${USER} user permanently, use 'pw userdel ${USER}'" + fi +fi + +exit 0 diff --git a/www/tomcat55/files/pkg-install.in b/www/tomcat55/files/pkg-install.in new file mode 100644 index 0000000..ddc5dfd --- /dev/null +++ b/www/tomcat55/files/pkg-install.in @@ -0,0 +1,53 @@ +#!/bin/sh +# +# Checks if the '%%USER%%' user and '%%GROUP%%' group exist. If they don't, then +# an attempt is made to create both. +# +# $FreeBSD$ +# + +# Make sure we're called during the 'make install' process +if [ "$2" != "PRE-INSTALL" ]; then + exit 0 +fi + +# Set some constants +UID=80 +GID=${UID} +USER=%%USER%% +GROUP=%%GROUP%% + +# See if the group already exists +if ! pw groupshow "${GROUP}" 2>/dev/null 1>&2; then + + # If not, try to create it + if pw groupadd "${GROUP}" -g ${GID}; then + echo "Added group \"${GROUP}\"." + elif pw groupadd "${GROUP}"; then + echo "Added group \"${GROUP}\"." + else + echo "Adding group \"${GROUP}\" failed..." + exit 1 + fi +fi + +# See if the user already exists +if ! pw usershow "${USER}" 2>/dev/null 1>&2; then + + # If not, try to create it + if pw useradd "${USER}" -u ${UID} -g "${GROUP}" -h - \ + -s "/sbin/nologin" -d "/nonexistent" \ + -c "World Wide Web Owner"; + then + echo "Added user \"${USER}\"." + elif pw useradd "${USER}" -g "${GROUP}" -h - \ + -s "/sbin/nologin" -d "/nonexistent" \ + -c "World Wide Web Owner"; + then + echo "Added user \"${USER}\"." + else + echo "Adding user \"${USER}\" failed..." + exit 1 + fi +fi +exit 0 diff --git a/www/tomcat55/files/tomcat.sh.in b/www/tomcat55/files/tomcat.sh.in deleted file mode 100644 index 0dca0cb..0000000 --- a/www/tomcat55/files/tomcat.sh.in +++ /dev/null @@ -1,115 +0,0 @@ -#!/bin/sh -# -# $FreeBSD$ -# - -# PROVIDE: jakarta-tomcat%%TOMCAT_VERSION%% -# REQUIRE: NETWORKING SERVERS -# BEFORE: DAEMON -# KEYWORD: FreeBSD shutdown - -# -# Configuration settings for jakarta-tomcat%%TOMCAT_VERSION%% in /etc/rc.conf: -# -# jakarta_tomcat%%TOMCAT_VERSION%%_enable (bool): -# Set to "NO" by default. -# Set it to "YES" to enable jakarta-tomcat%%TOMCAT_VERSION%% -# -# jakarta_tomcat%%TOMCAT_VERSION%%_flags (str): -# Set to "" by default. -# Extra flags passed to start command -# -# jakarta_tomcat%%TOMCAT_VERSION%%_catalina_home (str) -# Set to "%%TOMCAT_HOME%%" by default. -# Set the CATALINA_HOME variable for the Tomcat process -# -# jakarta_tomcat%%TOMCAT_VERSION%%_catalina_base (str) -# Set to "%%TOMCAT_HOME%%" by default. -# Set the CATALINA_BASE variable for the Tomcat process -# -# jakarta_tomcat%%TOMCAT_VERSION%%_catalina_tmpdir (str) -# Set to "%%TOMCAT_HOME%%/temp" by default. -# Set the CATALINA_TMPDIR variable for the Tomcat process -# -# jakarta_tomcat%%TOMCAT_VERSION%%_stdout_log (str) -# Set to "%%STDOUT_LOG%%" by default. -# Set the location for the Tomcat process log (standard output) -# -# jakarta_tomcat%%TOMCAT_VERSION%%_stderr_log (str) -# Set to "%%STDERR_LOG%%" by default. -# Set the location for the Tomcat process log (error output) -# -# jakarta_tomcat%%TOMCAT_VERSION%%_java_home (str): -# jakarta_tomcat%%TOMCAT_VERSION%%_java_vendor (str): -# jakarta_tomcat%%TOMCAT_VERSION%%_java_version (str): -# jakarta_tomcat%%TOMCAT_VERSION%%_java_os (str): -# Specify the requirements of the Java VM to use. See javavm(1). -# -# jakarta_tomcat%%TOMCAT_VERSION%%_classpath (str): -# Set to "" by default. -# Addtional classes to add to the CLASSPATH -# -# jakarta_tomcat%%TOMCAT_VERSION%%_java_opts (str): -# Set to "" by default. -# Java VM args to use. -# - -jakarta_tomcat%%TOMCAT_VERSION%%_enable="${jakarta_tomcat%%TOMCAT_VERSION%%_enable:-"NO"}" -jakarta_tomcat%%TOMCAT_VERSION%%_java_version="${jakarta_tomcat%%TOMCAT_VERSION%%_java_version:-"%%JAVA_VERSION%%"}" -jakarta_tomcat%%TOMCAT_VERSION%%_user="${jakarta_tomcat%%TOMCAT_VERSION%%_user:-"%%USER%%"}" -jakarta_tomcat%%TOMCAT_VERSION%%_catalina_home="${jakarta_tomcat%%TOMCAT_VERSION%%_catalina_home:-"%%TOMCAT_HOME%%"}" -jakarta_tomcat%%TOMCAT_VERSION%%_catalina_base="${jakarta_tomcat%%TOMCAT_VERSION%%_catalina_base:-"%%TOMCAT_HOME%%"}" -jakarta_tomcat%%TOMCAT_VERSION%%_catalina_tmpdir="${jakarta_tomcat%%TOMCAT_VERSION%%_catalina_tmpdir:-"%%TOMCAT_HOME%%/temp"}" -jakarta_tomcat%%TOMCAT_VERSION%%_stdout_log="${jakarta_tomcat%%TOMCAT_VERSION%%_stdout_log:-"%%STDOUT_LOG%%"}" -jakarta_tomcat%%TOMCAT_VERSION%%_stderr_log="${jakarta_tomcat%%TOMCAT_VERSION%%_stderr_log:-"%%STDERR_LOG%%"}" - -. %%RC_SUBR%% - -name="jakarta_tomcat%%TOMCAT_VERSION%%" -rcvar=`set_rcvar` - -load_rc_config "${name}" - -if [ -n "${jakarta_tomcat%%TOMCAT_VERSION%%_java_home}" ] ; then - export JAVA_HOME="${jakarta_tomcat%%TOMCAT_VERSION%%_java_home}" -fi - -if [ -n "${jakarta_tomcat%%TOMCAT_VERSION%%_java_version}" ] ; then - export JAVA_VERSION="${jakarta_tomcat%%TOMCAT_VERSION%%_java_version}" -fi - -if [ -n "${jakarta_tomcat%%TOMCAT_VERSION%%_java_vendor}" ] ; then - export JAVA_VENDOR="${jakarta_tomcat%%TOMCAT_VERSION%%_java_vendor}" -fi - -if [ -n "${jakarta_tomcat%%TOMCAT_VERSION%%_java_os}" ] ; then - export JAVA_OS="${jakarta_tomcat%%TOMCAT_VERSION%%_java_os}" -fi - -java_command="%%LOCALBASE%%/bin/java \ - ${jakarta_tomcat%%TOMCAT_VERSION%%_java_opts} \ - -Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS \ - -classpath %%TOMCAT_HOME%%/bin/bootstrap.jar:%%TOMCAT_HOME%%/bin/commons-logging-api.jar:${jakarta_tomcat%%TOMCAT_VERSION%%_classpath} \ - -Dcatalina.base=${jakarta_tomcat%%TOMCAT_VERSION%%_catalina_base} \ - -Dcatalina.home=${jakarta_tomcat%%TOMCAT_VERSION%%_catalina_home} \ - -Djava.io.tmpdir=${jakarta_tomcat%%TOMCAT_VERSION%%_catalina_tmpdir} \ - org.apache.catalina.startup.Bootstrap" - -log_args=">> ${jakarta_tomcat%%TOMCAT_VERSION%%_stdout_log} \ - 2>> ${jakarta_tomcat%%TOMCAT_VERSION%%_stderr_log} " - -procname="java" -required_files="${jakarta_tomcat%%TOMCAT_VERSION%%_catalina_home}/conf/server.xml" - -command="/usr/sbin/daemon" -flags="${command} ${java_command} start ${jakarta_tomcat%%TOMCAT_VERSION%%_flags} ${log_args}" - -stop_cmd="jakarta_tomcat%%TOMCAT_VERSION%%_stop" - -jakarta_tomcat%%TOMCAT_VERSION%%_stop() { - echo "Stopping ${name}." - ${java_command} stop - wait_for_pids -} - -run_rc_command "$1" diff --git a/www/tomcat55/files/tomcat55.sh.in b/www/tomcat55/files/tomcat55.sh.in new file mode 100644 index 0000000..dac2e79 --- /dev/null +++ b/www/tomcat55/files/tomcat55.sh.in @@ -0,0 +1,153 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# PROVIDE: tomcat%%TOMCAT_VERSION%% +# REQUIRE: NETWORKING SERVERS +# BEFORE: DAEMON +# KEYWORD: FreeBSD shutdown + +# +# Configuration settings for tomcat%%TOMCAT_VERSION%% in /etc/rc.conf: +# +# tomcat%%TOMCAT_VERSION%%_enable (bool): +# Set to "NO" by default. +# Set it to "YES" to enable tomcat%%TOMCAT_VERSION%% +# +# tomcat%%TOMCAT_VERSION%%_flags (str): +# Set to "" by default. +# Extra flags passed to start command +# +# tomcat%%TOMCAT_VERSION%%_catalina_home (str) +# Set to "%%TOMCAT_HOME%%" by default. +# Set the CATALINA_HOME variable for the Tomcat process +# +# tomcat%%TOMCAT_VERSION%%_catalina_base (str) +# Set to "%%TOMCAT_HOME%%" by default. +# Set the CATALINA_BASE variable for the Tomcat process +# +# tomcat%%TOMCAT_VERSION%%_catalina_tmpdir (str) +# Set to "%%TOMCAT_HOME%%/temp" by default. +# Set the CATALINA_TMPDIR variable for the Tomcat process +# +# tomcat%%TOMCAT_VERSION%%_stdout_log (str) +# Set to "%%STDOUT_LOG%%" by default. +# Set the location for the Tomcat process log (standard output) +# +# tomcat%%TOMCAT_VERSION%%_stderr_log (str) +# Set to "%%STDERR_LOG%%" by default. +# Set the location for the Tomcat process log (error output) +# +# tomcat%%TOMCAT_VERSION%%_stop_timeout (num) +# Set to "10" by default. +# Sets the timeout in seconds to allow tomcat to shutdown. +# After the timeout has elapsed, tomcat will be killed. +# +# tomcat%%TOMCAT_VERSION%%_java_home (str): +# tomcat%%TOMCAT_VERSION%%_java_vendor (str): +# tomcat%%TOMCAT_VERSION%%_java_version (str): +# tomcat%%TOMCAT_VERSION%%_java_os (str): +# Specify the requirements of the Java VM to use. See javavm(1). +# +# tomcat%%TOMCAT_VERSION%%_classpath (str): +# Set to "" by default. +# Addtional classes to add to the CLASSPATH +# +# tomcat%%TOMCAT_VERSION%%_java_opts (str): +# Set to "" by default. +# Java VM args to use. +# + +tomcat%%TOMCAT_VERSION%%_enable="${tomcat%%TOMCAT_VERSION%%_enable:-"NO"}" +tomcat%%TOMCAT_VERSION%%_java_version="${tomcat%%TOMCAT_VERSION%%_java_version:-"%%JAVA_VERSION%%"}" +tomcat%%TOMCAT_VERSION%%_user="${tomcat%%TOMCAT_VERSION%%_user:-"%%USER%%"}" +tomcat%%TOMCAT_VERSION%%_catalina_home="${tomcat%%TOMCAT_VERSION%%_catalina_home:-"%%TOMCAT_HOME%%"}" +tomcat%%TOMCAT_VERSION%%_catalina_base="${tomcat%%TOMCAT_VERSION%%_catalina_base:-"%%TOMCAT_HOME%%"}" +tomcat%%TOMCAT_VERSION%%_catalina_tmpdir="${tomcat%%TOMCAT_VERSION%%_catalina_tmpdir:-"%%TOMCAT_HOME%%/temp"}" +tomcat%%TOMCAT_VERSION%%_stdout_log="${tomcat%%TOMCAT_VERSION%%_stdout_log:-"%%STDOUT_LOG%%"}" +tomcat%%TOMCAT_VERSION%%_stderr_log="${tomcat%%TOMCAT_VERSION%%_stderr_log:-"%%STDERR_LOG%%"}" +tomcat%%TOMCAT_VERSION%%_stop_timeout="${tomcat%%TOMCAT_VERSION%%_stop_timeout:-"10"}" + +. %%RC_SUBR%% + +name="tomcat%%TOMCAT_VERSION%%" +rcvar=`set_rcvar` +pidfile="%%PID_FILE%%" + +load_rc_config "${name}" + +if [ -n "${tomcat%%TOMCAT_VERSION%%_java_home}" ] ; then + export JAVA_HOME="${tomcat%%TOMCAT_VERSION%%_java_home}" +fi + +if [ -n "${tomcat%%TOMCAT_VERSION%%_java_version}" ] ; then + export JAVA_VERSION="${tomcat%%TOMCAT_VERSION%%_java_version}" +fi + +if [ -n "${tomcat%%TOMCAT_VERSION%%_java_vendor}" ] ; then + export JAVA_VENDOR="${tomcat%%TOMCAT_VERSION%%_java_vendor}" +fi + +if [ -n "${tomcat%%TOMCAT_VERSION%%_java_os}" ] ; then + export JAVA_OS="${tomcat%%TOMCAT_VERSION%%_java_os}" +fi + +java_command="%%LOCALBASE%%/bin/java \ + ${tomcat%%TOMCAT_VERSION%%_java_opts} \ + -Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS \ + -classpath %%TOMCAT_HOME%%/%%JAR_FILE%%:%%TOMCAT_HOME%%/bin/commons-logging-api.jar:${tomcat%%TOMCAT_VERSION%%_classpath} \ + -Dcatalina.base=${tomcat%%TOMCAT_VERSION%%_catalina_base} \ + -Dcatalina.home=${tomcat%%TOMCAT_VERSION%%_catalina_home} \ + -Djava.io.tmpdir=${tomcat%%TOMCAT_VERSION%%_catalina_tmpdir} \ + org.apache.catalina.startup.Bootstrap" + +log_args=">> ${tomcat%%TOMCAT_VERSION%%_stdout_log} \ + 2>> ${tomcat%%TOMCAT_VERSION%%_stderr_log} " + +procname="*java" +required_files="${tomcat%%TOMCAT_VERSION%%_catalina_home}/conf/server.xml" + +command="/usr/sbin/daemon" +flags="-p ${pidfile} ${java_command} start ${tomcat%%TOMCAT_VERSION%%_flags} ${log_args}" + +stop_cmd="tomcat%%TOMCAT_VERSION%%_stop" + +tomcat%%TOMCAT_VERSION%%_stop() { + rc_pid=$(check_pidfile $pidfile $procname) + + if [ -z "$rc_pid" ]; then + [ -n "$rc_fast" ] && return 0 + if [ -n "$pidfile" ]; then + echo "${name} not running? (check $pidfile)." + else + echo "${name} not running?" + fi + return 1 + fi + + echo "Stopping ${name}." + ${java_command} stop + tomcat_wait_max_for_pid ${tomcat%%TOMCAT_VERSION%%_stop_timeout} ${rc_pid} + kill -KILL ${rc_pid} 2> /dev/null && echo "Killed." + echo -n > ${pidfile} +} + +tomcat_wait_max_for_pid() { + _timeout=$1 + shift + _pid=$1 + _prefix= + while [ $_timeout -gt 0 ] ; do + echo -n ${_prefix:-"Waiting (max $_timeout secs) for PIDS: "}$_pid + _prefix=", " + sleep 2 + kill -0 $_pid 2> /dev/null || break + _timeout=$(($_timeout-2)) + done + if [ -n "$_prefix" ]; then + echo "." + fi +} + +run_rc_command "$1" |