Revision 42411 trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/src/main/resources-application/gvSIG.sh

View differences:

gvSIG.sh
1
#!/bin/bash
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 -x
29

  
30

  
31
onerror() {
32
  set +x
33
  echo "Error executing the command:"
34
  echo ">>> $BASH_COMMAND <<<"
35
  echo "At line $BASH_LINENO"
36
  exit 1
37
}
38
trap onerror ERR
39

  
40
####################
41
# Identify OS and Architecture  #
42
####################
43

  
44
UNAME=$(uname -a)
45
if echo "$UNAME" | grep -i "win" >/dev/null; then
46
	OS="win"
47
	ARG_D32=""
48
        CPSEP=";"
49
else
50
	if echo "$UNAME" | grep -i "lin" >/dev/null ; then
51
		OS="lin"
52
		# Only linux support -d32 arg
53
		ARG_D32="-d32"
54
                CPSEP=":"
55
	else
56
		OS="unknown"
57
		ARG_D32=""
58
                CPSEP=":"
59
	fi
60
fi
61
if echo "$UNAME" | egrep -i "(x86_64)|(amd64)" >/dev/null ; then
62
	ARCH="x86_64"
63
else
64
	ARCH="x86"
65
fi
66

  
67
########################
68

  
69
getJavaArchitecture() {
70
	if [ "$ARCH" = "x86" ] ; then
71
                # Si la arquitectura del SO es x86 decimos
72
                # que la de java es x86
73
		echo "x86"
74
	else
75
                # si la arquitectura es x86_64, comprobamos
76
                # la arquitectura de la java que nos pasan
77
		if "$1" -version 2>&1 | egrep -i "64-Bit" >/dev/null ; then
78
			echo "x86_64"
79
		else
80
			echo "x86"
81
		fi
82
	fi
83
}
84

  
85
#################################
86
# Set install and home folders  #
87
#################################
88

  
89
# Go into the gvSIG installation folder, just in case
90
x=$(dirname "$0")
91
cd "$x"
92

  
93
if [ "$GVSIG_APPLICATION_NAME" = "" ] ; then
94
  GVSIG_APPLICATION_NAME=gvSIG
95
fi
96
export GVSIG_APPLICATION_NAME
97

  
98
# gvSIG installation folder
99
export GVSIG_INSTALL_FOLDER="$PWD"
100

  
101
# gvSIG home folder
102
export GVSIG_HOME_FOLDER="$HOME/$GVSIG_APPLICATION_NAME"
103

  
104
if [ ! -d "$GVSIG_HOME_FOLDER" ] ; then
105
  mkdir -p "$GVSIG_HOME_FOLDER"
106
fi
107

  
108
####################
109
# Load config file #
110
####################
111

  
112
if [ -f "$GVSIG_INSTALL_FOLDER/gvSIG.config" ] ; then
113
  . "$GVSIG_INSTALL_FOLDER/gvSIG.config"
114
fi
115

  
116
#################
117
# Logger config #
118
#################
119

  
120
LOGGER_FILE="$GVSIG_HOME_FOLDER/${GVSIG_APPLICATION_NAME}-launcher.log"
121
echo > "$LOGGER_FILE"
122

  
123

  
124
logger () {
125
  # level (INFO/WARNIG) message
126
  local LOGGER_LEVEL="$1"
127
  shift
128
  echo "$LOGGER_LEVEL launch $@"
129
  echo "$LOGGER_LEVEL launch $@" >> "$LOGGER_FILE"
130
}
131

  
132
logger_info () {
133
  logger "INFO" "$@"
134
}
135

  
136
logger_warn () {
137
  logger "WARNING" "$@"
138
}
139

  
140
logger_cmd() {
141
  logger_info "$@"
142
  eval $@ | tee -a  "$LOGGER_FILE"
143
}
144

  
145
#########################
146
# Locate whitch command #
147
#########################
148

  
149
if type which >/dev/null; then
150
        WHICH=which
