Statistics
| Revision:

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

History | View | Annotate | Download (8.44 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 [ "$OS" = "win" ] ; then
69
			if "$1" -version 2>&1 | egrep -i "64-Bit" >/dev/null ; then
70
				echo "x86_64"
71
			else
72
				echo "x86"
73
			fi
74
		else 
75
			if ! "$1" -d32 -version 2>/dev/null ; then
76
				echo "x86_64"
77
			else
78
				echo "x86"
79
			fi
80
		fi
81
	fi 
82
}
83

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

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

    
91
if [ "$GVSIG_APPLICATION_NAME" = "" ] ; then
92
  GVSIG_APPLICATION_NAME=gvSIG
93
fi
94
export GVSIG_APPLICATION_NAME
95

    
96
# gvSIG installation folder
97
export GVSIG_INSTALL_FOLDER="$PWD"
98

    
99
# gvSIG home folder
100
export GVSIG_HOME_FOLDER="$HOME/$GVSIG_APPLICATION_NAME"
101

    
102
#################
103
# Logger config #
104
#################
105

    
106
LOGGER_FILE="$GVSIG_HOME_FOLDER/${GVSIG_APPLICATION_NAME}.log"
107

    
108
logger () {
109
  # level (INFO/WARNIG) message
110
  local LOGGER_LEVEL="$1"
111
  shift
112
  echo "$LOGGER_LEVEL launch $@"
113
  if [ ! -f "$LOGGER_FILE" ] ; then
114
    mkdir -p "$(dirname $LOGGER_FILE)"
115
  fi
116
  echo "$LOGGER_LEVEL launch $@" >> "$LOGGER_FILE"
117
}
118

    
119
logger_info () {
120
  logger "INFO" "$@"
121
}
122

    
123
logger_warn () {
124
  logger "WARNING" "$@"
125
}
126

    
127
#########################
128
# Locate whitch command #
129
#########################
130

    
131
if type which >/dev/null; then
132
        WHICH=which
133
else
134
        WHICH=type
135
fi
136

    
137
logger_info "gvSIG Installation folder: $GVSIG_INSTALL_FOLDER"
138
logger_info "gvSIG home folder: $GVSIG_HOME_FOLDER"
139

    
140
###########################################
141
# Variables depending on the installation #
142
###########################################
143

    
144
FORCE_JAVA_32BITS=""
145
JAVA_HOME_OTHER_ARCHITECTURE=""
146

    
147
# PRIVATE JAVA HOMEs
148
PJH1=$(ls -dt "$GVSIG_HOME_FOLDER/jre/"*1.6* | head -1)
149
PJH2=$(ls -dt "$GVSIG_HOME_FOLDER/jre/"*1.5* | head -1)
150
PJH3="$GVSIG_INSTALL_FOLDER/gvSIG/extensiones/jre_6_windows_i586/jre"
151
PJH4=
152
PJH5=
153

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

    
169
for JAVA_HOME_TO_USE in "$JAVA_HOME" "$DEFAULT_JAVA_HOME" "$PJH1" "$PJH2" "$PJH3" "$PJH4" "$PJH5"  ""
170
do
171
        if [ "$JAVA_HOME_TO_USE" = "" ] ; then
172
                continue
173
        fi
174
        if [ ! -d "$JAVA_HOME_TO_USE" ] ; then
175
                logger_warn "Incorrect JAVA_HOME ($JAVA_HOME_TO_USE), skip"
176
                continue
177
        fi
178
        if [ ! -x "$JAVA_HOME_TO_USE/bin/java" ] ; then
179
                logger_warn "Incorrect JAVA_HOME ($JAVA_HOME_TO_USE), bin/java not found, skip"
180
                continue
181
        fi
182
	if [ "$(getJavaArchitecture $JAVA_HOME_TO_USE/bin/java)" = "x86_64" ] ; then
183
                JAVA_HOME_OTHER_ARCHITECTURE="$JAVA_HOME_TO_USE"
184
                logger_warn "java 32 bits not found in $JAVA_HOME_TO_USE, skip"
