_script-util.sh revision 3932
814920a099ee946453263e682c7bb2cda00b7983ludo#!/bin/sh
814920a099ee946453263e682c7bb2cda00b7983ludo#
54c356b692bd520cec70e821a41c97c39b76aac0mark# CDDL HEADER START
814920a099ee946453263e682c7bb2cda00b7983ludo#
bccf42a17033ee91fb24730fd124fce4e9fea7e7mark# The contents of this file are subject to the terms of the
814920a099ee946453263e682c7bb2cda00b7983ludo# Common Development and Distribution License, Version 1.0 only
77688956bec8d86f9dad1c7be6403cffe9830efamark# (the "License"). You may not use this file except in compliance
814920a099ee946453263e682c7bb2cda00b7983ludo# with the License.
814920a099ee946453263e682c7bb2cda00b7983ludo#
bccf42a17033ee91fb24730fd124fce4e9fea7e7mark# You can obtain a copy of the license at
814920a099ee946453263e682c7bb2cda00b7983ludo# trunk/opends/resource/legal-notices/OpenDS.LICENSE
814920a099ee946453263e682c7bb2cda00b7983ludo# or https://OpenDS.dev.java.net/OpenDS.LICENSE.
814920a099ee946453263e682c7bb2cda00b7983ludo# See the License for the specific language governing permissions
814920a099ee946453263e682c7bb2cda00b7983ludo# and limitations under the License.
814920a099ee946453263e682c7bb2cda00b7983ludo#
814920a099ee946453263e682c7bb2cda00b7983ludo# When distributing Covered Code, include this CDDL HEADER in each
814920a099ee946453263e682c7bb2cda00b7983ludo# file and include the License file at
814920a099ee946453263e682c7bb2cda00b7983ludo# trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
814920a099ee946453263e682c7bb2cda00b7983ludo# add the following below this CDDL HEADER, with the fields enclosed
814920a099ee946453263e682c7bb2cda00b7983ludo# by brackets "[]" replaced with your own identifying information:
814920a099ee946453263e682c7bb2cda00b7983ludo# Portions Copyright [yyyy] [name of copyright owner]
814920a099ee946453263e682c7bb2cda00b7983ludo#
814920a099ee946453263e682c7bb2cda00b7983ludo# CDDL HEADER END
814920a099ee946453263e682c7bb2cda00b7983ludo#
814920a099ee946453263e682c7bb2cda00b7983ludo#
814920a099ee946453263e682c7bb2cda00b7983ludo# Copyright 2008 Sun Microsystems, Inc.
814920a099ee946453263e682c7bb2cda00b7983ludo
814920a099ee946453263e682c7bb2cda00b7983ludo#
814920a099ee946453263e682c7bb2cda00b7983ludo# function that sets the java home
814920a099ee946453263e682c7bb2cda00b7983ludo#
77688956bec8d86f9dad1c7be6403cffe9830efamarkset_java_home_and_args() {
814920a099ee946453263e682c7bb2cda00b7983ludo if test -f "${INSTANCE_ROOT}/lib/set-java-home"
814920a099ee946453263e682c7bb2cda00b7983ludo then
814920a099ee946453263e682c7bb2cda00b7983ludo . "${INSTANCE_ROOT}/lib/set-java-home"
814920a099ee946453263e682c7bb2cda00b7983ludo fi
814920a099ee946453263e682c7bb2cda00b7983ludo if test -z "${OPENDS_JAVA_BIN}"
77688956bec8d86f9dad1c7be6403cffe9830efamark then
814920a099ee946453263e682c7bb2cda00b7983ludo if test -z "${OPENDS_JAVA_HOME}"
77688956bec8d86f9dad1c7be6403cffe9830efamark then
77688956bec8d86f9dad1c7be6403cffe9830efamark if test -z "${JAVA_BIN}"
77688956bec8d86f9dad1c7be6403cffe9830efamark then
77688956bec8d86f9dad1c7be6403cffe9830efamark if test -z "${JAVA_HOME}"
77688956bec8d86f9dad1c7be6403cffe9830efamark then
77688956bec8d86f9dad1c7be6403cffe9830efamark OPENDS_JAVA_BIN=`which java 2> /dev/null`
77688956bec8d86f9dad1c7be6403cffe9830efamark if test ${?} -eq 0
77688956bec8d86f9dad1c7be6403cffe9830efamark then
77688956bec8d86f9dad1c7be6403cffe9830efamark export OPENDS_JAVA_BIN
77688956bec8d86f9dad1c7be6403cffe9830efamark else
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "Please set OPENDS_JAVA_HOME to the root of a Java 5 (or later) installation"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "or edit the java.properties file and then run the dsjavaproperties script to"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "specify the java version to be used"
77688956bec8d86f9dad1c7be6403cffe9830efamark exit 1
77688956bec8d86f9dad1c7be6403cffe9830efamark fi
77688956bec8d86f9dad1c7be6403cffe9830efamark else
77688956bec8d86f9dad1c7be6403cffe9830efamark OPENDS_JAVA_BIN="${JAVA_HOME}/bin/java"
77688956bec8d86f9dad1c7be6403cffe9830efamark export OPENDS_JAVA_BIN
77688956bec8d86f9dad1c7be6403cffe9830efamark fi
77688956bec8d86f9dad1c7be6403cffe9830efamark else
77688956bec8d86f9dad1c7be6403cffe9830efamark OPENDS_JAVA_BIN="${JAVA_BIN}"
77688956bec8d86f9dad1c7be6403cffe9830efamark export OPENDS_JAVA_BIN
77688956bec8d86f9dad1c7be6403cffe9830efamark fi
77688956bec8d86f9dad1c7be6403cffe9830efamark else
77688956bec8d86f9dad1c7be6403cffe9830efamark OPENDS_JAVA_BIN="${OPENDS_JAVA_HOME}/bin/java"
77688956bec8d86f9dad1c7be6403cffe9830efamark export OPENDS_JAVA_BIN
77688956bec8d86f9dad1c7be6403cffe9830efamark fi
77688956bec8d86f9dad1c7be6403cffe9830efamark fi
77688956bec8d86f9dad1c7be6403cffe9830efamark}
77688956bec8d86f9dad1c7be6403cffe9830efamark
77688956bec8d86f9dad1c7be6403cffe9830efamark# Determine whether the detected Java environment is acceptable for use.
77688956bec8d86f9dad1c7be6403cffe9830efamarktest_java() {
77688956bec8d86f9dad1c7be6403cffe9830efamark if test -z "${OPENDS_JAVA_ARGS}"
77688956bec8d86f9dad1c7be6403cffe9830efamark then
77688956bec8d86f9dad1c7be6403cffe9830efamark "${OPENDS_JAVA_BIN}" org.opends.server.tools.InstallDS -t 2> /dev/null
77688956bec8d86f9dad1c7be6403cffe9830efamark RESULT_CODE=${?}
77688956bec8d86f9dad1c7be6403cffe9830efamark if test ${RESULT_CODE} -eq 13
77688956bec8d86f9dad1c7be6403cffe9830efamark then
77688956bec8d86f9dad1c7be6403cffe9830efamark # This is a particular error code that means that the Java version is 5
77688956bec8d86f9dad1c7be6403cffe9830efamark # but not supported. Let InstallDS to display the localized error message
77688956bec8d86f9dad1c7be6403cffe9830efamark "${OPENDS_JAVA_BIN}" org.opends.server.tools.InstallDS -t
77688956bec8d86f9dad1c7be6403cffe9830efamark exit 1
77688956bec8d86f9dad1c7be6403cffe9830efamark elif test ${RESULT_CODE} -ne 0
77688956bec8d86f9dad1c7be6403cffe9830efamark then
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "ERROR: The detected Java version could not be used. The detected"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "java binary is:"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "${OPENDS_JAVA_BIN}"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "You must specify the path to a valid Java 5.0 or higher version."
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "The procedure to follow is:"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "1. Delete the file ${INSTANCE_ROOT}/lib/set-java-home" if it exists.
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "2. Set the environment variable OPENDS_JAVA_HOME to the root of a valid "
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "Java 5.0 installation."
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "If you want to have specific java settings for each command line you must"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "follow the steps 3 and 4."
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "3. Edit the properties file specifying the java binary and the java arguments"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "for each command line. The java properties file is located in:"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "${INSTANCE_ROOT}/config/java.properties."
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "4. Run the command-line ${INSTANCE_ROOT}/bin/dsjavaproperties"
77688956bec8d86f9dad1c7be6403cffe9830efamark exit 1
77688956bec8d86f9dad1c7be6403cffe9830efamark fi
77688956bec8d86f9dad1c7be6403cffe9830efamark else
77688956bec8d86f9dad1c7be6403cffe9830efamark "${OPENDS_JAVA_BIN}" ${OPENDS_JAVA_ARGS} org.opends.server.tools.InstallDS -t 2> /dev/null
77688956bec8d86f9dad1c7be6403cffe9830efamark RESULT_CODE=${?}
77688956bec8d86f9dad1c7be6403cffe9830efamark if test ${RESULT_CODE} -eq 13
77688956bec8d86f9dad1c7be6403cffe9830efamark then
77688956bec8d86f9dad1c7be6403cffe9830efamark # This is a particular error code that means that the Java version is 5
77688956bec8d86f9dad1c7be6403cffe9830efamark # but not supported. Let InstallDS to display the localized error message
77688956bec8d86f9dad1c7be6403cffe9830efamark "${OPENDS_JAVA_BIN}" org.opends.server.tools.InstallDS -t
77688956bec8d86f9dad1c7be6403cffe9830efamark exit 1
77688956bec8d86f9dad1c7be6403cffe9830efamark elif test ${RESULT_CODE} -ne 0
77688956bec8d86f9dad1c7be6403cffe9830efamark then
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "ERROR: The detected Java version could not be used with the set of java"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "arguments ${OPENDS_JAVA_ARGS}."
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "The detected java binary is:"
814920a099ee946453263e682c7bb2cda00b7983ludo echo "${OPENDS_JAVA_BIN}"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "You must specify the path to a valid Java 5.0 or higher version."
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "The procedure to follow is:"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "1. Delete the file ${INSTANCE_ROOT}/lib/set-java-home" if it exists.
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "2. Set the environment variable OPENDS_JAVA_HOME to the root of a valid "
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "Java 5.0 installation."
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "If you want to have specific java settings for each command line you must"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "follow the steps 3 and 4."
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "3. Edit the properties file specifying the java binary and the java arguments"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "for each command line. The java properties file is located in:"
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "${INSTANCE_ROOT}/config/java.properties."
77688956bec8d86f9dad1c7be6403cffe9830efamark echo "4. Run the command-line ${INSTANCE_ROOT}/bin/dsjavaproperties"
814920a099ee946453263e682c7bb2cda00b7983ludo exit 1
814920a099ee946453263e682c7bb2cda00b7983ludo fi
814920a099ee946453263e682c7bb2cda00b7983ludo fi
814920a099ee946453263e682c7bb2cda00b7983ludo}
bccf42a17033ee91fb24730fd124fce4e9fea7e7mark
bccf42a17033ee91fb24730fd124fce4e9fea7e7mark# Explicitly set the PATH, LD_LIBRARY_PATH, LD_PRELOAD, and other important
bccf42a17033ee91fb24730fd124fce4e9fea7e7mark# system environment variables for security and compatibility reasons.
bccf42a17033ee91fb24730fd124fce4e9fea7e7markset_environment_vars() {
bccf42a17033ee91fb24730fd124fce4e9fea7e7mark PATH=/bin:/usr/bin
77688956bec8d86f9dad1c7be6403cffe9830efamark LD_LIBRARY_PATH=
814920a099ee946453263e682c7bb2cda00b7983ludo LD_LIBRARY_PATH_32=
77688956bec8d86f9dad1c7be6403cffe9830efamark LD_LIBRARY_PATH_64=
77688956bec8d86f9dad1c7be6403cffe9830efamark LD_PRELOAD=
77688956bec8d86f9dad1c7be6403cffe9830efamark LD_PRELOAD_32=
814920a099ee946453263e682c7bb2cda00b7983ludo LD_PRELOAD_64=
814920a099ee946453263e682c7bb2cda00b7983ludo export PATH LD_LIBRARY_PATH LD_LIBRARY_PATH_32 LD_LIBRARY_PATH_64 \
77688956bec8d86f9dad1c7be6403cffe9830efamark LD_PRELOAD LD_PRELOAD_32 LD_PRELOAD_34
814920a099ee946453263e682c7bb2cda00b7983ludo SCRIPT_NAME_ARG=-Dorg.opends.server.scriptName=${SCRIPT_NAME}
77688956bec8d86f9dad1c7be6403cffe9830efamark export SCRIPT_NAME_ARG
814920a099ee946453263e682c7bb2cda00b7983ludo}
814920a099ee946453263e682c7bb2cda00b7983ludo
814920a099ee946453263e682c7bb2cda00b7983ludo# Configure the appropriate CLASSPATH.
814920a099ee946453263e682c7bb2cda00b7983ludoset_classpath() {
814920a099ee946453263e682c7bb2cda00b7983ludo CLASSPATH=${INSTANCE_ROOT}/classes
77688956bec8d86f9dad1c7be6403cffe9830efamark for JAR in ${INSTALL_ROOT}/lib/*.jar
814920a099ee946453263e682c7bb2cda00b7983ludo do
814920a099ee946453263e682c7bb2cda00b7983ludo CLASSPATH=${CLASSPATH}:${JAR}
814920a099ee946453263e682c7bb2cda00b7983ludo done
814920a099ee946453263e682c7bb2cda00b7983ludo if [ "${INSTANCE_ROOT}" != "${INSTANCE_ROOT}" ]
77688956bec8d86f9dad1c7be6403cffe9830efamark then
814920a099ee946453263e682c7bb2cda00b7983ludo for JAR in ${INSTANCE_ROOT}/lib/*.jar
814920a099ee946453263e682c7bb2cda00b7983ludo do
814920a099ee946453263e682c7bb2cda00b7983ludo CLASSPATH=${CLASSPATH}:${JAR}
814920a099ee946453263e682c7bb2cda00b7983ludo done
77688956bec8d86f9dad1c7be6403cffe9830efamark fi
814920a099ee946453263e682c7bb2cda00b7983ludo export CLASSPATH
814920a099ee946453263e682c7bb2cda00b7983ludo}
814920a099ee946453263e682c7bb2cda00b7983ludo
814920a099ee946453263e682c7bb2cda00b7983ludoisVersionOrHelp() {
814920a099ee946453263e682c7bb2cda00b7983ludo for opt in `echo $*`
77688956bec8d86f9dad1c7be6403cffe9830efamark do
814920a099ee946453263e682c7bb2cda00b7983ludo if [ $opt = "-V" ] || [ $opt = "--version" ] ||
814920a099ee946453263e682c7bb2cda00b7983ludo [ $opt = "-H" ] || [ $opt = "--help" ] ||
814920a099ee946453263e682c7bb2cda00b7983ludo [ $opt = "-F" ] || [ $opt = "--fullversion" ]
814920a099ee946453263e682c7bb2cda00b7983ludo then
77688956bec8d86f9dad1c7be6403cffe9830efamark return 0
814920a099ee946453263e682c7bb2cda00b7983ludo fi
814920a099ee946453263e682c7bb2cda00b7983ludo done
814920a099ee946453263e682c7bb2cda00b7983ludo return 1
814920a099ee946453263e682c7bb2cda00b7983ludo}
814920a099ee946453263e682c7bb2cda00b7983ludo
814920a099ee946453263e682c7bb2cda00b7983ludoif test "${INSTALL_ROOT}" = ""
814920a099ee946453263e682c7bb2cda00b7983ludothen
814920a099ee946453263e682c7bb2cda00b7983ludo # Capture the current working directory so that we can change to it later.
77688956bec8d86f9dad1c7be6403cffe9830efamark # Then capture the location of this script and the Directory Server instance
77688956bec8d86f9dad1c7be6403cffe9830efamark # root so that we can use them to create appropriate paths.
77688956bec8d86f9dad1c7be6403cffe9830efamark WORKING_DIR=`pwd`
77688956bec8d86f9dad1c7be6403cffe9830efamark
77688956bec8d86f9dad1c7be6403cffe9830efamark cd "`dirname "${0}"`"
77688956bec8d86f9dad1c7be6403cffe9830efamark cd ..
77688956bec8d86f9dad1c7be6403cffe9830efamark INSTALL_ROOT=`pwd`
77688956bec8d86f9dad1c7be6403cffe9830efamark cd "${WORKING_DIR}"
814920a099ee946453263e682c7bb2cda00b7983ludofi
814920a099ee946453263e682c7bb2cda00b7983ludo
814920a099ee946453263e682c7bb2cda00b7983ludoif test "${INSTANCE_ROOT}" = ""
814920a099ee946453263e682c7bb2cda00b7983ludothen
8c0222f52ce4747428c3228cfa314eac7cd83044mark if [ -f ${INSTALL_ROOT}/configure ]
8c0222f52ce4747428c3228cfa314eac7cd83044mark then
8c0222f52ce4747428c3228cfa314eac7cd83044mark if [ -f /etc/opt/opends/instance.loc ]
8c0222f52ce4747428c3228cfa314eac7cd83044mark then
77688956bec8d86f9dad1c7be6403cffe9830efamark if [ "${SCRIPT_NAME}" = "configure" ]
77688956bec8d86f9dad1c7be6403cffe9830efamark then
814920a099ee946453263e682c7bb2cda00b7983ludo echo "${INSTALL_ROOT}/configure has already be run. Exiting."
814920a099ee946453263e682c7bb2cda00b7983ludo exit 0
77688956bec8d86f9dad1c7be6403cffe9830efamark fi
814920a099ee946453263e682c7bb2cda00b7983ludo INSTANCE_ROOT=`cat /etc/opt/opends/instance.loc`
else
if [ "${SCRIPT_NAME}" != "configure" ]
then
isVersionOrHelp $*
if [ $? -eq 1 ]
then
echo "No instance found. Run ${INSTALL_ROOT}/configure to create it."
exit 1
fi
fi
fi
else
if [ -f ${INSTALL_ROOT}/instance.loc ]
then
if cat ${INSTALL_ROOT}/instance.loc | grep '^/' > /dev/null
then
INSTANCE_ROOT=`cat ${INSTALL_ROOT}/instance.loc`
else
INSTANCE_ROOT=${INSTALL_ROOT}/`cat ${INSTALL_ROOT}/instance.loc`
fi
else
INSTANCE_ROOT=${INSTALL_ROOT}
fi
fi
if [ -d "${INSTANCE_ROOT}" ]
then
CURRENT_DIR=`pwd`
cd "${INSTANCE_ROOT}"
INSTANCE_ROOT=`pwd`
export INSTANCE_ROOT
cd "${CURRENT_DIR}"
fi
fi
if test "${SCRIPT_UTIL_CMD}" = "set-full-environment-and-test-java"
then
set_java_home_and_args
set_environment_vars
set_classpath
test_java
elif test "${SCRIPT_UTIL_CMD}" = "set-full-environment"
then
set_java_home_and_args
set_environment_vars
set_classpath
elif test "${SCRIPT_UTIL_CMD}" = "set-java-home-and-args"
then
set_java_home_and_args
elif test "${SCRIPT_UTIL_CMD}" = "set-environment-vars"
then
set_environment_vars
elif test "${SCRIPT_UTIL_CMD}" = "set-classpath"
then
set_classpath
elif test "${SCRIPT_UTIL_CMD}" = "test-java"
then
test_java
fi
current_user()
{
USER=`id`
CURRENT_IFS=${IFS}
IFS="()"
set -- ${USER}
echo $2
IFS=${CURRENT_IFS}
}
if [ "${SCRIPT_NAME}" != "configure" ]
then
# Perform check unless it is specified not to do it
if [ -z "$NO_CHECK" ]
then
NO_CHECK=0
fi
if [ ${NO_CHECK} -eq 0 ]
then
# No check for --version or --help option
isVersionOrHelp $*
if [ $? -eq 0 ]
then
NO_CHECK=1
fi
fi
if [ ${NO_CHECK} -eq 0 ]
then
set_classpath
# Check instance
CURRENT_USER="`current_user`"
if [ "${CHECK_VERSION}" = "yes" ]
then
OPT_CHECK_VERSION="--checkVersion"
else
OPT_CHECK_VERSION=""
fi
# Launch the CheckInstance process.
"${OPENDS_JAVA_BIN}" ${OPENDS_JAVA_ARGS} ${SCRIPT_NAME_ARG} -DINSTALL_ROOT=${INSTALL_ROOT} -DINSTANCE_ROOT=${INSTANCE_ROOT} org.opends.quicksetup.configurator.CheckInstance --currentUser ${CURRENT_USER} ${OPT_CHECK_VERSION}
# return part
RETURN_CODE=$?
if [ ${RETURN_CODE} -ne 0 ]
then
exit ${RETURN_CODE}
fi
fi
fi