151
else
152
        WHICH=type
153
fi
154

  
155
logger_info "gvSIG Installation folder: $GVSIG_INSTALL_FOLDER"
156
logger_info "gvSIG home folder: $GVSIG_HOME_FOLDER"
157

  
158
##########################################################
159
# Search in gvSIG/extensiones the architecture of plugins
160
# installeds and set as PREFERED_ARCHITECTURE
161
# Note: Busybox n windows don't support -exec in find
162
##########################################################
163

  
164
setPreferedArchitecture() {
165
  local foundArch=""
166
  local fname
167
  cd "$GVSIG_INSTALL_FOLDER"
168
  find . -name package.info | while read fname
169
  do
170
    cat $fname
171
  done | grep "architecture=[^a]" | sort | head -n 1 | read foundArch || true
172
  # El comando "read x" de la linea anterior puede fallar si 
173
  # no hay ningun plugin depdendiente de la arquitectura, por eso 
174
  # el "|| true" del final.
175
  if [ "X${foundArch}X" != "XX" ] ; then
176
	  eval $foundArch
177
	  PREFERED_ARCHITECTURE="$architecture"
178
  else
179
	  PREFERED_ARCHITECTURE="$ARCH"
180
  fi
181
  cd - >/dev/null
182
}
183

  
184
setPreferedArchitecture
185

  
186
##########################################################
187

  
188
export JAVA_HOME
189
export JAVA
190
export FORCE_JAVA_32BITS
191

  
192
FORCE_JAVA_32BITS=""
193
JAVA_HOME_OTHER_ARCHITECTURE=""
194

  
195
# PRIVATE JAVA HOMEs
196
PJH1=$(ls -dt "$GVSIG_HOME_FOLDER/jre/"*1.6* 2>/dev/null | head -1)
197
PJH2=$(ls -dt "$GVSIG_HOME_FOLDER/jre/"*1.5* 2>/dev/null | head -1)
198
PJH3=
199
PJH4=
200
PJH5=
201
PJH6=
202
if [ -d "$GVSIG_INSTALL_FOLDER/gvSIG/extensiones/jre_7_windows_i586/jre" ] ; then
203
    PJH5="$GVSIG_INSTALL_FOLDER/gvSIG/extensiones/jre_7_windows_i586/jre"
204
fi
205
if [ -d /usr/lib/jvm ] ; then
206
    PJH6=$(find /usr/lib/jvm -maxdepth 1 ! -name "jvm" -name "[a-zA-Z]*" ! -type l -print)
207
fi
208

  
209
#
210
# in next line, JAVA_HOME is set during instalation process
211
DEFAULT_JAVA_HOME="${JAVA_HOME}"
212
#
213
#
214
# Try to use java from:
215
# 1. Java specified in JAVA_HOME variable
216
# 2. Java specified in the instalation process
217
# 3. Java in the HOME/gvsig/jre folder (optionally created during installation process)
218
# 4. Java in the system path.
219
#
220

  
221
for JAVA_HOME_TO_USE in "$JAVA_HOME" "$DEFAULT_JAVA_HOME" "$PJH1" "$PJH2" "$PJH3" "$PJH4" "$PJH5" $PJH6 ""
222
do
223
        if [ "$JAVA_HOME_TO_USE" = "" ] ; then
224
                continue
225
        fi
226
	logger_info "Checking JAVA_HOME ${JAVA_HOME_TO_USE}..."
227
        if [ ! -d "$JAVA_HOME_TO_USE" ] ; then
228
                logger_warn "Folder not found ($JAVA_HOME_TO_USE), skip"
229
                continue
230
        fi
231
        if [ ! -x "$JAVA_HOME_TO_USE/bin/java" ] ; then
232
                logger_warn "Not a valid JAVA_HOME ($JAVA_HOME_TO_USE), bin/java not found, skip"
233
                continue
234
        fi
235
	JAVA_ARCH=$(getJavaArchitecture "$JAVA_HOME_TO_USE/bin/java")
