3 # Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
5 # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
6 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
8 # This library is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU Lesser General Public
10 # License as published by the Free Software Foundation; either
11 # version 2.1 of the License.
13 # This library is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 # Lesser General Public License for more details.
18 # You should have received a copy of the GNU Lesser General Public
19 # License along with this library; if not, write to the Free Software
20 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
25 # File : runLightSalome.sh
26 # Author : Vadim SANDLER, Open CASCADE S.A.S, vadim.sandler@opencascade.com
30 # function show_usage() : print help an exit
35 if [ $# -gt 0 ] ; then RET=$1 ; fi
36 local MOVE1="echo -en \\033[35G"
37 local MOVE2="echo -en \\033[22G"
39 echo "Run standalone SALOME desktop".
41 echo "Usage: $(basename $0) [options]"
44 echo " * all options have both short and long format;"
45 echo " * some options require additional parameter (below referenced as <param>)"
46 echo " which should be separated by = symbol from the option itself."
49 ${MOVE2} ; echo -en "(-h)"
50 ${MOVE1} ; echo "Display this information and exit."
52 ${MOVE2} ; echo -en "(-v)"
53 ${MOVE1} ; echo "Print SALOME version and exit."
54 echo -en " --modules=<param>"
55 ${MOVE2} ; echo -en "(-m)"
56 ${MOVE1} ; echo "List of modules, separated by comma, to be used within SALOME session."
59 echo " $(basename $0) --modules=LIGHT,PYLIGHT"
65 # function show_version() : print SALOME version an exit
70 local DIR=$(dirname $0)
71 if [ -z "${DIR}" ] ; then DIR=. ; fi
72 if [ -f ${DIR}/VERSION ] ; then
76 echo "Error: can't find VERSION file" > /dev/stderr
84 # function option_modules() : process --modules / -m command line option
88 local MODS=`echo $1 | awk -F "=" '{ if(NF>1) print $2 ; else print $1 }'`
89 if [ "X${MODS}" = "X" ] ; then
91 echo "Error: Please, specify list of modules" > /dev/stderr
95 MODULES=`echo ${MODS} | sed -e "s%,% %g"`
101 # function run_light_salome(): run SALOME
109 # process command line options
113 while getopts ":-:hvm:" OPTION "$@" ; do
114 if [ "${OPTION}" = "-" ] ; then
117 version ) show_version ;;
118 modules* ) option_modules "${OPTARG}" ;;
119 * ) echo "!!!Wrong option!!!" ; exit 1 ;;
125 m* ) option_modules "${OPTARG}" ;;
126 ? ) echo "!!!Wrong option!!!" ; exit 1 ;;
130 shift $((OPTIND - 1))
133 # by default try to detect all available modules
136 if [ -z "${MODULES}" ] ; then
139 for ENVVAR in `env | awk -F= '{print $1}' | grep _ROOT_DIR` ; do
140 local MOD=`echo $ENVVAR | awk -F_ '{print $1}'`
141 local LMOD=`echo ${MOD} | tr 'A-Z' 'a-z'`
142 ROOTDIR=`printenv ${ENVVAR}`
143 if [ -f ${ROOTDIR}/share/salome/resources/${LMOD}/LightApp.xml ] || [ -f ${ROOTDIR}/share/salome/resources/LightApp.xml ] ; then
144 MODULES="${MODULES} ${MOD}"
150 # initial environment
153 if [ -z "${LightAppResources}" ] ; then
154 export LightAppResources=${GUI_ROOT_DIR}/share/salome/resources/gui
156 export LightAppResources=${LightAppResources}:${GUI_ROOT_DIR}/share/salome/resources/gui
159 MODULES="KERNEL GUI ${MODULES}"
162 # exclude modules duplication
167 for MOD in ${MODULES} ; do
168 echo ${MODS} | grep -E "\<${MOD}\>" >/dev/null 2>&1
169 if [ "$?" == "1" ] ; then
170 MODS="${MODS} ${MOD}"
176 # set additional environment
179 local PVERSION=`python -c "import sys; print sys.version[:3]" 2>/dev/null`
182 local MY_LD_LIBRARY_PATH=""
183 local MY_PYTHONPATH=""
185 for MOD in ${MODULES} ; do
186 local ROOTDIR=`printenv ${MOD}_ROOT_DIR`
187 if [ -z "${ROOTDIR}" ] ; then continue ; fi
188 local LMOD=`echo ${MOD} | tr 'A-Z' 'a-z'`
189 if [ -d ${ROOTDIR}/bin/salome ] ; then
190 MY_PATH=${MY_PATH}:${ROOTDIR}/bin/salome
192 if [ -d ${ROOTDIR}/lib/salome ] ; then
193 MY_LD_LIBRARY_PATH=${MY_LD_LIBRARY_PATH}:${ROOTDIR}/lib/salome
195 if [ "${PVERSION}" != "" ] ; then
196 if [ -d ${ROOTDIR}/bin/salome ] ; then
197 MY_PYTHONPATH=${MY_PYTHONPATH}:${ROOTDIR}/bin/salome
199 if [ -d ${ROOTDIR}/lib/salome ] ; then
200 MY_PYTHONPATH=${MY_PYTHONPATH}:${ROOTDIR}/lib/salome
202 if [ -d ${ROOTDIR}/lib/python${PVERSION}/site-packages/salome ] ; then
203 MY_PYTHONPATH=${MY_PYTHONPATH}:${ROOTDIR}/lib/python${PVERSION}/site-packages/salome
206 if [ -f ${ROOTDIR}/share/salome/resources/${LMOD}/LightApp.xml ] ; then
207 export LightAppConfig=${LightAppConfig}:${ROOTDIR}/share/salome/resources/${LMOD}
208 elif [ -f ${ROOTDIR}/share/salome/resources/LightApp.xml ] ; then
209 export LightAppConfig=${LightAppConfig}:${ROOTDIR}/share/salome/resources
211 export SALOMEPATH=${SALOMEPATH}:${ROOTDIR}
214 PATH=${MY_PATH}:${PATH}
215 PATH=`echo ${PATH} | sed -e "s,^:,,;s,:$,,;s,::\+,:,g"`
217 LD_LIBRARY_PATH=${MY_LD_LIBRARY_PATH}:${LD_LIBRARY_PATH}
218 LD_LIBRARY_PATH=`echo ${LD_LIBRARY_PATH} | sed -e "s,^:,,;s,:$,,;s,::\+,:,g"`
219 export LD_LIBRARY_PATH
220 PYTHONPATH=${MY_PYTHONPATH}:${PYTHONPATH}
221 PYTHONPATH=`echo ${PYTHONPATH} | sed -e "s,^:,,;s,:$,,;s,::\+,:,g"`
223 LightAppConfig=`echo ${LightAppConfig} | sed -e "s,^:,,;s,:$,,;s,::\+,:,g"`
224 export LightAppConfig
225 SALOMEPATH=`echo ${SALOMEPATH} | sed -e "s,^:,,;s,:$,,;s,::\+,:,g"`
232 MODULES=`echo $MODULES | tr " " ","`
233 SUITApp LightApp --modules=${MODULES} "$*" &
237 # call wrapper function (entry point)
240 run_light_salome "$@"