Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.framework / org.gvsig.andami / src / main / resources-application / gvSIG.sh @ 41293

History | View | Annotate | Download (9.41 KB)

1
#!/bin/sh
2
#
3
# gvSIG. Desktop Geographic Information System.
4
#
5
# Copyright (C) 2007-2013 gvSIG Association.
6
#
7
# This program is free software; you can redistribute it and/or
8
# modify it under the terms of the GNU General Public License
9
# as published by the Free Software Foundation; either version 3
10
# of the License, or (at your option) any later version.
11
#
12
# This program is distributed in the hope that it will be useful,
13
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
# GNU General Public License for more details.
16
#
17
# You should have received a copy of the GNU General Public License
18
# along with this program; if not, write to the Free Software
19
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
# MA  02110-1301, USA.
21
#
22
# For any additional information, do not hesitate to contact us
23
# at info AT gvsig.com, or visit our website www.gvsig.com.
24
#
25

    
26
# gvSIG.sh
27

    
28
set -e
29
#set -x
30

    
31
####################
32
# Identify OS and Architecture  #
33
####################
34

    
35
UNAME=$(uname -a)
36
if echo "$UNAME" | grep -i "win" >/dev/null; then
37
	OS="win"
38
	ARG_D32=""
39
        CPSEP=";"
40
else 
41
	if echo "$UNAME" | grep -i "lin" >/dev/null ; then
42
		OS="lin"
43
		# Only linux support -d32 arg
44
		ARG_D32="-d32"
45
                CPSEP=":"
46
	else
47
		OS="unknown"
48
		ARG_D32=""
49
                CPSEP=":"
50
	fi
51
fi
52
if echo "$UNAME" | egrep -i "(x86_64)|(amd64)" >/dev/null ; then
53
	ARCH="x86_64"
54
else
55
	ARCH="x86"
56
fi
57

    
58
########################
59

    
60
getJavaArchitecture() {
61
	if [ "$ARCH" = "x86" ] ; then
62
                # Si la arquitectura del SO es x86 decimos 
63
                # que la de java es x86
64
		echo "x86"
65
	else
66
                # si la arquitectura es x86_64, comprobamos
67
                # la arquitectura de la java que nos pasan
68
		if "$1" -version 2>&1 | egrep -i "64-Bit" >/dev/null ; then
69
			echo "x86_64"
70
		else
71
			echo "x86"
72
		fi
73
	fi 
74
}
75

    
76
#################################
77
# Set install and home folders  #
78
#################################
79

    
80
# Go into the gvSIG installation folder, just in case
81
cd "$(dirname $0)"
82

    
83
if [ "$GVSIG_APPLICATION_NAME" = "" ] ; then
84
  GVSIG_APPLICATION_NAME=gvSIG
85
fi
86
export GVSIG_APPLICATION_NAME
87

    
88
# gvSIG installation folder
89
export GVSIG_INSTALL_FOLDER="$PWD"
90

    
91
# gvSIG home folder
92
export GVSIG_HOME_FOLDER="$HOME/$GVSIG_APPLICATION_NAME"
93

    
94
#################
95
# Logger config #
96
#################
97

    
98
LOGGER_FILE="$GVSIG_HOME_FOLDER/${GVSIG_APPLICATION_NAME}.log"
99

    
100
logger () {
101
  # level (INFO/WARNIG) message
102
  local LOGGER_LEVEL="$1"
103
  shift
104
  echo "$LOGGER_LEVEL launch $@"
105
  if [ ! -f "$LOGGER_FILE" ] ; then
106
    mkdir -p "$(dirname $LOGGER_FILE)"
107
  fi
108
  echo "$LOGGER_LEVEL launch $@" >> "$LOGGER_FILE"
109
}
110

    
111
logger_info () {
112
  logger "INFO" "$@"
113
}
114

    
115
logger_warn () {
116
  logger "WARNING" "$@"
117
}
118

    
119
#########################
120
# Locate whitch command #
121
#########################
122

    
123
if type which >/dev/null; then
124
        WHICH=which
125
else
126
        WHICH=type
127
fi
128

    
129
logger_info "gvSIG Installation folder: $GVSIG_INSTALL_FOLDER"
130
logger_info "gvSIG home folder: $GVSIG_HOME_FOLDER"
131

    
132
##########################################################
133
# Search in gvSIG/extensiones the architecture of plugins 
134
# installeds and set as PREFERED_ARCHITECTURE
135
##########################################################
136

    
137
x=$(find $GVSIG_INSTALL_FOLDER/gvSIG/extensiones -name package.info -exec grep "architecture=[^a]" {} ';' | sort|head -n 1)
138
if [ "X${x}X" != "XX" ] ; then
139
	eval $x