236
	if [ "$JAVA_ARCH" != "$PREFERED_ARCHITECTURE" ] ; then
237
                JAVA_HOME_OTHER_ARCHITECTURE="$JAVA_HOME_TO_USE"
238
                logger_warn "Prefered architecture is $PREFERED_ARCHITECTURE, java $JAVA_ARCH found in $JAVA_HOME_TO_USE, skip"
239
                continue
240
        fi
241
        break
242
done
243

  
244
if [ "$JAVA_HOME_TO_USE" = "" ] ; then
245
        # Try to use the java in the system path
246
        if ! type java >/dev/null ; then
247
                # java not found in the system path
248
                if [ "$JAVA_HOME_OTHER_ARCHITECTURE" != "" ] ; then
249
                        JAVA_HOME="$JAVA_HOME_OTHER_ARCHITECTURE"
250
                        JAVA="$JAVA_HOME/bin/java"
251
                        logger_warn "java $PREFERED_ARCHITECTURE not found in the system path, using $JAVA_HOME_OTHER_ARCHITECTURE"
252
                else
253
                        logger_warn "java not found in the system"
254
                        exit 1
255
                fi
256
        else
257
		if [ "$(getJavaArchitecture $($WHICH java))" != "$PREFERED_ARCHITECTURE" ] ; then
258
                      logger_warn "java $PREFERED_ARCHITECTURE not found, using $($WHICH java)"
259
                fi
260
                unset JAVA_HOME
261
                JAVA="java"
262
        fi
263
else
264
        JAVA_HOME="$JAVA_HOME_TO_USE"
265
        JAVA="$JAVA_HOME/bin/java"
266
fi
267

  
268
if [ "$PREFERED_ARCHITECTURE" = "x86" ] ; then
269
	FORCE_JAVA_32BITS="$ARG_D32"
270
else
271
	FORCE_JAVA_32BITS=""
272

  
273
fi
274
logger_info "Using java " $($WHICH "$JAVA")
275

  
276
###################################################################
277
# gvSIG native libraries location
278
###################################################################
279

  
280
export GVSIG_NATIVE_LIBS=""
281
export LD_LIBRARY_PATH=""
282

  
283
add_library_path() {
284
  LD_LIBRARY_PATH="$LD_LIBRARY_PATH${CPSEP}$1"
285
  GVSIG_NATIVE_LIBS="$GVSIG_NATIVE_LIBS${CPSEP}$1"
286
}
287

  
288
list_shared_library_dependencies() {
289
  logger_info "Cheking shared library dependencies for $1"
290
  if [ "$OS" = "win" ] ; then
291
        logger_cmd cygcheck.exe "$1" || true
292
  else
293
        logger_cmd ldd "$1" || true
294
  fi || logger_warn "Problens checking shared library $1" 
295
}
296

  
297
###################################################################
298
# gvSIG java libraries location
299
###################################################################
300

  
301
export LIBRARIES=""
302
# Load gvSIG Andami jars and dependencies for the classpath
303
for i in "$GVSIG_INSTALL_FOLDER/lib/"*.jar ; do
304
  if [ "$i" != "$GVSIG_INSTALL_FOLDER/lib/*.jar" -a "$i" != "" ]; then
305
    LIBRARIES="${LIBRARIES}${CPSEP}${i}"
306
  fi
307
done
308
for i in "$GVSIG_INSTALL_FOLDER/lib/"*.zip ; do
309
  if [ "$i" != "$GVSIG_INSTALL_FOLDER/lib/*.zip" -a "$i" != "" ]; then
310
    LIBRARIES="${LIBRARIES}${CPSEP}${i}"
311
  fi
312
done
313

  
314
# echo Initial libraries found: ${LIBRARIES}
315

  
316
# gvSIG Andami launcher
317

  
318
if [ "$GVSIG_LAUNCHER" = "" ] ; then
319
  GVSIG_LAUNCHER=org.gvsig.andamiupdater.Updater
