Statistics
| Revision:

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

History | View | Annotate | Download (10.4 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
x=$(dirname "$0")
82
cd "$x"
83

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

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

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

    
95
if [ ! -d "$GVSIG_HOME_FOLDER" ] ; then
96
  mkdir -p "$GVSIG_HOME_FOLDER"
97
fi
98

    
99
####################
100
# Load config file #
101
####################
102

    
103
if [ -f "$GVSIG_INSTALL_FOLDER/gvSIG.config" ] ; then
104
  . "$GVSIG_INSTALL_FOLDER/gvSIG.config"
105
fi
106

    
107
#################
108
# Logger config #
109
#################
110

    
111
LOGGER_FILE="$GVSIG_HOME_FOLDER/${GVSIG_APPLICATION_NAME}-launcher.log"
112
echo > "$LOGGER_FILE"
113

    
114

    
115
logger () {
116
  # level (INFO/WARNIG) message
117
  local LOGGER_LEVEL="$1"
118
  shift
119
  echo "$LOGGER_LEVEL launch $@"
120
  echo "$LOGGER_LEVEL launch $@" >> "$LOGGER_FILE"
121
}
122

    
123
logger_info () {
124
  logger "INFO" "$@"
125
}
126

    
127
logger_warn () {
128
  logger "WARNING" "$@"
129
}
130

    
131
logger_cmd() {
132
  logger_info "$@"
133
  eval $@ | tee -a  "$LOGGER_FILE"
134
}
135

    
136
#########################
137
# Locate whitch command #
138
#########################
139

    
140
if type which >/dev/null; then
141
        WHICH=which
142
else
143
        WHICH=type
144
fi
145

    
146
logger_info "gvSIG Installation folder: $GVSIG_INSTALL_FOLDER"
147
logger_info "gvSIG home folder: $GVSIG_HOME_FOLDER"
148

    
149
##########################################################
150
# Search in gvSIG/extensiones the architecture of plugins
151
# installeds and set as PREFERED_ARCHITECTURE
152
# Note: Busybox n windows don't support -exec in find
153
##########################################################
154

    
155
cd "$GVSIG_INSTALL_FOLDER"
156
find . -name package.info | while read fname
157
do
158
  cat $fname
159
done | grep "architecture=[^a]" | sort | head -n 1 | read x
160
if [ "X${x}X" != "XX" ] ; then
161
	eval $x
162
	PREFERED_ARCHITECTURE="$architecture"
163
else
164
	PREFERED_ARCHITECTURE="$ARCH"
165
fi
166
cd - >/dev/null
167

    
168
##########################################################
169

    
170
FORCE_JAVA_32BITS=""
171
JAVA_HOME_OTHER_ARCHITECTURE=""
172

    
173
# PRIVATE JAVA HOMEs
174
PJH1=$(ls -dt "$GVSIG_HOME_FOLDER/jre/"*1.6* 2>/dev/null | head -1)
175
PJH2=$(ls -dt "$GVSIG_HOME_FOLDER/jre/"*1.5* 2>/dev/null | head -1)
176
PJH3=
177
PJH4=
178
PJH5=
179
PJH6=
180
if [ -d "$GVSIG_INSTALL_FOLDER/gvSIG/extensiones/jre_7_windows_i586/jre" ] ; then
181
    PJH5="$GVSIG_INSTALL_FOLDER/gvSIG/extensiones/jre_7_windows_i586/jre"
182
fi
183
if [ -d /usr/lib/jvm ] ; then
184
    PJH6=$(find /usr/lib/jvm -maxdepth 1 ! -name "jvm" -name "[a-zA-Z]*" ! -type l -print)
185
fi
186

    
187
#
188
# in next line, JAVA_HOME is set during instalation process
189
DEFAULT_JAVA_HOME="${JAVA_HOME}"
190
#
191
#
192
# Try to use java from:
193
# 1. Java specified in JAVA_HOME variable
194
# 2. Java specified in the instalation process
195
# 3. Java in the HOME/gvsig/jre folder (optionally created during installation process)
196
# 4. Java in the system path.
197
#
198
export JAVA_HOME
199
export JAVA
200
export FORCE_JAVA_32BITS
201

    
202

    
203
for JAVA_HOME_TO_USE in "$JAVA_HOME" "$DEFAULT_JAVA_HOME" "$PJH1" "$PJH2" "$PJH3" "$PJH4" "$PJH5" $PJH6 ""
204
do
205
        if [ "$JAVA_HOME_TO_USE" = "" ] ; then
206
                continue
207
        fi
208
	logger_info "Checking JAVA_HOME ${JAVA_HOME_TO_USE}..."
209
        if [ ! -d "$JAVA_HOME_TO_USE" ] ; then
210
                logger_warn "Folder not found ($JAVA_HOME_TO_USE), skip"
211
                continue
212
        fi
213
        if [ ! -x "$JAVA_HOME_TO_USE/bin/java" ] ; then
214
                logger_warn "Not a valid JAVA_HOME ($JAVA_HOME_TO_USE), bin/java not found, skip"
215
                continue
216
        fi
217
	JAVA_ARCH=$(getJavaArchitecture "$JAVA_HOME_TO_USE/bin/java")
218
	if [ "$JAVA_ARCH" != "$PREFERED_ARCHITECTURE" ] ; then
219
                JAVA_HOME_OTHER_ARCHITECTURE="$JAVA_HOME_TO_USE"
220
                logger_warn "Prefered architecture is $PREFERED_ARCHITECTURE, java $JAVA_ARCH found in $JAVA_HOME_TO_USE, skip"
221
                continue
222
        fi
223
        break
224
done
225

    
226
if [ "$JAVA_HOME_TO_USE" = "" ] ; then
227
        # Try to use the java in the system path
228
        if ! type java >/dev/null ; then
229
                # java not found in the system path
230
                if [ "$JAVA_HOME_OTHER_ARCHITECTURE" != "" ] ; then
231
                        JAVA_HOME="$JAVA_HOME_OTHER_ARCHITECTURE"
232
                        JAVA="$JAVA_HOME/bin/java"
233
                        logger_warn "java $PREFERED_ARCHITECTURE not found in the system path, using $JAVA_HOME_OTHER_ARCHITECTURE"
234
                else
235
                        logger_warn "java not found in the system"
236
                        exit 1
237
                fi
238
        else
239
		if [ "$(getJavaArchitecture $($WHICH java))" != "$PREFERED_ARCHITECTURE" ] ; then
240
                      logger_warn "java $PREFERED_ARCHITECTURE not found, using $($WHICH java)"
241
                fi
242
                unset JAVA_HOME
243
                JAVA="java"
244
        fi
245
else
246
        JAVA_HOME="$JAVA_HOME_TO_USE"
247
        JAVA="$JAVA_HOME/bin/java"
248
fi
249

    
250
if [ "$PREFERED_ARCHITECTURE" = "x86" ] ; then
251
	FORCE_JAVA_32BITS="$ARG_D32"
252
else
253
	FORCE_JAVA_32BITS=""
254

    
255
fi
256
logger_info "Using java " $($WHICH "$JAVA")
257

    
258
###################################################################
259
# gvSIG native libraries location
260
###################################################################
261

    
262
export GVSIG_NATIVE_LIBS=""
263
export LD_LIBRARY_PATH=""
264

    
265
add_library_path() {
266
  LD_LIBRARY_PATH="$LD_LIBRARY_PATH${CPSEP}$1"
267
  GVSIG_NATIVE_LIBS="$GVSIG_NATIVE_LIBS${CPSEP}$1"
268
}
269

    
270
list_shared_library_dependencies() {
271
  logger_info "Cheking shared library dependencies for $1"
272
  set +e
273
  if [ "$OS" = "win" ] ; then
274
        logger_cmd cygcheck.exe "$1"
275
  else
276
        logger_cmd ldd "$1"
277
  fi || logger_warn "Problens checking shared library $1"
278
  set -e
279
}
280

    
281
###################################################################
282
# gvSIG java libraries location
283
###################################################################
284

    
285
export LIBRARIES=""
286
# Load gvSIG Andami jars and dependencies for the classpath
287
for i in "$GVSIG_INSTALL_FOLDER/lib/"*.jar ; do
288
  if [ "$i" != "$GVSIG_INSTALL_FOLDER/lib/*.jar" -a "$i" != "" ]; then
289
    LIBRARIES="${LIBRARIES}${CPSEP}${i}"
290
  fi
291
done
292
for i in "$GVSIG_INSTALL_FOLDER/lib/"*.zip ; do
293
  if [ "$i" != "$GVSIG_INSTALL_FOLDER/lib/*.zip" -a "$i" != "" ]; then
294
    LIBRARIES="${LIBRARIES}${CPSEP}${i}"
295
  fi
296
done
297

    
298
# echo Initial libraries found: ${LIBRARIES}
299

    
300
# gvSIG Andami launcher
301

    
302
if [ "$GVSIG_LAUNCHER" = "" ] ; then
303
  GVSIG_LAUNCHER=org.gvsig.andamiupdater.Updater
304
fi
305
if [ "$GVSIG_PARAMS" = "" ] ; then
306
  GVSIG_PARAMS="$GVSIG_APPLICATION_NAME gvSIG/extensiones $@"
307
fi
308

    
309
export GVSIG_LAUNCHER
310
export GVSIG_PARAMS
311

    
312
# gvSIG initial classpath
313
export GVSIG_CLASSPATH="$LIBRARIES:$GVSIG_CLASSPATH"
314

    
315
########################
316
# Memory configuration #
317
########################
318

    
319
# Initial gvSIG memory (M=Megabytes, G=Gigabytes)
320
export GVSIG_INITIAL_MEM=256M
321
# Maximum gvSIG memory (M=Megabytes, G=Gigabytes)
322
export GVSIG_MAX_MEM=1024M
323
# Maximum permanent memory size: needed to load classes and statics
324
export GVSIG_MAX_PERM_SIZE=96M
325

    
326

    
327
#############################
328
# Execute plugin's autorun  #
329
#############################
330

    
331
for PLUGIN_FOLDER in "$GVSIG_INSTALL_FOLDER/gvSIG/extensiones/"*
332
do
333
  if [ -f "$PLUGIN_FOLDER/autorun.sh" ] ; then
334
    logger_info "Running autorun from plugin " $(basename "$PLUGIN_FOLDER")
335
    . "$PLUGIN_FOLDER/autorun.sh"
336
    cd "$GVSIG_INSTALL_FOLDER"
337
  fi
338
done
339

    
340
if [ "$OS" = "win" ] ; then
341
	add_library_path "$GVSIG_INSTALL_FOLDER"
342
else
343
	add_library_path "/usr/lib"
344
fi
345

    
346
logger_info "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
347

    
348
#####################
349
# Java debug mode ? #
350
#####################
351

    
352
DEBUG_ARGS="X${@}X"
353
if expr match "$DEBUG_ARGS" "X.*--pause.*X" >/dev/null; then
354
    DEBUG_PAUSE="y"
355
else
356
    DEBUG_PAUSE="n"
357
fi
358

    
359
if expr match "$DEBUG_ARGS" "X.*--debug.*X" >/dev/null; then
360
  DEBUG_OPTIONS="-agentlib:jdwp=transport=dt_socket,address=8765,server=y,suspend=$DEBUG_PAUSE"
361
else
362
  DEBUG_OPTIONS=""
363
fi
364

    
365
################
366
# Launch gvSIG #
367
################
368

    
369
# For Java parameters documentation and more parameters look at:
370
# http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html
371
# http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
372

    
373
logger_info Launching gvSIG: ${JAVA} \
374
	$FORCE_JAVA_32BITS \
375
	-Xms${GVSIG_INITIAL_MEM} \
376
	-Xmx${GVSIG_MAX_MEM} \
377
	-XX:MaxPermSize=${GVSIG_MAX_PERM_SIZE} \
378
        $DEBUG_OPTIONS \
379
	-Djava.library.path=\"${GVSIG_NATIVE_LIBS}\" \
380
	-cp $GVSIG_CLASSPATH \
381
        $GVSIG_JAVA_PARAMS \
382
	$GVSIG_LAUNCHER $GVSIG_PARAMS
383

    
384
"${JAVA}" \
385
	$FORCE_JAVA_32BITS \
386
	-Xms${GVSIG_INITIAL_MEM} \
387
	-Xmx${GVSIG_MAX_MEM} \
388
	-XX:MaxPermSize=${GVSIG_MAX_PERM_SIZE} \
389
        $DEBUG_OPTIONS \
390
	-Djava.library.path="${GVSIG_NATIVE_LIBS}" \
391
	-cp "$GVSIG_CLASSPATH" \
392
        $GVSIG_JAVA_PARAMS \
393
	$GVSIG_LAUNCHER $GVSIG_PARAMS
394