140
	PREFERED_ARCHITECTURE="$architecture"
141
else
142
	PREFERED_ARCHITECTURE="$ARCH"
143
fi
144

    
145
##########################################################
146

    
147
FORCE_JAVA_32BITS=""
148
JAVA_HOME_OTHER_ARCHITECTURE=""
149

    
150
# PRIVATE JAVA HOMEs
151
PJH1=$(ls -dt "$GVSIG_HOME_FOLDER/jre/"*1.6* 2>/dev/null | head -1)
152
PJH2=$(ls -dt "$GVSIG_HOME_FOLDER/jre/"*1.5* 2>/dev/null | head -1)
153
PJH3=
154
PJH4=
155
PJH5="$GVSIG_INSTALL_FOLDER/gvSIG/extensiones/jre_6_windows_i586/jre"
156

    
157
#
158
# in next line, JAVA_HOME is set during instalation process
159
DEFAULT_JAVA_HOME="${JAVA_HOME}"
160
#
161
#
162
# Try to use java from:
163
# 1. Java specified in JAVA_HOME variable
164
# 2. Java specified in the instalation process
165
# 3. Java in the HOME/gvsig/jre folder (optionally created during installation process)
166
# 4. Java in the system path.
167
#
168
export JAVA_HOME
169
export JAVA
170
export FORCE_JAVA_32BITS
171

    
172

    
173
for JAVA_HOME_TO_USE in "$JAVA_HOME" "$DEFAULT_JAVA_HOME" "$PJH1" "$PJH2" "$PJH3" "$PJH4" "$PJH5"  ""
174
do
175
        if [ "$JAVA_HOME_TO_USE" = "" ] ; then
176
                continue
177
        fi
178
        if [ ! -d "$JAVA_HOME_TO_USE" ] ; then
179
                logger_warn "Incorrect JAVA_HOME ($JAVA_HOME_TO_USE), skip"
180
                continue
181
        fi
182
        if [ ! -x "$JAVA_HOME_TO_USE/bin/java" ] ; then
183
                logger_warn "Inicorrect JAVA_HOME ($JAVA_HOME_TO_USE), bin/java not found, skip"
184
                continue
185
        fi
186
	JAVA_ARCH="$(getJavaArchitecture $JAVA_HOME_TO_USE/bin/java)"
187
	if [ "$JAVA_ARCH" != "$PREFERED_ARCHITECTURE" ] ; then
188
                JAVA_HOME_OTHER_ARCHITECTURE="$JAVA_HOME_TO_USE"
189
                logger_warn "Prefered architecture is $PREFERED_ARCHITECTURE, java $JAVA_ARCH found in $JAVA_HOME_TO_USE, skip"
190
                continue
191
        fi
192
        break
193
done
194

    
195
if [ "$JAVA_HOME_TO_USE" = "" ] ; then
196
        # Try to use the java in the system path
197
        if ! type java >/dev/null ; then
198
                # java not found in the system path
199
                if [ "$JAVA_HOME_OTHER_ARCHITECTURE" != "" ] ; then
200
                        JAVA_HOME="$JAVA_HOME_OTHER_ARCHITECTURE"
201
                        JAVA="$JAVA_HOME/bin/java"
202
                        logger_warn "java $PREFERED_ARCHITECTURE not found in the system path, using $JAVA_HOME_OTHER_ARCHITECTURE"
203
                else
204
                        logger_warn "java not found in the system"
205
                        exit 1
206
                fi
207
        else
208
		if [ "$(getJavaArchitecture $($WHICH java))" != "$PREFERED_ARCHITECTURE" ] ; then
209
                      logger_warn "java $PREFERED_ARCHITECTURE not found, using $($WHICH java)"
210
                fi
211
                unset JAVA_HOME
212
                JAVA="java"
213
        fi
214
else
215
        JAVA_HOME="$JAVA_HOME_TO_USE"
216
        JAVA="$JAVA_HOME/bin/java"
217
fi
218

    
219
if [ "$PREFERED_ARCHITECTURE" = "x86" ] ; then
220
	FORCE_JAVA_32BITS="$ARG_D32"
221
else 
222
	FORCE_JAVA_32BITS=""