320
fi
321
if [ "$GVSIG_PARAMS" = "" ] ; then
322
  GVSIG_PARAMS="$GVSIG_APPLICATION_NAME gvSIG/extensiones $@"
323
fi
324

  
325
export GVSIG_LAUNCHER
326
export GVSIG_PARAMS
327

  
328
# gvSIG initial classpath
329
export GVSIG_CLASSPATH="$LIBRARIES:$GVSIG_CLASSPATH"
330

  
331
########################
332
# Memory configuration #
333
########################
334

  
335
# Initial gvSIG memory (M=Megabytes, G=Gigabytes)
336
export GVSIG_INITIAL_MEM=256M
337
# Maximum gvSIG memory (M=Megabytes, G=Gigabytes)
338
export GVSIG_MAX_MEM=1024M
339
# Maximum permanent memory size: needed to load classes and statics
340
export GVSIG_MAX_PERM_SIZE=96M
341

  
342

  
343
#############################
344
# Execute plugin's autorun  #
345
#############################
346

  
347
for PLUGIN_FOLDER in "$GVSIG_INSTALL_FOLDER/gvSIG/extensiones/"*
348
do
349
  if [ -f "$PLUGIN_FOLDER/autorun.sh" ] ; then
350
    logger_info "Running autorun from plugin " $(basename "$PLUGIN_FOLDER")
351
    . "$PLUGIN_FOLDER/autorun.sh"
352
    cd "$GVSIG_INSTALL_FOLDER"
353
  fi
354
done
355

  
356
if [ "$OS" = "win" ] ; then
357
	add_library_path "$GVSIG_INSTALL_FOLDER"
358
else
359
	add_library_path "/usr/lib"
360
fi
361

  
362
logger_info "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
363

  
364
#####################
365
# Java debug mode ? #
366
#####################
367

  
368
DEBUG_ARGS="X${@}X"
369
if expr match "$DEBUG_ARGS" "X.*--pause.*X" >/dev/null; then
370
    DEBUG_PAUSE="y"
371
else
372
    DEBUG_PAUSE="n"
373
fi
374

  
375
if expr match "$DEBUG_ARGS" "X.*--debug.*X" >/dev/null; then
376
  DEBUG_OPTIONS="-agentlib:jdwp=transport=dt_socket,address=8765,server=y,suspend=$DEBUG_PAUSE"
377
else
378
  DEBUG_OPTIONS=""
379
fi
380

  
381
################
382
# Launch gvSIG #
383
################
384

  
385
# For Java parameters documentation and more parameters look at:
386
# http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html
387
# http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
388

  
389
logger_info Launching gvSIG: ${JAVA} \
390
	$FORCE_JAVA_32BITS \
391
	-Xms${GVSIG_INITIAL_MEM} \
392
	-Xmx${GVSIG_MAX_MEM} \
393
	-XX:MaxPermSize=${GVSIG_MAX_PERM_SIZE} \
394
        $DEBUG_OPTIONS \
395
	-Djava.library.path=\"${GVSIG_NATIVE_LIBS}\" \
396
	-cp $GVSIG_CLASSPATH \
397
        $GVSIG_JAVA_PARAMS \
398
	$GVSIG_LAUNCHER $GVSIG_PARAMS
399

  
400
"${JAVA}" \
401
	$FORCE_JAVA_32BITS \
402
	-Xms${GVSIG_INITIAL_MEM} \
403
	-Xmx${GVSIG_MAX_MEM} \
404
	-XX:MaxPermSize=${GVSIG_MAX_PERM_SIZE} \
405
        $DEBUG_OPTIONS \
406
	-Djava.library.path="${GVSIG_NATIVE_LIBS}" \
407
	-cp "$GVSIG_CLASSPATH" \
408
        $GVSIG_JAVA_PARAMS \
409
	$GVSIG_LAUNCHER $GVSIG_PARAMS
