summaryrefslogtreecommitdiffstats
path: root/www/jakarta-tomcat
diff options
context:
space:
mode:
authorznerd <znerd@FreeBSD.org>2002-02-21 20:06:55 +0000
committerznerd <znerd@FreeBSD.org>2002-02-21 20:06:55 +0000
commite8f329068e9b1a6ac13d80bf19ea3927a33cd348 (patch)
tree1db793cbcf9f446614f31c5e8256870a0d0150be /www/jakarta-tomcat
parentf1f2277d09bcf6745d81a8872f5609f5804af09a (diff)
downloadFreeBSD-ports-e8f329068e9b1a6ac13d80bf19ea3927a33cd348.zip
FreeBSD-ports-e8f329068e9b1a6ac13d80bf19ea3927a33cd348.tar.gz
Cleaned things up. Made things working :-) Both the startup script
in ${PREFIX}/etc/rc.d and the control script in ${PREFIX}/bin have been refactored and now actually work very well. Using the 'www' user and group, creating them if they don't exist. I've used the same approach as www/apache13. STDOUT_LOG and STDERR_LOG are now fixed (no ?= anymore) since the package deinstall does not support a different location. This fixes the first half of PR 28624. See: http://www.freebsd.org/cgi/query-pr.cgi?pr=34931 Reported by: Kees Jan Koster <k.j.koster@kpn.com>
Diffstat (limited to 'www/jakarta-tomcat')
-rw-r--r--www/jakarta-tomcat/Makefile56
-rw-r--r--www/jakarta-tomcat/files/jakarta-tomcat.sh10
-rw-r--r--www/jakarta-tomcat/files/tomcatctl144
-rw-r--r--www/jakarta-tomcat/pkg-deinstall25
-rw-r--r--www/jakarta-tomcat/pkg-plist2
5 files changed, 144 insertions, 93 deletions
diff --git a/www/jakarta-tomcat/Makefile b/www/jakarta-tomcat/Makefile
index 2fe0c1d..2a8597c 100644
--- a/www/jakarta-tomcat/Makefile
+++ b/www/jakarta-tomcat/Makefile
@@ -7,6 +7,7 @@
PORTNAME= jakarta-tomcat
PORTVERSION= 3.2.4
+PORTREVISION= 1
CATEGORIES= www java
MASTER_SITES= http://jakarta.apache.org/builds/jakarta-tomcat/release/v${PORTVERSION}/bin/ \
http://www.metaverse.nl/~ernst/ \
@@ -25,40 +26,34 @@ LOG_DIR= ${APP_HOME}/logs
PLIST_SUB+= T=${APP_HOME:S/^${PREFIX}\///}
APP_TITLE= Jakarta Tomcat
APP_SHORTNAME= tomcat
-APPCTL_NAME= ${APP_SHORTNAME}ctl
-CTL_SCRIPT= ${PREFIX}/bin/${APPCTL_NAME}
+CONTROL_SCRIPT_NAME= ${APP_SHORTNAME}ctl
+CONTROL_SCRIPT= ${PREFIX}/bin/${CONTROL_SCRIPT_NAME}
STARTUP_ORDER?= 020
STARTUP_SCRIPT= ${PREFIX}/etc/rc.d/${STARTUP_ORDER}.${PORTNAME}.sh
JAVA_HOME?= ${LOCALBASE}/jdk1.3.1
JAVA_PORT?= ${PORTSDIR}/java/jdk13
-USER_NAME?= ${APP_SHORTNAME}
-GROUP_NAME?= ${USER_NAME}
-USER_ID?= 7103
-GROUP_ID?= ${USER_ID}
+USER_NAME= www
+GROUP_NAME= www
PW?= /usr/sbin/pw
LISTEN_PORT?= 8080
-STDOUT_LOG?= ${LOG_DIR}/stdout.log
-STDERR_LOG?= ${LOG_DIR}/stderr.log
+STDOUT_LOG= ${LOG_DIR}/stdout.log
+STDERR_LOG= ${LOG_DIR}/stderr.log
AUTO_START?= NO
pre-install:
@${ECHO_CMD} "Installation settings:"
@${ECHO_CMD} " Destination directory: ${APP_HOME}"
- @${ECHO_CMD} " Control script location: ${CTL_SCRIPT}"
+ @${ECHO_CMD} " Control script location: ${CONTROL_SCRIPT}"
@${ECHO_CMD} " Startup script location: ${STARTUP_SCRIPT}"
@${ECHO_CMD} " Location of JDK: ${JAVA_HOME}"
@${ECHO_CMD} " Location of Java port: ${JAVA_PORT}"
- @${ECHO_CMD} " Running as (user/group): ${USER_NAME}/${GROUP_NAME} (${USER_ID}:${GROUP_ID})"
+ @${ECHO_CMD} " Running as (user/group): ${USER_NAME}/${GROUP_NAME}"
@${ECHO_CMD} " Port to listen at: ${LISTEN_PORT}"
@${ECHO_CMD} " Logfile stdout: ${STDOUT_LOG}"
@${ECHO_CMD} " Logfile stderr: ${STDERR_LOG}"
@${ECHO_CMD} " Starting after install: ${AUTO_START}"
do-install:
- @# Add the group and the user if they do not exist
- ${PW} groupadd -n ${GROUP_NAME} -g ${GROUP_ID} || true
- ${PW} useradd -n ${USER_NAME} -u ${USER_ID} -g ${GROUP_NAME} -c "${APP_TITLE} account" -d ${APP_HOME} -s ${SH} -h - || true
-
@# Create the destination directory
${MKDIR} ${APP_HOME}
@@ -75,10 +70,17 @@ do-install:
> ${WRKDIR}/workers.properties
${MV} ${WRKDIR}/workers.properties ${APP_HOME}/conf/workers.properties
+ @# Install the startup script
+ ${CAT} ${FILESDIR}/${PORTNAME}.sh \
+ | ${SED} "/%%USER_NAME%%/s//${USER_NAME}/" \
+ | ${SED} "/%%APP_SHORTNAME%%/s//${APP_SHORTNAME}/" \
+ | ${SED} "/%%CONTROL_SCRIPT%%/s//${CONTROL_SCRIPT:S/\//\\\//g}/" \
+ > ${STARTUP_SCRIPT}
+ ${CHMOD} 0554 ${STARTUP_SCRIPT}
+
@# Install the control script
- ${CAT} ${FILESDIR}/${APPCTL_NAME} \
+ ${CAT} ${FILESDIR}/${CONTROL_SCRIPT_NAME} \
| ${SED} "/%%PORTNAME%%/s//${PORTNAME}/" \
- | ${SED} "/%%PORTVERSION%%/s//${PORTVERSION}/" \
| ${SED} "/%%APP_TITLE%%/s//${APP_TITLE}/" \
| ${SED} "/%%APP_SHORTNAME%%/s//${APP_SHORTNAME}/" \
| ${SED} "/%%APP_HOME%%/s//${APP_HOME:S/\//\\\//g}/" \
@@ -88,13 +90,9 @@ do-install:
| ${SED} "/%%USER_NAME%%/s//${USER_NAME}/" \
| ${SED} "/%%STDOUT_LOG%%/s//${STDOUT_LOG:S/\//\\\//g}/" \
| ${SED} "/%%STDERR_LOG%%/s//${STDERR_LOG:S/\//\\\//g}/" \
- > ${CTL_SCRIPT}
- ${CHOWN} ${USER_NAME}:${GROUP_NAME} ${CTL_SCRIPT}
- ${CHMOD} 6554 ${CTL_SCRIPT}
-
- @# Install the startup script
- ${CP} ${FILESDIR}/${PORTNAME}.sh ${STARTUP_SCRIPT}
- ${CHMOD} 0554 ${STARTUP_SCRIPT}
+ > ${CONTROL_SCRIPT}
+ ${CHOWN} ${USER_NAME}:${GROUP_NAME} ${CONTROL_SCRIPT}
+ ${CHMOD} 6554 ${CONTROL_SCRIPT}
@# Create the directories that the application will create at the
@# first run
@@ -115,21 +113,21 @@ do-install:
@# Install the man page
.if !defined(NOPORTDOCS)
- ${CAT} ${FILESDIR}/${APPCTL_NAME}.1 \
+ ${CAT} ${FILESDIR}/${CONTROL_SCRIPT_NAME}.1 \
| ${SED} "/%%PREFIX%%/s//${PREFIX:S/\//\\\//g}/" \
- > ${WRKDIR}/${APPCTL_NAME}.1
- ${INSTALL_MAN} ${WRKDIR}/${APPCTL_NAME}.1 ${MANPREFIX}/man/man1
+ > ${WRKDIR}/${CONTROL_SCRIPT_NAME}.1
+ ${INSTALL_MAN} ${WRKDIR}/${CONTROL_SCRIPT_NAME}.1 ${MANPREFIX}/man/man1
.endif
post-install:
@${ECHO_CMD} "${APP_TITLE} ${PORTVERSION} has been installed in ${APP_HOME}."
- @${ECHO_CMD} "If you would like a user to be able to use ${APPCTL_NAME}, then put this user in the group ${GROUP_NAME}."
+ @${ECHO_CMD} "If you would like a user to be able to use ${CONTROL_SCRIPT_NAME}, then put this user in the group ${GROUP_NAME}."
.if !defined(NOPORTDOCS)
- @${ECHO_CMD} "Use 'man ${APPCTL_NAME}' for information about starting and stopping ${APP_TITLE}."
+ @${ECHO_CMD} "Use 'man ${CONTROL_SCRIPT_NAME}' for information about starting and stopping ${APP_TITLE}."
.endif
.if ${AUTO_START} == "YES"
@${ECHO_CMD} "Starting ${APP_TITLE}..."
- @${CTL_SCRIPT} start || true
+ @${CONTROL_SCRIPT} start || true
.endif
.include <bsd.port.mk>
diff --git a/www/jakarta-tomcat/files/jakarta-tomcat.sh b/www/jakarta-tomcat/files/jakarta-tomcat.sh
index d67a001..cbd3e16f 100644
--- a/www/jakarta-tomcat/files/jakarta-tomcat.sh
+++ b/www/jakarta-tomcat/files/jakarta-tomcat.sh
@@ -3,21 +3,17 @@
# Set some variables
USER_NAME=%%USER_NAME%%
MYSELF=`basename $0`
-CONTROL_SCRIPT=%%CONTROL_SCRIPT%%
case "$1" in
start)
- su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% start" > /dev/null ; echo -n
+ su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% start" && echo -n ' %%APP_SHORTNAME%%'
;;
stop)
- su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% stop"
- ;;
- restart)
- su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% restart"
+ su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% stop" && echo -n ' %%APP_SHORTNAME%%'
;;
*)
echo ""
- echo "Usage: ${MYSELF} { start | stop | restart }"
+ echo "Usage: ${MYSELF} { start | stop }"
echo ""
exit 64
;;
diff --git a/www/jakarta-tomcat/files/tomcatctl b/www/jakarta-tomcat/files/tomcatctl
index 5ba640f..a28cac7 100644
--- a/www/jakarta-tomcat/files/tomcatctl
+++ b/www/jakarta-tomcat/files/tomcatctl
@@ -1,9 +1,7 @@
#!/bin/sh
# Set some variables
-VERSION=%%PORTVERSION%%
APP_HOME=%%APP_HOME%%
-USER_NAME=%%USER_NAME%%
STDOUT_LOG=%%STDOUT_LOG%%
STDERR_LOG=%%STDERR_LOG%%
JAR_FILE=${APP_HOME}/lib/webserver.jar
@@ -22,13 +20,6 @@ if [ -f ${JAVA_HOME}/lib/tools.jar ] ; then
CLASSPATH=${CLASSPATH}:${JAVA_HOME}/lib/tools.jar
fi
-# Check if we're being run as a shell script or as an rc script
-if [ ${MYSELF} = "%%RC_SCRIPT_NAME%%" ]; then
- AS_RC_SCRIPT=yes
-else
- AS_RC_SCRIPT=no
-fi
-
# Check if the JAVA_HOME directory is defined, otherwise set it to the
# fallback default
if [ "${JAVA_HOME}a" = "a" ]; then
@@ -36,64 +27,119 @@ if [ "${JAVA_HOME}a" = "a" ]; then
fi
JAVA_CMD=${JAVA_HOME}/bin/java
-# Function that starts the application
-start() {
+
+##############################################################################
+# Function that shows an error message
+#
+# This function is called by the 'checks' function
+#
+# Parameters:
+# 1: The message to be displayed.
+
+error() {
+ echo -n "%%APP_SHORTNAME%%: ERROR: "
+ echo $1
+}
+
+
+##############################################################################
+# Function that performs all checks necessary for starting or stopping the
+# application.
+#
+# This function is called by the 'start' and 'stop' functions
+#
+# This function expects no parameters
+
+checks() {
# Make sure the application directory does exist
if [ ! -d ${APP_HOME} ]; then
- if [ "${AS_RC_SCRIPT}" = "yes" ]; then
- echo ""
- fi
- echo "%%APP_SHORTNAME%%: ERROR: Unable to find %%APP_TITLE%% home directory at ${APP_HOME}."
+ error "Unable to find %%APP_TITLE%% home directory at ${APP_HOME}."
exit 2
fi
# Make sure the application JAR file exists
if [ ! -r ${JAR_FILE} ]; then
- if [ "${AS_RC_SCRIPT}" = "yes" ]; then
- echo ""
- fi
- echo "%%APP_SHORTNAME%%: ERROR: Unable to find %%APP_TITLE%% JAR file at ${JAR_FILE}."
+ error "Unable to find %%APP_TITLE%% JAR file at ${JAR_FILE}."
exit 3
fi
# Make sure the Java VM can be found
if [ ! -x ${JAVA_CMD} ]; then
- if [ "${AS_RC_SCRIPT}" = "yes" ]; then
- echo ""
- fi
- echo "%%APP_SHORTNAME%%: ERROR: Unable to find Java VM at ${JAVA_HOME}."
+ error "Unable to find Java VM at ${JAVA_HOME}."
exit 4
fi
+}
- if [ "${AS_RC_SCRIPT}" = "yes" ]; then
- echo -n " %%APP_SHORTNAME%%"
- fi
- su - ${USER_NAME} -c "(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}"
+
+##############################################################################
+# Functions that calls the application with the specified parameter
+#
+# Parameters:
+# 1: The argument to pass to the application (optional)
+
+app() {
+ (cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat $1 &) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}
+}
+
+
+##############################################################################
+# Function that starts the application
+#
+# This function is called from the main function
+#
+# This function expects no parameters
+
+start() {
+ # Perform the checks
+ checks
+
+ # Stop the application
+ app
}
+
+##############################################################################
# Function that stops the application
+#
+# This function is called from the main function
+#
+# This function expects no parameters
+
stop() {
- if [ "${AS_RC_SCRIPT}" = "yes" ]; then
- echo -n " %%APP_SHORTNAME%%"
- fi
- su - ${USER_NAME} -c "(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat -stop) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}"
+ # Perform the checks
+ checks
+
+ # Stop the application
+ app -stop
}
-case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart)
- stop
- start
- ;;
- *)
- echo ""
- echo "Usage: ${MYSELF} { start | stop | restart }"
- echo ""
- exit 64
- ;;
-esac
+
+##############################################################################
+# Main function. This function calls the 'start' and 'stop' functions.
+#
+# Parameters:
+# 1: The argument to this shell script
+
+main() {
+ case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart)
+ stop
+ start
+ ;;
+ *)
+ echo "Usage: ${MYSELF} { start | stop | restart }"
+ exit 64
+ ;;
+ esac
+}
+
+
+# Call the main function and exit
+main $1
+exit 0
diff --git a/www/jakarta-tomcat/pkg-deinstall b/www/jakarta-tomcat/pkg-deinstall
index 3a30715..3a13136 100644
--- a/www/jakarta-tomcat/pkg-deinstall
+++ b/www/jakarta-tomcat/pkg-deinstall
@@ -1,8 +1,21 @@
#!/bin/sh
-PID_FILE=/var/run/jakarta-tomcat.pid
-if [ -e ${PID_FILE} ]; then
- echo -n "Jakarta Tomcat is still running."
- /bin/kill `cat ${PID_FILE}`
- rm -f ${PID_FILE}
- echo " Stopped."
+#
+# This script does the following.
+#
+# Checks if the 'www' user exists. If it does, then it displays
+# a message.
+#
+# $FreeBSD$
+#
+
+# Make sure we're called during the 'make deinstall' process
+if [ "$2" != "POST-DEINSTALL" ]; then
+ exit 0
fi
+
+# If the user exists, then display a message
+if pw usershow "www" 2>/dev/null 1>&2; then
+ echo "To delete the www user permanently, use 'pw userdel www'"
+fi
+
+exit 0
diff --git a/www/jakarta-tomcat/pkg-plist b/www/jakarta-tomcat/pkg-plist
index 492325c..23a5441 100644
--- a/www/jakarta-tomcat/pkg-plist
+++ b/www/jakarta-tomcat/pkg-plist
@@ -410,5 +410,3 @@ etc/rc.d/020.jakarta-tomcat.sh
@dirrm %%T%%/conf
@dirrm %%T%%/bin
@dirrm %%T%%
-@unexec pw groupdel tomcat || true
-@unexec pw userdel tomcat || true
OpenPOWER on IntegriCloud