185
                continue
186
        fi
187
        break
188
done
189

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

    
220
###################################################################
221
# Variables not depending (at least directly) on the installation #
222
###################################################################
223

    
224
# gvSIG native libraries location 
225
export GVSIG_NATIVE_LIBS=${GVSIG_INSTALL_FOLDER}/native:${HOME}/.depman/lib
226

    
227
# Native libraries path
228
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$GVSIG_NATIVE_LIBS"
229

    
230
export LIBRARIES=""
231
# Load gvSIG Andami jars and dependencies for the classpath 
232
for i in ./lib/*.jar ; do
233
  if [ "$i" != "./lib/*.jar" -a "$i" != "" ]; then
234
	LIBRARIES="${LIBRARIES}${CPSEP}${i}"
235
  fi 
236
done
237
for i in ./lib/*.zip ; do
238
  if [ "$i" != "./lib/*.zip" -a "$i" != "" ]; then
239
	LIBRARIES="${LIBRARIES}${CPSEP}${i}"
240
  fi 
241
done
242

    
243
# echo Initial libraries found: ${LIBRARIES}
244

    
245
# gvSIG Andami launcher
246

    
247
if [ "$GVSIG_LAUNCHER" = "" ] ; then
248
  GVSIG_LAUNCHER=org.gvsig.andamiupdater.Updater
249
fi
250
if [ "$GVSIG_PARAMS" = "" ] ; then
251
  GVSIG_PARAMS="$GVSIG_APPLICATION_NAME gvSIG/extensiones $@"
252
fi
253

    
254
export GVSIG_LAUNCHER
255
export GVSIG_PARAMS
256

    
257
# gvSIG initial classpath
258
export GVSIG_CLASSPATH="$LIBRARIES:$GVSIG_CLASSPATH"
259

    
260
########################
261
# Memory configuration #
262
########################
263

    
264
# Initial gvSIG memory (M=Megabytes, G=Gigabytes)
265
export GVSIG_INITIAL_MEM=128M
266
# Maximum gvSIG memory (M=Megabytes, G=Gigabytes)
267
export GVSIG_MAX_MEM=512M
268
# Maximum permanent memory size: needed to load classes and statics
269
export GVSIG_MAX_PERM_SIZE=96M
270

    
271

    
272
#############################
273
# Plugin specific variables #
274
#############################
275

    
276
### ecw provider
277
export NCS_USER_PREFS="$HOME/.erm/ncsuserprefs.xml"
278

    
279
### gdal provider
280
# GDAL data files
281
export GDAL_DATA="${GVSIG_INSTALL_FOLDER}/data/gdal"
282

    
283
#############################
284
# Execute plugin's autorun  #
285
#############################
286

    
287
for PLUGIN_FOLDER in "$GVSIG_INSTALL_FOLDER/gvSIG/extensiones/"* 
288
do
289
  if [ -f "$PLUGIN_FOLDER/autorun.sh" ] ; then
290
    logger_info "Running autorun from plugin $(basename $PLUGIN_FOLDER)"
291
    . "$PLUGIN_FOLDER/autorun.sh"
292
  fi
293
done
294

    
295
logger_info "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
296

    
297
################
298
# Launch gvSIG #
299
################
300

    
301
# For Java parameters documentation and more parameters look at:
302
# http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html
303
# http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
304

    
305
logger_info Launching gvSIG: ${JAVA} \
306
	$FORCE_JAVA_32BITS \
307
	-Djava.library.path="${GVSIG_NATIVE_LIBS}":/usr/lib \
308
	-cp $GVSIG_CLASSPATH \
309
	-Xms${GVSIG_INITIAL_MEM} \
310
	-Xmx${GVSIG_MAX_MEM} \
311
	-XX:MaxPermSize=${GVSIG_MAX_PERM_SIZE} \
312
	$GVSIG_LAUNCHER $GVSIG_PARAMS
313

    
314

    
315
"${JAVA}" -cp "$GVSIG_CLASSPATH" $GVSIG_LAUNCHER $GVSIG_PARAMS