410

  
1
#!/bin/bash
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
#
29
# Notes:
30
# - find command in busybox (win32) don't support "-exec"
31
# - trap command in busybox (win32) don't support "trap comando ERR"
32
# - busybox (win32) don't support statement "local"
33
#
34

  
35
#set -x
36
set -e
37

  
38
onerror() {
39
  set +x
40
  echo "Error executing the command:"
41
  echo ">>> $BASH_COMMAND <<<"
42
  echo "At line $BASH_LINENO"
43
  exit 1
44
}
45
#trap onerror ERR
46

  
47
####################
48
# Identify OS and Architecture  #
49
####################
50

  
51
UNAME=$(uname -a)
52
if echo "$UNAME" | grep -i "win" >/dev/null; then
53
	OS="win"
54
	ARG_D32=""
55
        CPSEP=";"
56
else
57
	if echo "$UNAME" | grep -i "lin" >/dev/null ; then
58
		OS="lin"
59
		# Only linux support -d32 arg
60
		ARG_D32="-d32"
61
                CPSEP=":"
62
	else
63
		OS="unknown"
64
		ARG_D32=""
65
                CPSEP=":"
66
	fi
67
fi
68
if echo "$UNAME" | egrep -i "(x86_64)|(amd64)" >/dev/null ; then
69
	ARCH="x86_64"
70
else
71
	ARCH="x86"
72
fi
73

  
74
########################
75

  
76
getJavaArchitecture() {
77
	if [ "$ARCH" = "x86" ] ; then
78
                # Si la arquitectura del SO es x86 decimos
79
                # que la de java es x86
80
		echo "x86"
81
	else
82
                # si la arquitectura es x86_64, comprobamos
83
                # la arquitectura de la java que nos pasan
84
		if "$1" -version 2>&1 | egrep -i "64-Bit" >/dev/null ; then
85
			echo "x86_64"
86
		else
87
			echo "x86"
88
		fi
89
	fi
90
}
91

  
92
#################################
93
# Set install and home folders  #
94
#################################
95

  
96
# Go into the gvSIG installation folder, just in case
97
x=$(dirname "$0")
98
cd "$x"
99

  
100
if [ "$GVSIG_APPLICATION_NAME" = "" ] ; then
101
  GVSIG_APPLICATION_NAME=gvSIG
102
fi
103
export GVSIG_APPLICATION_NAME
104

  
105
# gvSIG installation folder
106
export GVSIG_INSTALL_FOLDER="$PWD"
107

  
108
# gvSIG home folder
109
export GVSIG_HOME_FOLDER="$HOME/$GVSIG_APPLICATION_NAME"
110

  
111
if [ ! -d "$GVSIG_HOME_FOLDER" ] ; then
112
  mkdir -p "$GVSIG_HOME_FOLDER"
113
fi
114

  
115
####################
116
# Load config file #
117
####################
118

  
119
if [ -f "$GVSIG_INSTALL_FOLDER/gvSIG.config" ] ; then
120
  . "$GVSIG_INSTALL_FOLDER/gvSIG.config"
121
fi
122

  
123
#################
124
# Logger config #
125
#################
126

  
127
LOGGER_FILE="$GVSIG_HOME_FOLDER/${GVSIG_APPLICATION_NAME}-launcher.log"
128
echo > "$LOGGER_FILE"
129

  
130

  
131
logger () {
132
  # level (INFO/WARNIG) message
133
  LOGGER_LEVEL="$1"
134
  shift
135
  echo "$LOGGER_LEVEL launch $@"
136
  echo "$LOGGER_LEVEL launch $@" >> "$LOGGER_FILE"
137
}
138

  
139
logger_info () {
140
  logger "INFO" "$@"
141
}
142

  
143
logger_warn () {
144
  logger "WARNING" "$@"
145
}
146

  
147
logger_cmd() {
148
  logger_info "$@"
149
  eval $@ | tee -a  "$LOGGER_FILE"
150
}
151

  
152
#########################
153
# Locate whitch command #
154
#########################
155

  
156
if type which >/dev/null; then
157
        WHICH=which
