source: main/branches/stable_gs3/gli/gems.sh@ 21832

Last change on this file since 21832 was 20968, checked in by oranfry, 14 years ago

gems.sh uses bah features so should have a bash shebang

  • Property svn:executable set to *
File size: 14.1 KB
Line 
1#!/bin/bash
2
3# Function that, when given gsdlpath as parameter, will return the
4# version of greenstone that is to run (2 or 3). If things are not,
5# this program will exit here.
6get_version() {
7 # first parameter is value of gsdlpath
8 if [ -f "${1}/gs3-setup.sh" ]; then
9 return 3
10 elif [ -f "${1}/setup.bash" ]; then
11 return 2
12 else
13 echo "Error: can't determine which Greenstone version is being run."
14 exit 1
15 fi
16}
17
18# Function that is passed the following paramters (in order):
19# - the gsdlpath (GS3 home, GS2 home or gs2build for GS3),
20# - the version of greenstone that's running, and
21# - the language GLI is set to
22# and checks the installation.
23# If things are not right, this program will exit here.
24check_installation() {
25# Check that the Greenstone installation looks OK
26 if [ "$3" = "es" ]; then
27 echo "Revisando GSDL$2: $1"
28 elif [ "$3" = "fr" ]; then
29 echo "Vérification de GSDL$2: $1"
30 elif [ "$3" = "ru" ]; then
31 echo "ðÒÏ×ÅÒËÁ GSDL$2: $1"
32 else
33 echo "Checking GSDL$2: $1"
34 fi
35 # even if we are only checking for gs2build (gsdl2path), we still
36 # need the file setup.bash to exist in the following condition:
37 if [ ! -f "${1}/gs3-setup.sh" -a ! -f "${1}/setup.bash" ] ; then
38 echo
39 if [ "$3" = "es" ]; then
40 echo "No se pudo encontrar la instalación de Greenstone $2 o está incompleta."
41 echo "Trate de reinstalar Greenstone $2 y a continuación ejecute nuevamente"
42 echo "este guión."
43 elif [ "$3" = "fr" ]; then
44 echo "L'installation de Greenstone $2 est introuvable ou incomplète."
45 echo "Essayez de réinstaller Greenstone $2 et exécutez ce script à nouveau."
46 elif [ "$3" = "ru" ]; then
47 echo "éÎÓÔÁÌÌÑÃÉÑ Greenstone $_version ÎÅ ÂÙÌÁ ÎÁÊÄÅÎÁ ÉÌÉ ÏÎÁ ÎÅÐÏÌÎÁ."
48 echo "ðÏÐÒÏÂÕÊÔÅ ÐÏ×ÔÏÒÎÏ ÕÓÔÁÎÏ×ÉÔØ Greenstone $2, Á ÚÁÔÅÍ ××ÅÓÔÉ ÜÔÏÔ ÓËÒÉÐÔ ÓÎÏ×Á."
49 else
50 echo "The Greenstone $2 installation could not be found, or is incomplete."
51 echo "Try reinstalling Greenstone $2 then running this script again."
52 fi
53 exit 1
54 fi
55}
56
57glilang=en
58
59if [ "$glilang" = "es" ]; then
60 PROGNAME="Editar conjuntos de metadatos"
61elif [ "$glilang" = "fr" ]; then
62 PROGNAME="Editer les jeux de méta-données"
63elif [ "$glilang" = "ru" ]; then
64 PROGNAME="òÅÄÁËÔÉÒÏ×ÁÔØ ÎÁÂÏÒÙ ÍÅÔÁÄÁÎÎÙÈ"
65else
66 PROGNAME="Greenstone Editor for Metadata Sets"
67fi
68
69PROGABBR="GEMS"
70
71PROGNAME_EN="Greenstone Editor for Metadata Sets"
72
73
74echo
75if [ "$glilang" = "es" ]; then
76 echo "$PROGNAME ($PROGNAME_EN - $PROGABBR)"
77 echo "Copyright (C) 2008, New Zealand Digital Library Project, University Of Waikato"
78 echo "GEMS NO INCLUYE ABSOLUTAMENTE NINGUNA GARANTÍA."
79 echo "Para mayor información vea los términos de la licencia en LICENSE.txt"
80 echo "Este es un software abierto, por lo que lo invitamos a que lo distribuya de forma gratuita"
81elif [ "$glilang" = "fr" ]; then
82 echo "$PROGNAME ($PROGNAME_EN - $PROGABBR)"
83 echo "Copyright (C) 2008, New Zealand Digital Library Project, University Of Waikato"
84 echo "GEMS est fourni sans AUCUNE GARANTIE; pour des détails, voir LICENSE.txt"
85 echo "Ceci est un logiciel libre, et vous êtes invité à le redistribuer"
86elif [ "$glilang" = "ru" ]; then
87 echo "$PROGNAME ($PROGNAME_EN - $PROGABBR)"
88 echo "Copyright (C) 2008, New Zealand Digital Library Project, University Of Waikato"
89 echo "âéç ÎÅ ÄÁÅÔ áâóïìàôîï îéëáëéè çáòáîôéê; ÄÅÔÁÌÉ ÓÍ. × ÔÅËÓÔÅ LICENSE.TXT"
90 echo "üÔÏ - Ó×ÏÂÏÄÎÏ ÒÁÓÐÒÏÓÔÒÁÎÑÅÍÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ É ÷Ù ÍÏÖÅÔÅ ÒÁÓÐÒÏÓÔÒÁÎÑÔØ ÅÇÏ"
91else
92 echo "$PROGNAME ($PROGABBR)"
93 echo "Copyright (C) 2008, New Zealand Digital Library Project, University Of Waikato"
94 echo "GEMS comes with ABSOLUTELY NO WARRANTY; for details see LICENSE.txt"
95 echo "This is free software, and you are welcome to redistribute it"
96fi
97echo
98
99## -------- Run the Greenstone Editor for Metadata Sets --------
100
101# This script must be run from within the directory in which it lives
102thisdir=`pwd`
103if [ ! -f "${thisdir}/gems.sh" ]; then
104 if [ "$glilang" = "es" ]; then
105 echo "Este guión deberá ejecutarse desde el directorio en el que reside."
106 elif [ "$glilang" = "fr" ]; then
107 echo "Ce script doit être exécuté à partir du répertoire dans lequel il se trouve."
108 elif [ "$glilang" = "ru" ]; then
109 echo "üÔÏÔ ÓËÒÉÐÔ ÄÏÌÖÅÎ ÂÙÔØ ×ÚÑÔ ÉÚ ÄÉÒÅËÔÏÒÉÉ, × ËÏÔÏÒÏÊ ÏÎ ÒÁÓÐÏÌÏÖÅÎ"
110 else
111 echo "This script must be run from the directory in which it resides."
112 fi
113 exit 1
114fi
115
116
117## ---- Determine GSDLHOME ----
118## gsdlpath can be either Greenstone 3 or Greenstone 2
119gsdlpath=
120# Some users may set the above line manually
121
122
123# This variable is set automatically:
124_version=
125if [ "x$gsdlpath" != "x" ]; then
126 get_version $gsdlpath
127 _version=$?
128# otherwise $gsdlpath is not yet set
129else
130 # Check the environment variable first
131 # Check whether environment variables for both GS2 and GS3 are set
132 # and if so, warn the user that we have defaulted to GS3
133 if [ "x$GSDLHOME" != "x" -a "x$GSDL3SRCHOME" != "x" ]; then
134 # _version not set, but both env vars set, so default to 3
135 _version=3
136 gsdlpath=$GSDL3SRCHOME
137 echo "Both Greenstone 2 and Greenstone 3 environments are set."
138 echo "It is assumed you want to run Greenstone 3."
139 echo "If you want to run Greenstone 2, please unset the"
140 echo "environment variable GSDL3SRCHOME before running GLI."
141 echo ""
142 elif [ "x$GSDL3SRCHOME" != "x" ]; then
143 echo "Only gsdl3srchome set"
144 gsdlpath=$GSDL3SRCHOME
145 _version=3
146 echo "$gsdlpath"
147 elif [ "x$GSDLHOME" != "x" ]; then
148 gsdlpath=$GSDLHOME
149 _version=2
150 # If it is not set, assume that the GLI is installed as a subdirectory of Greenstone
151 else
152 gsdlpath=`(cd .. && pwd)`
153 # Still need to find what version we are running:
154 # GS3 main directory contains file gs3-setup.sh, GS2 only setup.bash
155 get_version $gsdlpath
156 _version=$?
157 fi
158fi
159
160echo "Greenstone version found: $_version"
161
162# Check that the main Greenstone installation for the version we're running looks OK
163check_installation $gsdlpath $_version $glilang
164
165
166# Need to source the correct setup file depending on whether we are running
167# gs3 or gs2
168# If we're running version GS2
169if [ "$_version" -eq 2 ]; then
170 # Setup Greenstone 2, unless it has already been done
171 if [ "x$GSDLHOME" = "x" ]; then
172 cd "$gsdlpath"
173 . setup.bash
174 cd "$thisdir"
175 fi
176# else, if we're running GS3
177elif [ "$_version" -eq 3 ]; then
178 # Setup Greenstone 3, unless it has already been done
179 if [ "x$GSDL3HOME" = "x" -o "x$GSDL3SRCHOME" = "x" ]; then
180 cd "$gsdlpath"
181 . gs3-setup.sh
182 cd "$thisdir"
183 fi
184
185 ## if Greenstone version 3 is running, we want to set gsdl2path
186 ## ---- Determine GSDLHOME ----
187 ## may be already set, or manually entered here.
188 gsdl2path=
189
190 # Some users may set the above line manually
191 if [ "x$gsdl2path" = "x" ]; then
192 # Check the environment variable first
193 if [ "x$GSDLHOME" != "x" ]; then
194 echo "GSDLHOME environment variable is set to $GSDLHOME."
195 echo "Will use this to find build scripts."
196 gsdl2path=$GSDLHOME
197 # If it is not set, assume that the gs2build subdirectory of Greenstone 3 exists
198 else
199 gsdl2path=$GSDL3SRCHOME/gs2build
200 fi
201 fi
202 # Check that Greenstone 3's Greenstone 2 stuff looks OK (in gs2build)
203 check_installation $gsdl2path "" $glilang
204
205 # Setup Greenstone 3's gs2build, unless it has already been done
206 if [ "x$GSDLHOME" = "x" ]; then
207 cd "$gsdl2path"
208 . setup.bash
209 cd "$thisdir"
210 fi
211
212else
213 echo "Greenstone version unknown."
214 exit 1
215fi
216
217echo
218if [ "x$GSDL3SRCHOME" != "x" ]; then
219 echo "GSDL3SRCHOME is: $GSDL3SRCHOME"
220fi
221if [ "x$GSDL3HOME" != "x" ]; then
222 echo "GSDL3HOME is: $GSDL3HOME"
223fi
224if [ "x$GSDLHOME" != "x" ]; then
225 echo "GSDLHOME is: $GSDLHOME"
226fi
227echo
228
229
230
231## ---- Check Java ----
232echo "Java:"
233MINIMUM_JAVA_VERSION=1.4.0_00
234
235# Some users may set this line manually
236#JAVA_HOME=
237
238if [ -z $javapath ]; then
239
240 # sus out search4j
241 if [ "$_version" -eq 2 -a -e "$GSDLHOME/bin/$GSDLOS/search4j" ]; then
242 SEARCH4J_EXECUTABLE=$GSDLHOME/bin/$GSDLOS/search4j
243 elif [ "$_version" -eq 3 -a -e "$GSDL3SRCHOME/bin/$GSDLOS/search4j" ]; then
244 SEARCH4J_EXECUTABLE=$GSDL3SRCHOME/bin/search4j
245 elif [ -e "../bin/$GSDLOS/search4j" ]; then
246 SEARCH4J_EXECUTABLE=../bin/$GSDLOS/search4j
247 elif [ -e "../bin/search4j" ]; then
248 SEARCH4J_EXECUTABLE=../bin/search4j
249 else
250 echo "Couldn't determine the location of the search4j executable"
251 echo "If you are running Greenstone2"
252 echo " * check GSDLHOME is set"
253 echo " * check bin/$GSDLOS/search4j exists"
254 echo " * check bin/$GSDLOS/search4j is executable"
255 echo "If you are running Greenstone3"
256 echo " * check GSDL3SRCHOME is set"
257 echo " * check bin/search4j exists"
258 echo " * check bin/search4j is executable"
259 echo " * try running 'ant compile-search4j'"
260 fi
261
262 # Give search4j a hint to find Java depending on the platform
263 if [ $GSDLOS = linux ]; then
264 HINT=`cd ..;pwd`/packages/jre
265 elif [ $GSDLOS = darwin ]; then
266 HINT=/System/Library/Frameworks/JavaVM.framework/Home
267 fi
268
269 javapath=`$SEARCH4J_EXECUTABLE -e -p $HINT -m $MINIMUM_JAVA_VERSION`
270
271 if [ "$?" != "0" ]; then
272
273 OLDVER=`"$SEARCH4J_EXECUTABLE" -v -p "$HINT"`
274
275 if [ "$?" = "0" ]; then
276
277 if [ "$glilang" = "es" ]; then
278 echo "La versión del Ambiente de Ejecución Java (JRE por sus siglas en "
279 echo "inglés) que usted tiene instalada es demasiado vieja para ejecutar "
280 echo "la Interfaz de la $PROGNAME. Por favor instale "
281 echo "una nueva versión del Ambiente de Ejecución Java (versión $MINIMUM_JAVA_VERSION o "
282 echo "posterior) y ejecute nuevamente este guión."
283 elif [ "$glilang" = "fr" ]; then
284 echo "La version de Java Runtime Environment que vous avez installée est"
285 echo "trop vielle pour faire fonctionner $PROGNAME."
286 echo "Veuillez installer une nouvelle version du JRE (version $MINIMUM_JAVA_VERSION ou plus"
287 echo "récente) et redémarrez le script."
288 elif [ "$glilang" = "ru" ]; then
289 echo "÷ÅÒÓÉÑ Java Runtime Environment, ËÏÔÏÒÕÀ ÷Ù ÕÓÔÁÎÏ×ÉÌÉ, ÏÞÅÎØ ÓÔÁÒÁ,"
290 echo "ÞÔÏÂÙ ÕÐÒÁ×ÌÑÔØ ÂÉÂÌÉÏÔÅÞÎÙÍ $PROGNAME. ðÏÖÁÌÕÊÓÔÁ, "
291 echo "ÕÓÔÁÎÏ×ÉÔÅ ÎÏ×ÕÀ ×ÅÒÓÉÀ JRE (×ÅÒÓÉÀ $MINIMUM_JAVA_VERSION ÉÌÉ ÂÏÌÅÅ ÎÏ×ÕÀ) É"
292 echo "ÐÅÒÅÕÓÔÁÎÏ×ÉÔÅ ÜÔÏÔ ÓËÒÉÐÔ"
293 else
294 echo "The version of the Java Runtime Environment you have installed ($OLDVER)"
295 echo "is too old to run the $PROGNAME. Please install a new"
296 echo "version of the JRE (version $MINIMUM_JAVA_VERSION or newer) and rerun this script."
297 fi
298 exit 1
299
300 else
301
302 echo
303 if [ "$glilang" = "es" ]; then
304 echo "No se pudo localizar una versión apropiada de Java. Usted deberá "
305 echo "instalar un Ambiente de Ejecución Java (versión $MINIMUM_JAVA_VERSION o superior) "
306 echo "antes de correr la Interfaz de la $PROGNAME."
307 elif [ "$glilang" = "fr" ]; then
308 echo "Une version adéquate de Java n'a pas pu être localisée."
309 echo "Vous devez installer un Java Runtime Environment (version $MINIMUM_JAVA_VERSION ou"
310 echo "supérieur) avant de démarrer $PROGNAME."
311 echo "Si vous avez Java installé sur votre ordinateur veuillez vérifier la variable"
312 echo "d'environnement JAVA_HOME."
313 elif [ "$glilang" = "ru" ]; then
314 echo "îÅ ÕÄÁÌÏÓØ ÏÐÒÅÄÅÌÉÔØ ÍÅÓÔÏÎÁÈÏÖÄÅÎÉÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ×ÅÒÓÉÉ Java."
315 echo "÷Ù ÄÏÌÖÎÙ ÕÓÔÁÎÏ×ÉÔØ Java Runtime Environment (×ÅÒÓÉÀ $MINIMUM_JAVA_VERSION ÉÌÉ ×ÙÛÅ)"
316 echo "ÐÅÒÅÄ ××ÏÄÏÍ ÂÉÂÌÉÏÔÅÞÎÏÇÏ $PROGNAME."
317 else
318 echo "Failed to locate an appropriate version of Java. You must install a"
319 echo "Java Runtime Environment (version $MINIMUM_JAVA_VERSION or greater) before running the"
320 echo "$PROGNAME."
321 echo "If you have Java intalled on your machine please set the environment variable JAVA_HOME."
322 fi
323 fi
324
325 fi
326
327fi
328echo $javapath
329echo
330
331
332
333## ---- Check that the GEMS has been compiled ----
334if [ ! -f "classes/org/greenstone/gatherer/gems/GEMS.class" ] && [ ! -f "GLI.jar" ]; then
335 echo
336 if [ "$glilang" = "es" ]; then
337 echo "Usted necesita compilar la $PROGNAME"
338 echo "(por medio de makegli.sh) antes de ejecutar este guión."
339 elif [ "$glilang" = "fr" ]; then
340 echo "Vous devez compiler le $PROGNAME (en utilisant makegli.sh)"
341 echo "avant d'exécuter ce script."
342 elif [ "$glilang" = "ru" ]; then
343 echo "÷Ù ÄÏÌÖÎÙ ËÏÍÐÉÌÉÒÏ×ÁÔØ $PROGNAME"
344 echo "(ÉÓÐÏÌØÚÕÑ makegli.sh) ÐÅÒÅÄ ××ÏÄÏÍ ÜÔÏÇÏ ÓËÒÉÐÔÁ"
345 else
346 echo "You need to compile the $PROGNAME (using makegli.sh)"
347 echo "before running this script."
348 fi
349 exit 1
350fi
351
352## ---- Finally, run the GEMS ----
353echo
354if [ "$glilang" = "es" ]; then
355 echo "Ejecutando la $PROGNAME..."
356elif [ "$glilang" = "fr" ]; then
357 echo "Exécution de $PROGNAME..."
358elif [ "$glilang" = "ru" ]; then
359 echo "ôÅËÕÝÉÊ ÂÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME..."
360else
361 echo "Running the $PROGNAME..."
362fi
363
364# Other arguments you can provide to GEMS to work around memory limitations, or debug
365# -Xms<number>M To set minimum memory (by default 32MB)
366# -Xmx<number>M To set maximum memory (by default the nearest 2^n to the total remaining physical memory)
367# -verbose:gc To set garbage collection messages
368# -Xincgc For incremental garbage collection (significantly slows performance)
369# -Xprof Function call profiling
370# -Xloggc:<file> Write garbage collection log
371
372# basic_command is the cmd string common to both Greenstone 3 and Greenstone 2 execution
373# (gs3 doesn't -gsdl3src $GSDL3SRCHOME passed to it, it needs $GSDL3HOME to find the collect dir)
374basic_command="$javapath -classpath classes/:GLI.jar:lib/apache.jar org.greenstone.gatherer.gems.GEMS"
375
376if [ "$_version" -eq 2 ]; then
377 `$basic_command -gsdl $GSDLHOME $*`
378elif [ "$_version" -eq 3 ]; then
379 `$basic_command -gsdl3 $GSDL3HOME $*`
380fi
381
382
383if [ "$glilang" = "es" ]; then
384 echo "¡Hecho!"
385elif [ "$glilang" = "fr" ]; then
386 echo "Terminé!"
387elif [ "$glilang" = "ru" ]; then
388 echo "÷ÙÐÏÌÎÅÎÏ!"
389else
390 echo "Done!"
391fi
Note: See TracBrowser for help on using the repository browser.