223

    
224
fi
225
logger_info "Using java " $($WHICH "$JAVA")
226

    
227
exit 0
228
###################################################################
229
# Variables not depending (at least directly) on the installation #
230
###################################################################
231

    
232
# gvSIG native libraries location 
233
export GVSIG_NATIVE_LIBS=${GVSIG_INSTALL_FOLDER}/native:${HOME}/.depman/lib
234

    
235
# Native libraries path
236
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$GVSIG_NATIVE_LIBS"
237

    
238
export LIBRARIES=""
239
# Load gvSIG Andami jars and dependencies for the classpath 
240
for i in ./lib/*.jar ; do
241
  if [ "$i" != "./lib/*.jar" -a "$i" != "" ]; then
242
	LIBRARIES="${LIBRARIES}${CPSEP}${i}"
243
  fi 
244
done
245
for i in ./lib/*.zip ; do
246
  if [ "$i" != "./lib/*.zip" -a "$i" != "" ]; then
247
	LIBRARIES="${LIBRARIES}${CPSEP}${i}"
248
  fi 
249
done
250

    
251
# echo Initial libraries found: ${LIBRARIES}
252

    
253
# gvSIG Andami launcher
254

    
255
if [ "$GVSIG_LAUNCHER" = "" ] ; then
256
  GVSIG_LAUNCHER=org.gvsig.andamiupdater.Updater
257
fi
258
if [ "$GVSIG_PARAMS" = "" ] ; then
259
  GVSIG_PARAMS="$GVSIG_APPLICATION_NAME gvSIG/extensiones $@"
260
fi
261

    
262
export GVSIG_LAUNCHER
263
export GVSIG_PARAMS
264

    
265
# gvSIG initial classpath
266
export GVSIG_CLASSPATH="$LIBRARIES:$GVSIG_CLASSPATH"
267

    
268
########################
269
# Memory configuration #
270
########################
271

    
272
# Initial gvSIG memory (M=Megabytes, G=Gigabytes)
273
export GVSIG_INITIAL_MEM=128M
274
# Maximum gvSIG memory (M=Megabytes, G=Gigabytes)
275
export GVSIG_MAX_MEM=512M
276
# Maximum permanent memory size: needed to load classes and statics
277
export GVSIG_MAX_PERM_SIZE=96M
278

    
279

    
280
#############################
281
# Plugin specific variables #
282
#############################
283

    
284
### ecw provider
285
export NCS_USER_PREFS="$HOME/.erm/ncsuserprefs.xml"
286

    
287
### gdal provider
288
# GDAL data files
289
export GDAL_DATA="${GVSIG_INSTALL_FOLDER}/data/gdal"
290

    
291
#############################
292
# Execute plugin's autorun  #
293
#############################
294

    
295
for PLUGIN_FOLDER in "$GVSIG_INSTALL_FOLDER/gvSIG/extensiones/"* 
296
do
297
  if [ -f "$PLUGIN_FOLDER/autorun.sh" ] ; then
298
    logger_info "Running autorun from plugin $(basename $PLUGIN_FOLDER)"
299
    . "$PLUGIN_FOLDER/autorun.sh"
300
  fi
301
done
302

    
303
logger_info "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
304

    
305
#####################
306
# Java debug mode ? #
307
#####################
308

    
309
DEBUG_ARGS="X${@}X"
310
if expr match "$DEBUG_ARGS" "X.*--pause.*X" >/dev/null; then           
311
    DEBUG_PAUSE="y"
312
else
313
    DEBUG_PAUSE="n"
314
fi
315

    
316
if expr match "$DEBUG_ARGS" "X.*--debug.*X" >/dev/null; then           
317
  DEBUG_OPTIONS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=$DEBUG_PAUSE"
318
else
319
  DEBUG_OPTIONS=""
320
fi
321

    
322
################
323
# Launch gvSIG #
324
################
325

    
326
# For Java parameters documentation and more parameters look at:
327
# http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html
328
# http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
329

    
330
logger_info Launching gvSIG: ${JAVA} \
331
	$FORCE_JAVA_32BITS \
332
	-Xms${GVSIG_INITIAL_MEM} \
333
	-Xmx${GVSIG_MAX_MEM} \
334
	-XX:MaxPermSize=${GVSIG_MAX_PERM_SIZE} \
335
        $DEBUG_OPTIONS \
336
	-Djava.library.path="${GVSIG_NATIVE_LIBS}":/usr/lib \
337
	-cp $GVSIG_CLASSPATH \
338
	$GVSIG_LAUNCHER $GVSIG_PARAMS
339

    
340
${JAVA} \
341
	$FORCE_JAVA_32BITS \
342
	-Xms${GVSIG_INITIAL_MEM} \
343
	-Xmx${GVSIG_MAX_MEM} \
344
	-XX:MaxPermSize=${GVSIG_MAX_PERM_SIZE} \
345
        $DEBUG_OPTIONS \
346
	-Djava.library.path="${GVSIG_NATIVE_LIBS}":/usr/lib \
347
	-cp $GVSIG_CLASSPATH \
348
	$GVSIG_LAUNCHER $GVSIG_PARAMS