158
else
159
        WHICH=type
160
fi
161

  
162
logger_info "gvSIG Installation folder: $GVSIG_INSTALL_FOLDER"
163
logger_info "gvSIG home folder: $GVSIG_HOME_FOLDER"
164

  
165
##########################################################
166
# Search in gvSIG/extensiones the architecture of plugins
167
# installeds and set as PREFERED_ARCHITECTURE
168
# Note: Busybox n windows don't support -exec in find
169
##########################################################
170

  
171
setPreferedArchitecture() {
172
  pf_foundArch=""
173
  pf_fname=""
174
  cd "$GVSIG_INSTALL_FOLDER"
175
  find . -name package.info | while read pf_fname
176
  do
177
    cat $fname
178
  done | grep "architecture=[^a]" | sort | head -n 1 | read pf_foundArch || true
179
  # El comando "read x" de la linea anterior puede fallar si 
180
  # no hay ningun plugin depdendiente de la arquitectura, por eso 
181
  # el "|| true" del final.
182
  if [ "X${pf_foundArch}X" != "XX" ] ; then
183
	  eval $pf_foundArch
184
	  PREFERED_ARCHITECTURE="$architecture"
185
  else
186
	  PREFERED_ARCHITECTURE="$ARCH"
187
  fi
188
  cd - >/dev/null
189
}
190

  
191
setPreferedArchitecture
192

  
193
##########################################################
194

  
195
export JAVA_HOME
196
export JAVA
197
export FORCE_JAVA_32BITS
198

  
199
FORCE_JAVA_32BITS=""
200
JAVA_HOME_OTHER_ARCHITECTURE=""
201

  
202
# PRIVATE JAVA HOMEs
203
PJH1=$(ls -dt "$GVSIG_HOME_FOLDER/jre/"*1.6* 2>/dev/null | head -1)
204
PJH2=$(ls -dt "$GVSIG_HOME_FOLDER/jre/"*1.5* 2>/dev/null | head -1)
205
PJH3=
206
PJH4=
207
PJH5=
208
PJH6=
209
if [ -d "$GVSIG_INSTALL_FOLDER/gvSIG/extensiones/jre_7_windows_i586/jre" ] ; then
210
    PJH5="$GVSIG_INSTALL_FOLDER/gvSIG/extensiones/jre_7_windows_i586/jre"
211
fi
212
if [ -d /usr/lib/jvm ] ; then
213
    PJH6=$(find /usr/lib/jvm -maxdepth 1 ! -name "jvm" -name "[a-zA-Z]*" ! -type l -print)
214
fi
215

  
216
#
217
# in next line, JAVA_HOME is set during instalation process
218
DEFAULT_JAVA_HOME="${JAVA_HOME}"
219
#
220
#
221
# Try to use java from:
222
# 1. Java specified in JAVA_HOME variable
223
# 2. Java specified in the instalation process
224
# 3. Java in the HOME/gvsig/jre folder (optionally created during installation process)
225
# 4. Java in the system path.
226
#
227

  
228
for JAVA_HOME_TO_USE in "$JAVA_HOME" "$DEFAULT_JAVA_HOME" "$PJH1" "$PJH2" "$PJH3" "$PJH4" "$PJH5" $PJH6 ""
229
do
230
        if [ "$JAVA_HOME_TO_USE" = "" ] ; then
231
                continue
232
        fi
233
	logger_info "Checking JAVA_HOME ${JAVA_HOME_TO_USE}..."
234
        if [ ! -d "$JAVA_HOME_TO_USE" ] ; then
235
                logger_warn "Folder not found ($JAVA_HOME_TO_USE), skip"
236
                continue
237
        fi
238
        if [ ! -x "$JAVA_HOME_TO_USE/bin/java" ] ; then
239
                logger_warn "Not a valid JAVA_HOME ($JAVA_HOME_TO_USE), bin/java not found, skip"
240
                continue
241
        fi
