# HG changeset patch # User Jie Kang # Date 1482265486 18000 # Node ID 89807d0b1dfedd3ebe56f268b9aa3b762cd0d395 # Parent d9578542296b237e361cf52fbfb6a5ef089653b0 Read environment variables from system/user profile in boot script. Backport of: http://icedtea.classpath.org/hg/thermostat/rev/c18fdca8ad65 PR3238 Reviewed-by: jerboaa Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2016-December/021885.html diff -r d9578542296b -r 89807d0b1dfe distribution/config/thermostatrc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/distribution/config/thermostatrc Tue Dec 20 15:24:46 2016 -0500 @@ -0,0 +1,68 @@ +#!/bin/bash +# +# Copyright 2012-2015 Red Hat, Inc. +# +# This file is part of Thermostat. +# +# Thermostat is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published +# by the Free Software Foundation; either version 2, or (at your +# option) any later version. +# +# Thermostat is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Thermostat; see the file COPYING. If not see +# . +# +# Linking this code with other modules is making a combined work +# based on this code. Thus, the terms and conditions of the GNU +# General Public License cover the whole combination. +# +# As a special exception, the copyright holders of this code give +# you permission to link this code with independent modules to +# produce an executable, regardless of the license terms of these +# independent modules, and to copy and distribute the resulting +# executable under terms of your choice, provided that you also +# meet, for each linked independent module, the terms and conditions +# of the license of that module. An independent module is a module +# which is not derived from or based on this code. If you modify +# this code, you may extend this exception to your version of the +# library, but you are not obligated to do so. If you do not wish +# to do so, delete this exception statement from your version. +# +##################################################################### +# +# Environment variables for the system Thermostat profile. You +# can assume that THERMOSTAT_HOME variable is correctly set and you +# may override system variables via a user profile in +# USER_THERMOSTAT_HOME/etc/thermostatrc. +# +##################################################################### + +# +# Extra jar files which need to be on the classpath when +# Thermostat boots. +# +THERMOSTAT_EXT_BOOT_CLASSPATH="@java.home@/../lib/tools.jar" +# FIXME: Remove once jfreechart is a real OSGi bundle upstream +THERMOSTAT_EXT_BOOT_CLASSPATH="${THERMOSTAT_EXT_BOOT_CLASSPATH}:${THERMOSTAT_HOME}/libs/jfreechart-@jfreechart.version@.jar" +THERMOSTAT_EXT_BOOT_CLASSPATH="${THERMOSTAT_EXT_BOOT_CLASSPATH}:${THERMOSTAT_HOME}/libs/jcommon-@jcommon.version@.jar" +# Needed to parse web.xml files without network connection See PR 2029. +THERMOSTAT_EXT_BOOT_CLASSPATH="${THERMOSTAT_EXT_BOOT_CLASSPATH}:${THERMOSTAT_HOME}/plugins/embedded-web-endpoint/jetty-schemas-@jetty-schemas.version@.jar" +export THERMOSTAT_EXT_BOOT_CLASSPATH + +# +# Extra java options +# +#THERMOSTAT_EXT_JAVA_OPTS="-Xint -ea" +#export THERMOSTAT_EXT_JAVA_OPTS + +# +# Extra options passed on to the Thermostat main class +# +#THERMOSTAT_EXT_OPTS="--ignore-bundle-versions" +#export THERMOSTAT_EXT_OPTS diff -r d9578542296b -r 89807d0b1dfe distribution/pom.xml --- a/distribution/pom.xml Tue Nov 29 11:22:49 2016 +0100 +++ b/distribution/pom.xml Tue Dec 20 15:24:46 2016 -0500 @@ -167,6 +167,7 @@ agent.auth web.auth ssl.properties + thermostatrc thermostat-users.properties thermostat-roles.properties thermostat_jaas.conf diff -r d9578542296b -r 89807d0b1dfe distribution/scripts/thermostat --- a/distribution/scripts/thermostat Tue Nov 29 11:22:49 2016 +0100 +++ b/distribution/scripts/thermostat Tue Dec 20 15:24:46 2016 -0500 @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright 2012-2014 Red Hat, Inc. +# Copyright 2012-2015 Red Hat, Inc. # # This file is part of Thermostat. # @@ -35,39 +35,47 @@ # to do so, delete this exception statement from your version. # ##################################################################### -# -# Some necessary variables. -JAVA_DIR="@java.dir@" -JAVA="@java.home@/bin/java" -if [ x"$THERMOSTAT_INSTALL_DIR" = x ] ; then - THERMOSTAT_INSTALL_DIR="@thermostat.home@" -fi -# Not always are installation directory and thermostat home one and -# the same location. -if [ x"$THERMOSTAT_HOME" = x ] ; then - THERMOSTAT_HOME=${THERMOSTAT_INSTALL_DIR} +if [ x"${THERMOSTAT_HOME}" = x ]; then + THERMOSTAT_HOME="@thermostat.home@" export THERMOSTAT_HOME fi -THERMOSTAT_LIBS="${THERMOSTAT_HOME}/libs" +if [ x"${USER_THERMOSTAT_HOME}" = x ]; then + USER_THERMOSTAT_HOME="@user.thermostat.home@" + export USER_THERMOSTAT_HOME +fi -# need tools from the JVM -TOOLS_JAR="@java.home@/../lib/tools.jar" +# Source system thermostat profile +. ${THERMOSTAT_HOME}/etc/thermostatrc +# Source user thermostat profile (if any) +if [ -f ${USER_THERMOSTAT_HOME}/etc/thermostatrc ]; then + . ${USER_THERMOSTAT_HOME}/etc/thermostatrc +fi -JLINE_LOG_ARG="-Djline.log.jul=true" +# NOTE: The following variables come from the system/user +# profiles (if any) +# +# THERMOSTAT_EXT_BOOT_CLASSPATH +# THERMOSTAT_EXT_JAVA_OPTS +# THERMOSTAT_EXT_OPTS + +JAVA="@java.home@/bin/java" +THERMOSTAT_LIBS="${THERMOSTAT_HOME}/libs" # This is the minimal boot classpath thermostat needs. Other dependencies # will get started by the OSGi framework once that's up. -SERVICE_CLASSPATH="${THERMOSTAT_LIBS}/org.apache.felix.framework-@felix.framework.version@.jar" -SERVICE_CLASSPATH="${SERVICE_CLASSPATH}:${THERMOSTAT_LIBS}/thermostat-launcher-@project.version@.jar" -SERVICE_CLASSPATH="${SERVICE_CLASSPATH}:${THERMOSTAT_LIBS}/thermostat-main-@project.version@.jar" -SERVICE_CLASSPATH="${SERVICE_CLASSPATH}:${THERMOSTAT_LIBS}/thermostat-shared-config-@project.version@.jar" -# FIXME: Remove once jfreechart is a real OSGi bundle upstream -SERVICE_CLASSPATH="${SERVICE_CLASSPATH}:${THERMOSTAT_LIBS}/jfreechart-@jfreechart.version@.jar" -SERVICE_CLASSPATH="${SERVICE_CLASSPATH}:${THERMOSTAT_LIBS}/jcommon-@jcommon.version@.jar" -# Needed to parse web.xml files without network connection See PR 2029. -SERVICE_CLASSPATH="${SERVICE_CLASSPATH}:${THERMOSTAT_HOME}/plugins/embedded-web-endpoint/jetty-schemas-@jetty-schemas.version@.jar" -SERVICE_CLASSPATH="${TOOLS_JAR}:${SERVICE_CLASSPATH}" +BOOT_CLASSPATH="${THERMOSTAT_LIBS}/org.apache.felix.framework-@felix.framework.version@.jar" +BOOT_CLASSPATH="${BOOT_CLASSPATH}:${THERMOSTAT_LIBS}/thermostat-launcher-@project.version@.jar" +BOOT_CLASSPATH="${BOOT_CLASSPATH}:${THERMOSTAT_LIBS}/thermostat-main-@project.version@.jar" +BOOT_CLASSPATH="${BOOT_CLASSPATH}:${THERMOSTAT_LIBS}/thermostat-shared-config-@project.version@.jar" + +# Append extra class path entries coming from the profiles +if [ ! -z ${THERMOSTAT_EXT_BOOT_CLASSPATH} ]; then + BOOT_CLASSPATH="${BOOT_CLASSPATH}:${THERMOSTAT_EXT_BOOT_CLASSPATH}" +fi + + +JLINE_LOG_ARG="-Djline.log.jul=true" # Duplicated in ThermostatVmMainLabelDecorator THERMOSTAT_MAIN="com.redhat.thermostat.main.Thermostat" @@ -111,19 +119,23 @@ done # Finally run thermostat (optionally in the background) -if [ $RUN_IN_BG -eq 1 ]; then +if [ ${RUN_IN_BG} -eq 1 ]; then # The thermostat-agent-sysd script uses this. - if [ x"$PID_FILE" = "x" ]; then - usage + if [ x"${PID_FILE}" = "x" ]; then + usage else - ${JAVA} ${JLINE_LOG_ARG} "${JAVA_ARGS[@]}" -cp ${SERVICE_CLASSPATH} ${THERMOSTAT_MAIN} "${ARGS[@]}" & + "${JAVA}" ${THERMOSTAT_EXT_JAVA_OPTS} ${JLINE_LOG_ARG} "${JAVA_ARGS[@]}" \ + -cp "${BOOT_CLASSPATH}" \ + ${THERMOSTAT_MAIN} ${THERMOSTAT_EXT_OPTS} "${ARGS[@]}" & retval=$? - echo $! > $PID_FILE - retval=$(( $retval + $? )) + echo $! > ${PID_FILE} + retval=$(( ${retval} + $? )) fi else - ${JAVA} ${JLINE_LOG_ARG} "${JAVA_ARGS[@]}" -cp ${SERVICE_CLASSPATH} ${THERMOSTAT_MAIN} "${ARGS[@]}" + "${JAVA}" ${THERMOSTAT_EXT_JAVA_OPTS} ${JLINE_LOG_ARG} "${JAVA_ARGS[@]}" \ + -cp "${BOOT_CLASSPATH}" \ + ${THERMOSTAT_MAIN} ${THERMOSTAT_EXT_OPTS} "${ARGS[@]}" retval=$? fi -exit $retval +exit ${retval} diff -r d9578542296b -r 89807d0b1dfe pom.xml --- a/pom.xml Tue Nov 29 11:22:49 2016 +0100 +++ b/pom.xml Tue Dec 20 15:24:46 2016 -0500 @@ -135,6 +135,7 @@ target 1.7 ${user.dir}/distribution/target/image/ + $HOME/.thermostat-1.6 thermostat