source: gli/trunk/gli.sh@ 17672

Last change on this file since 17672 was 17672, checked in by max, 15 years ago

Explain how to bypass Ghostscript/Imagemagick bundled with Greenstone if needed.

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 17.6 KB
Line 
1#!/bin/sh
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 [ "x$PROGNAME" = "x" ] ; then
60 if [ "$glilang" = "es" ]; then
61 PROGNAME="Biblioteca Digital Greenstone"
62 elif [ "$glilang" = "fr" ]; then
63 PROGNAME="Bibliothécaire Greenstone"
64 elif [ "$glilang" = "ru" ]; then
65 PROGNAME="ÉÎÔÅÒÆÅÊÓ Greenstone"
66 else
67 PROGNAME="Greenstone Librarian Interface"
68 fi
69fi
70
71if [ "x$PROGABBR" = "x" ] ; then
72 PROGABBR="GLI"
73fi
74
75if [ "x$PROGNAME_EN" = "x" ] ; then
76 PROGNAME_EN="Greenstone Librarian Interface"
77fi
78
79echo
80if [ "$glilang" = "es" ]; then
81 echo "Interfaz de la $PROGNAME ($PROGNAME_EN - $PROGABBR)"
82 echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato"
83 echo "La Interfaz de la $PROGNAME NO INCLUYE ABSOLUTAMENTE NINGUNA GARANTÍA."
84 echo "Para mayor información vea los términos de la licencia en LICENSE.txt"
85 echo "Este es un software abierto, por lo que lo invitamos a que lo distribuya de forma gratuita"
86elif [ "$glilang" = "fr" ]; then
87 echo "Interface du $PROGNAME ($PROGNAME_EN - $PROGABBR)"
88 echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato"
89 echo "$PROGABBR est fourni sans AUCUNE GARANTIE; pour des détails, voir LICENSE.txt"
90 echo "Ceci est un logiciel libre, et vous êtes invité à le redistribuer"
91elif [ "$glilang" = "ru" ]; then
92 echo "âÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME ($PROGNAME_EN - $PROGABBR)"
93 echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato"
94 echo "âéç ÎÅ ÄÁÅÔ áâóïìàôîï îéëáëéè çáòáîôéê; ÄÅÔÁÌÉ ÓÍ. × ÔÅËÓÔÅ LICENSE.TXT"
95 echo "üÔÏ - Ó×ÏÂÏÄÎÏ ÒÁÓÐÒÏÓÔÒÁÎÑÅÍÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ É ÷Ù ÍÏÖÅÔÅ ÒÁÓÐÒÏÓÔÒÁÎÑÔØ ÅÇÏ"
96else
97 echo "$PROGNAME ($PROGABBR)"
98 echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato"
99 echo "$PROGABBR comes with ABSOLUTELY NO WARRANTY; for details see LICENSE.txt"
100 echo "This is free software, and you are welcome to redistribute it"
101fi
102echo
103
104## -------- Run the Greenstone Librarian Interface --------
105
106# This script must be run from within the directory in which it lives
107thisdir=`pwd`
108if [ ! -f "${thisdir}/gli.sh" ]; then
109 if [ "$glilang" = "es" ]; then
110 echo "Este guión deberá ejecutarse desde el directorio en el que reside."
111 elif [ "$glilang" = "fr" ]; then
112 echo "Ce script doit être exécuté à partir du répertoire dans lequel il se trouve."
113 elif [ "$glilang" = "ru" ]; then
114 echo "üÔÏÔ ÓËÒÉÐÔ ÄÏÌÖÅÎ ÂÙÔØ ×ÚÑÔ ÉÚ ÄÉÒÅËÔÏÒÉÉ, × ËÏÔÏÒÏÊ ÏÎ ÒÁÓÐÏÌÏÖÅÎ"
115 else
116 echo "This script must be run from the directory in which it resides."
117 fi
118 exit 1
119fi
120
121
122## ---- Determine GSDLHOME ----
123## gsdlpath can be either Greenstone 3 or Greenstone 2
124gsdlpath=
125# Some users may set the above line manually
126
127
128# This variable is set automatically:
129_version=
130if [ "x$gsdlpath" != "x" ]; then
131 get_version $gsdlpath
132 _version=$?
133# otherwise $gsdlpath is not yet set
134else
135 # Check the environment variable first
136 # Check whether environment variables for both GS2 and GS3 are set
137 # and if so, warn the user that we have defaulted to GS3
138 if [ "x$GSDLHOME" != "x" -a "x$GSDL3SRCHOME" != "x" ]; then
139 # _version not set, but both env vars set, so default to 3
140 _version=3
141 gsdlpath=$GSDL3SRCHOME
142 echo "Both Greenstone 2 and Greenstone 3 environments are set."
143 echo "It is assumed you want to run Greenstone 3."
144 echo "If you want to run Greenstone 2, please unset the"
145 echo "environment variable GSDL3SRCHOME before running GLI."
146 echo ""
147 elif [ "x$GSDL3SRCHOME" != "x" ]; then
148 echo "Only gsdl3srchome set"
149 gsdlpath=$GSDL3SRCHOME
150 _version=3
151 echo "$gsdlpath"
152 elif [ "x$GSDLHOME" != "x" ]; then
153 gsdlpath=$GSDLHOME
154 _version=2
155 # If it is not set, assume that the GLI is installed as a subdirectory of Greenstone
156 else
157 gsdlpath=`(cd .. && pwd)`
158 # Still need to find what version we are running:
159 # GS3 main directory contains file gs3-setup.sh, GS2 only setup.bash
160 get_version $gsdlpath
161 _version=$?
162 fi
163fi
164
165echo "Greenstone version found: $_version"
166
167# Check that the main Greenstone installation for the version we're running looks OK
168check_installation $gsdlpath $_version $glilang
169
170
171# Need to source the correct setup file depending on whether we are running
172# gs3 or gs2
173# If we're running version GS2
174if [ "$_version" -eq 2 ]; then
175 # Setup Greenstone 2, unless it has already been done
176 if [ "x$GSDLHOME" = "x" ]; then
177 cd "$gsdlpath"
178 . ./setup.bash
179 cd "$thisdir"
180 fi
181# else, if we're running GS3
182elif [ "$_version" -eq 3 ]; then
183 # Setup Greenstone 3, unless it has already been done
184 if [ "x$GSDL3HOME" = "x" -o "x$GSDL3SRCHOME" = "x" ]; then
185 cd "$gsdlpath"
186 . ./gs3-setup.sh
187 cd "$thisdir"
188 fi
189
190 ## if Greenstone version 3 is running, we want to set gsdl2path
191 ## ---- Determine GSDLHOME ----
192 ## may be already set, or manually entered here.
193 gsdl2path=
194
195 # Some users may set the above line manually
196 if [ "x$gsdl2path" = "x" ]; then
197 # Check the environment variable first
198 if [ "x$GSDLHOME" != "x" ]; then
199 echo "GSDLHOME environment variable is set to $GSDLHOME."
200 echo "Will use this to find build scripts."
201 gsdl2path=$GSDLHOME
202 # If it is not set, assume that the gs2build subdirectory of Greenstone 3 exists
203 else
204 gsdl2path=$GSDL3SRCHOME/gs2build
205 fi
206 fi
207 # Check that Greenstone 3's Greenstone 2 stuff looks OK (in gs2build)
208 check_installation $gsdl2path "" $glilang
209
210 # Setup Greenstone 3's gs2build, unless it has already been done
211 if [ "x$GSDLHOME" = "x" ]; then
212 cd "$gsdl2path"
213 . ./setup.bash
214 cd "$thisdir"
215 fi
216
217else
218 echo "Greenstone version unknown."
219 exit 1
220fi
221
222echo
223if [ "x$GSDL3SRCHOME" != "x" ]; then
224 echo "GSDL3SRCHOME is: $GSDL3SRCHOME"
225fi
226if [ "x$GSDL3HOME" != "x" ]; then
227 echo "GSDL3HOME is: $GSDL3HOME"
228fi
229if [ "x$GSDLHOME" != "x" ]; then
230 echo "GSDLHOME is: $GSDLHOME"
231fi
232echo
233
234## ---- Check Perl exists ----
235perlpath=
236
237# Some users may set the above line manually
238if [ "x$perlpath" = "x" ]; then
239 # Check if Perl is on the search path
240 perlpath=`which perl 2> /dev/null`
241fi
242
243# Check that a Perl executable has been found
244echo "Perl:"
245if [ ! -x "$perlpath" ] ; then
246 echo
247 if [ "$glilang" = "es" ]; then
248 echo "La Interfaz de la $PROGNAME requiere Perl para "
249 echo "poder operar, pero éste no aparece en su sistema. Por favor asegúrese "
250 echo "de que Perl está instalado y se encuentra en su ruta de búsqueda. A "
251 echo "continuación ejecute nuevamente este guión."
252 elif [ "$glilang" = "fr" ]; then
253 echo "$PROGNAME nécessite Perl pour son fonctionnement,"
254 echo "mais perl n'a pas pu être détecté dans votre système. Veuillez vous "
255 echo "assurer que perl est installé et est spécifié dans votre chemin de "
256 echo "recherche, puis redémarrez ce script."
257 elif [ "$glilang" = "ru" ]; then
258 echo "âÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME ÔÒÅÂÕÅÔ Perl, ÞÔÏÂÙ ÉÍÅÔØ ×ÏÚÍÏÖÎÏÓÔØ"
259 echo "ÒÁÂÏÔÁÔØ, ÎÏ Perl ÎÅ ÂÙÌ × ×ÁÛÅÊ ÓÉÓÔÅÍÅ. ðÏÖÁÌÕÊÓÔÁ, ÐÏÄÔ×ÅÒÄÉÔÅ, ÞÔÏ "
260 echo "Perl ÕÓÔÁÎÏ×ÌÅÎ É ÎÁÈÏÄÉÔÓÑ ÎÁ ×ÁÛÅÍ ÐÕÔÉ ÐÏÉÓËÁ, ÚÁÔÅÍ ÐÏ×ÔÏÒÎÏ××ÅÄÉÔÅ"
261 echo "ÜÔÏÔ ÓËÒÉÐÔ."
262 else
263 echo "The $PROGNAME requires Perl in order to operate,"
264 echo "but perl could not be detected on your system. Please ensure that perl"
265 echo "is installed and is on your search path, then rerun this script."
266 fi
267 exit 1
268fi
269echo $perlpath
270echo
271
272## ---- Check Java ----
273echo "Java:"
274MINIMUM_JAVA_VERSION=1.4.0_00
275
276# Some users may set this line manually
277javapath=""
278
279if [ -z $javapath ]; then
280
281 # sus out search4j
282 if [ "$_version" -eq 2 -a -e "$GSDLHOME/bin/$GSDLOS/search4j" ]; then
283 SEARCH4J_EXECUTABLE=$GSDLHOME/bin/$GSDLOS/search4j
284 elif [ "$_version" -eq 3 -a -e "$GSDL3SRCHOME/bin/$GSDLOS/search4j" ]; then
285 SEARCH4J_EXECUTABLE=$GSDL3SRCHOME/bin/search4j
286 elif [ -e "../bin/$GSDLOS/search4j" ]; then
287 SEARCH4J_EXECUTABLE=../bin/$GSDLOS/search4j
288 elif [ -e "../bin/search4j" ]; then
289 SEARCH4J_EXECUTABLE=../bin/search4j
290 else
291 echo "Couldn't determine the location of the search4j executable"
292 echo "If you are running Greenstone2"
293 echo " * check GSDLHOME is set"
294 echo " * check bin/$GSDLOS/search4j exists"
295 echo " * check bin/$GSDLOS/search4j is executable"
296 echo "If you are running Greenstone3"
297 echo " * check GSDL3SRCHOME is set"
298 echo " * check bin/search4j exists"
299 echo " * check bin/search4j is executable"
300 echo " * try running 'ant compile-search4j'"
301
302 # last-resort tricks
303# if [ -e "../packages/jre" ]; then
304# function search4j_shell_function() {
305# echo `cd ../packages/jre/bin; pwd`/java
306# }
307# SEARCH4J_EXECUTABLE=search4j_shell_function
308# elif [ "$JAVA_HOME" != "" ]; then
309# function search4j_shell_function() {
310# echo $JAVA_HOME/bin/java
311# }
312# SEARCH4J_EXECUTABLE=search4j_shell_function
313# else
314# exit 1
315# fi
316 fi
317
318 # Since search4j does not recursively search yet, the hint has been altered for now...
319 HINT=`cd ..;pwd`/packages/jre
320 javapath=`$SEARCH4J_EXECUTABLE -e -p $HINT -m $MINIMUM_JAVA_VERSION`
321
322 if [ "$?" != "0" ]; then
323
324 OLDVER=`$SEARCH4J_EXECUTABLE -v -p $HINT`
325
326 if [ "$?" = "0" ]; then
327
328 if [ "$glilang" = "es" ]; then
329 echo "La versión del Ambiente de Ejecución Java (JRE por sus siglas en "
330 echo "inglés) que usted tiene instalada es demasiado vieja para ejecutar "
331 echo "la Interfaz de la $PROGNAME. Por favor instale "
332 echo "una nueva versión del Ambiente de Ejecución Java (versión $MINIMUM_JAVA_VERSION o "
333 echo "posterior) y ejecute nuevamente este guión."
334 elif [ "$glilang" = "fr" ]; then
335 echo "La version de Java Runtime Environment que vous avez installée est"
336 echo "trop vielle pour faire fonctionner $PROGNAME."
337 echo "Veuillez installer une nouvelle version du JRE (version $MINIMUM_JAVA_VERSION ou plus"
338 echo "récente) et redémarrez le script."
339 elif [ "$glilang" = "ru" ]; then
340 echo "÷ÅÒÓÉÑ Java Runtime Environment, ËÏÔÏÒÕÀ ÷Ù ÕÓÔÁÎÏ×ÉÌÉ, ÏÞÅÎØ ÓÔÁÒÁ,"
341 echo "ÞÔÏÂÙ ÕÐÒÁ×ÌÑÔØ ÂÉÂÌÉÏÔÅÞÎÙÍ $PROGNAME. ðÏÖÁÌÕÊÓÔÁ, "
342 echo "ÕÓÔÁÎÏ×ÉÔÅ ÎÏ×ÕÀ ×ÅÒÓÉÀ JRE (×ÅÒÓÉÀ $MINIMUM_JAVA_VERSION ÉÌÉ ÂÏÌÅÅ ÎÏ×ÕÀ) É"
343 echo "ÐÅÒÅÕÓÔÁÎÏ×ÉÔÅ ÜÔÏÔ ÓËÒÉÐÔ"
344 else
345 echo "The version of the Java Runtime Environment you have installed ($OLDVER)"
346 echo "is too old to run the $PROGNAME. Please install a new"
347 echo "version of the JRE (version $MINIMUM_JAVA_VERSION or newer) and rerun this script."
348 fi
349 exit 1
350
351 else
352
353 echo
354 if [ "$glilang" = "es" ]; then
355 echo "No se pudo localizar una versión apropiada de Java. Usted deberá "
356 echo "instalar un Ambiente de Ejecución Java (versión $MINIMUM_JAVA_VERSION o superior) "
357 echo "antes de correr la Interfaz de la $PROGNAME."
358 elif [ "$glilang" = "fr" ]; then
359 echo "Une version adéquate de Java n'a pas pu être localisée."
360 echo "Vous devez installer un Java Runtime Environment (version $MINIMUM_JAVA_VERSION ou"
361 echo "supérieur) avant de démarrer $PROGNAME."
362 elif [ "$glilang" = "ru" ]; then
363 echo "îÅ ÕÄÁÌÏÓØ ÏÐÒÅÄÅÌÉÔØ ÍÅÓÔÏÎÁÈÏÖÄÅÎÉÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ×ÅÒÓÉÉ Java."
364 echo "÷Ù ÄÏÌÖÎÙ ÕÓÔÁÎÏ×ÉÔØ Java Runtime Environment (×ÅÒÓÉÀ $MINIMUM_JAVA_VERSION ÉÌÉ ×ÙÛÅ)"
365 echo "ÐÅÒÅÄ ××ÏÄÏÍ ÂÉÂÌÉÏÔÅÞÎÏÇÏ $PROGNAME."
366 else
367 echo "Failed to locate an appropriate version of Java. You must install a"
368 echo "Java Runtime Environment (version $MINIMUM_JAVA_VERSION or greater) before running the"
369 echo "$PROGNAME."
370 fi
371 fi
372
373 fi
374
375fi
376echo $javapath
377echo
378
379
380## -- Check the version of Java is new enough (1.4.0 or higher) to run the GLI --
381`$javapath -classpath . CheckJavaVersion > /dev/null`
382if [ $? -ne 2 ] ; then
383 echo
384fi
385
386## ---- Check that the GLI has been compiled ----
387if [ ! -f "classes/org/greenstone/gatherer/GathererProg.class" ] && [ ! -f "GLI.jar" ]; then
388 echo
389 if [ "$glilang" = "es" ]; then
390 echo "Usted necesita compilar la Interfaz de la Biblioteca Digital Greenstone"
391 echo "(por medio de makegli.sh) antes de ejecutar este guión."
392 elif [ "$glilang" = "fr" ]; then
393 echo "Vous devez compiler le Greenstone Interface (en utilisant makegli.sh)"
394 echo "avant d'exécuter ce script."
395 elif [ "$glilang" = "ru" ]; then
396 echo "÷Ù ÄÏÌÖÎÙ ËÏÍÐÉÌÉÒÏ×ÁÔØ ÂÉÂÌÉÏÔÅÞÎÙÊ ÉÎÔÅÒÆÅÊÓ Greenstone"
397 echo "(ÉÓÐÏÌØÚÕÑ makegli.sh) ÐÅÒÅÄ ××ÏÄÏÍ ÜÔÏÇÏ ÓËÒÉÐÔÁ"
398 else
399 echo "You need to compile the Greenstone Librarian Interface (using makegli.sh)"
400 echo "before running this script."
401 fi
402 exit 1
403fi
404
405## ---- Explain how to bypass Imagemagick and Ghostscript bundled with Greenstone if needed ----
406if [ -e "$GSDLHOME/bin/$GSDLOS/ghostscript" ] ; then
407echo "GhostScript bundled with Greenstone will be used, if you wish to use the version installed on your system (if any) please go to $GSDLHOME/bin/$GSDLOS and rename the folder called ghostscript to something else."
408fi
409echo
410echo
411if [ -e "$GSDLHOME/bin/$GSDLOS/imagemagick" ] ; then
412echo "ImageMagick bundled with Greenstone will be used, if you wish to use the version installed on your system (if any) please go to $GSDLHOME/bin/$GSDLOS and rename the folder called imagemagick to something else."
413echo
414echo
415fi
416
417
418## ---- Finally, run the GLI ----
419if [ "$glilang" = "es" ]; then
420 echo "Ejecutando la Interfaz de la $PROGNAME..."
421elif [ "$glilang" = "fr" ]; then
422 echo "Exécution de $PROGNAME..."
423elif [ "$glilang" = "ru" ]; then
424 echo "ôÅËÕÝÉÊ ÂÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME..."
425else
426 echo "Running the $PROGNAME..."
427fi
428
429# basic_command is the cmd string common to both Greenstone 3 and Greenstone 2 execution
430basic_command="$javapath -Xmx128M -classpath classes/:GLI.jar:lib/apache.jar:lib/qfslib.jar org.greenstone.gatherer.GathererProg"
431stop_gli=0
432while [ "$stop_gli" = "0" ] ; do
433
434 # Other arguments you can provide to GLI to work around memory limitations, or debug
435 # -Xms<number>M To set minimum memory (by default 32MB)
436 # -Xmx<number>M To set maximum memory (by default the nearest 2^n to the total remaining physical memory)
437 # -verbose:gc To set garbage collection messages
438 # -Xincgc For incremental garbage collection (significantly slows performance)
439 # -Xprof Function call profiling
440 # -Xloggc:<file> Write garbage collection log
441
442 exit_status=0
443 if [ "$_version" -eq 2 ]; then
444 $basic_command -gsdl $GSDLHOME -gsdlos $GSDLOS $*
445 exit_status=$?
446 elif [ "$_version" -eq 3 ]; then
447 $basic_command -gsdl $GSDLHOME -gsdlos $GSDLOS -gsdl3 $GSDL3HOME -gsdl3src $GSDL3SRCHOME $*
448 exit_status=$?
449 fi
450
451 if [ "$exit_status" != "2" ] ; then
452 stop_gli=1
453 else
454 echo
455 if [ "$glilang" = "es" ]; then
456 echo "Restarting/Ejecutando la Interfaz de la $PROGNAME..."
457 elif [ "$glilang" = "fr" ]; then
458 echo "Restarting/Exécution de $PROGNAME..."
459 elif [ "$glilang" = "ru" ]; then
460 echo "Restarting/ôÅËÕÝÉÊ ÂÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME..."
461 else
462 echo "Restarting the $PROGNAME..."
463 fi
464 fi
465done
466
467if [ "$glilang" = "es" ]; then
468 echo "¡Hecho!"
469elif [ "$glilang" = "fr" ]; then
470 echo "Terminé!"
471elif [ "$glilang" = "ru" ]; then
472 echo "÷ÙÐÏÌÎÅÎÏ!"
473else
474 echo "Done!"
475fi
Note: See TracBrowser for help on using the repository browser.