242
	JAVA_ARCH=$(getJavaArchitecture "$JAVA_HOME_TO_USE/bin/java")
243
	if [ "$JAVA_ARCH" != "$PREFERED_ARCHITECTURE" ] ; then
244
                JAVA_HOME_OTHER_ARCHITECTURE="$JAVA_HOME_TO_USE"
245
                logger_warn "Prefered architecture is $PREFERED_ARCHITECTURE, java $JAVA_ARCH found in $JAVA_HOME_TO_USE, skip"
246
                continue
247
        fi
248
        break
249
done
250

  
251
if [ "$JAVA_HOME_TO_USE" = "" ] ; then
252
        # Try to use the java in the system path
253
        if ! type java >/dev/null ; then
254
                # java not found in the system path
255
                if [ "$JAVA_HOME_OTHER_ARCHITECTURE" != "" ] ; then
256
                        JAVA_HOME="$JAVA_HOME_OTHER_ARCHITECTURE"
257
                        JAVA="$JAVA_HOME/bin/java"
258
                        logger_warn "java $PREFERED_ARCHITECTURE not found in the system path, using $JAVA_HOME_OTHER_ARCHITECTURE"
259
                else
260
                        logger_warn "java not found in the system"
261
                        exit 1
262
                fi
263
        else
264
		if [ "$(getJavaArchitecture $($WHICH java))" != "$PREFERED_ARCHITECTURE" ] ; then
265
                      logger_warn "java $PREFERED_ARCHITECTURE not found, using $($WHICH java)"
266
                fi
267
                unset JAVA_HOME
268
                JAVA="java"
269
        fi
270
else
271
        JAVA_HOME="$JAVA_HOME_TO_USE"
272
        JAVA="$JAVA_HOME/bin/java"
273
fi
274

  
275
if [ "$PREFERED_ARCHITECTURE" = "x86" ] ; then
276
	FORCE_JAVA_32BITS="$ARG_D32"
277
else
278
	FORCE_JAVA_32BITS=""
279

  
280
fi
281
logger_info "Using java " $($WHICH "$JAVA")
282

  
283
###################################################################
284
# gvSIG native libraries location
285
###################################################################
286

  
287
export GVSIG_NATIVE_LIBS=""
288
export LD_LIBRARY_PATH=""
289

  
290
add_library_path() {
291
  LD_LIBRARY_PATH="$LD_LIBRARY_PATH${CPSEP}$1"
292
  GVSIG_NATIVE_LIBS="$GVSIG_NATIVE_LIBS${CPSEP}$1"
293
}
294

  
295
list_shared_library_dependencies() {
296
  logger_info "Cheking shared library dependencies for $1"
297
  if [ "$OS" = "win" ] ; then
298
        logger_cmd cygcheck.exe "$1"
299
  else
300
        logger_cmd ldd "$1" 
301
  fi || logger_warn "Problens checking shared library $1"  || true
302
}
303

  
304
###################################################################
305
# gvSIG java libraries location
306
###################################################################
307

  
308
export LIBRARIES=""
309
# Load gvSIG Andami jars and dependencies for the classpath
310
for i in "$GVSIG_INSTALL_FOLDER/lib/"*.jar ; do
311
  if [ "$i" != "$GVSIG_INSTALL_FOLDER/lib/*.jar" -a "$i" != "" ]; then
312
    LIBRARIES="${LIBRARIES}${CPSEP}${i}"
313
  fi
314
done
315
for i in "$GVSIG_INSTALL_FOLDER/lib/"*.zip ; do
316
  if [ "$i" != "$GVSIG_INSTALL_FOLDER/lib/*.zip" -a "$i" != "" ]; then
317
    LIBRARIES="${LIBRARIES}${CPSEP}${i}"
318
  fi
319
done
320

  
321
# echo Initial libraries found: ${LIBRARIES}
322

  
323
# gvSIG Andami launcher
324

  
325
if [ "$GVSIG_LAUNCHER" = "" ] ; then
326
  GVSIG_LAUNCHER=org.gvsig.andamiupdater.Updater
327
fi
328
if [ "$GVSIG_PARAMS" = "" ] ; then
329
  GVSIG_PARAMS="$GVSIG_APPLICATION_NAME gvSIG/extensiones $@"
330
fi
331

  
332
export GVSIG_LAUNCHER
333
export GVSIG_PARAMS
334

  
335
# gvSIG initial classpath
336
export GVSIG_CLASSPATH="$LIBRARIES:$GVSIG_CLASSPATH"
337

  
338
########################
339
# Memory configuration #
340
########################
341

  
342
# Initial gvSIG memory (M=Megabytes, G=Gigabytes)
343
export GVSIG_INITIAL_MEM=256M
344
# Maximum gvSIG memory (M=Megabytes, G=Gigabytes)
345
export GVSIG_MAX_MEM=1024M
346
# Maximum permanent memory size: needed to load classes and statics
347
export GVSIG_MAX_PERM_SIZE=128M
348

  
349

  
350
#############################
351
# Execute plugin's autorun  #
352
#############################
353

  
354
for PLUGIN_FOLDER in "$GVSIG_INSTALL_FOLDER/gvSIG/extensiones/"*
355
do
356
  if [ -f "$PLUGIN_FOLDER/autorun.sh" ] ; then
357
    logger_info "Running autorun from plugin " $(basename "$PLUGIN_FOLDER")
358
    . "$PLUGIN_FOLDER/autorun.sh"
359
    cd "$GVSIG_INSTALL_FOLDER"
360
  fi
361
done
362

  
363
if [ "$OS" = "win" ] ; then
364
	add_library_path "$GVSIG_INSTALL_FOLDER"
365
else
366
	add_library_path "/usr/lib"
367
fi
368

  
369
logger_info "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
370

  
371
#####################
372
# Java debug mode ? #
373
#####################
374

  
375
DEBUG_ARGS="X${@}X"
376
if expr match "$DEBUG_ARGS" "X.*--pause.*X" >/dev/null; then
377
    DEBUG_PAUSE="y"
378
else
379
    DEBUG_PAUSE="n"
380
fi
381

  
382
if expr match "$DEBUG_ARGS" "X.*--debug.*X" >/dev/null; then
383
  DEBUG_OPTIONS="-agentlib:jdwp=transport=dt_socket,address=8765,server=y,suspend=$DEBUG_PAUSE"
384
else
385
  DEBUG_OPTIONS=""
386
fi
387

  
388
################
389
# Launch gvSIG #
390
################
391

  
392
# For Java parameters documentation and more parameters look at:
393
# http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html
394
# http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
395

  
396
logger_info Launching gvSIG: ${JAVA} \
397
	$FORCE_JAVA_32BITS \
398
	-Xms${GVSIG_INITIAL_MEM} \
399
	-Xmx${GVSIG_MAX_MEM} \
400
	-XX:MaxPermSize=${GVSIG_MAX_PERM_SIZE} \
401
        $DEBUG_OPTIONS \
402
	-Djava.library.path=\"${GVSIG_NATIVE_LIBS}\" \
403
	-cp $GVSIG_CLASSPATH \
404
        $GVSIG_JAVA_PARAMS \
405
	$GVSIG_LAUNCHER $GVSIG_PARAMS
406

  
407
"${JAVA}" \
408
	$FORCE_JAVA_32BITS \
409
	-Xms${GVSIG_INITIAL_MEM} \
410
	-Xmx${GVSIG_MAX_MEM} \
411
	-XX:MaxPermSize=${GVSIG_MAX_PERM_SIZE} \
412
        $DEBUG_OPTIONS \
413
	-Djava.library.path="${GVSIG_NATIVE_LIBS}" \
414
	-cp "$GVSIG_CLASSPATH" \
415
        $GVSIG_JAVA_PARAMS \
416
	$GVSIG_LAUNCHER $GVSIG_PARAMS
417

  

Also available in: Unified diff