root/gli/trunk/gli.sh @ 17669

Revision 17669, 16.9 KB (checked in by ak19, 11 years ago)

Minor changes

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
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 [ "$javapath" = "" ]; then
280
281    # sus out search4j
282    if [ "$_version" -eq 2 -a -x "$GSDLHOME/bin/$GSDLOS/search4j" ]; then
283        SEARCH4J_EXECUTABLE=$GSDLHOME/bin/$GSDLOS/search4j
284    elif [ "$_version" -eq 3 -a -x "$GSDL3SRCHOME/bin/$GSDLOS/search4j" ]; then
285        SEARCH4J_EXECUTABLE=$GSDL3SRCHOME/bin/search4j
286    elif [ -x "../bin/$GSDLOS/search4j" ]; then
287        SEARCH4J_EXECUTABLE=../bin/$GSDLOS/search4j
288    elif [ -x "../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    HINT=`cd ..;pwd`
319    javapath=`$SEARCH4J_EXECUTABLE -e -p $HINT -m $MINIMUM_JAVA_VERSION`
320
321    if [ "$?" != "0" ]; then
322
323        OLDVER=`$SEARCH4J_EXECUTABLE -v -p $HINT`
324
325        if [ "$?" = "0" ]; then
326
327            if [ "$glilang" = "es" ]; then
328                echo "La versión del Ambiente de Ejecución Java (JRE por sus siglas en "
329                echo "inglés) que usted tiene instalada es demasiado vieja para ejecutar "
330                echo "la Interfaz de la $PROGNAME. Por favor instale "
331                echo "una nueva versión del Ambiente de Ejecución Java (versión $MINIMUM_JAVA_VERSION o "
332                echo "posterior) y ejecute nuevamente este guión."
333            elif [ "$glilang" = "fr" ]; then
334                echo "La version de Java Runtime Environment que vous avez installée est"
335                echo "trop vielle pour faire fonctionner $PROGNAME."
336                echo "Veuillez installer une nouvelle version du JRE (version $MINIMUM_JAVA_VERSION ou plus"
337                echo "récente) et redémarrez le script."
338            elif [ "$glilang" = "ru" ]; then
339                echo "÷ÅÒÓÉÑ Java Runtime Environment, ËÏÔÏÒÕÀ ÷Ù ÕÓÔÁÎÏ×ÉÌÉ, ÏÞÅÎØ ÓÔÁÒÁ,"
340                echo "ÞÔÏÂÙ ÕÐÒÁ×ÌÑÔØ ÂÉÂÌÉÏÔÅÞÎÙÍ $PROGNAME. ðÏÖÁÌÕÊÓÔÁ, "
341                echo "ÕÓÔÁÎÏ×ÉÔÅ ÎÏ×ÕÀ ×ÅÒÓÉÀ JRE (×ÅÒÓÉÀ $MINIMUM_JAVA_VERSION ÉÌÉ ÂÏÌÅÅ ÎÏ×ÕÀ) É"
342                echo "ÐÅÒÅÕÓÔÁÎÏ×ÉÔÅ ÜÔÏÔ ÓËÒÉÐÔ"
343            else
344                echo "The version of the Java Runtime Environment you have installed ($OLDVER)"
345                echo "is too old to run the $PROGNAME. Please install a new"
346                echo "version of the JRE (version $MINIMUM_JAVA_VERSION or newer) and rerun this script."
347            fi
348            exit 1
349
350        else
351
352            echo
353            if [ "$glilang" = "es" ]; then
354                echo "No se pudo localizar una versión apropiada de Java. Usted deberá "
355                echo "instalar un Ambiente de Ejecución Java (versión $MINIMUM_JAVA_VERSION o superior) "
356                echo "antes de correr la Interfaz de la $PROGNAME."
357            elif [ "$glilang" = "fr" ]; then
358                echo "Une version adéquate de Java n'a pas pu être localisée."
359                echo "Vous devez installer un Java Runtime Environment (version $MINIMUM_JAVA_VERSION ou"
360                echo "supérieur) avant de démarrer $PROGNAME."
361            elif [ "$glilang" = "ru" ]; then
362                echo "îÅ ÕÄÁÌÏÓØ ÏÐÒÅÄÅÌÉÔØ ÍÅÓÔÏÎÁÈÏÖÄÅÎÉÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ×ÅÒÓÉÉ Java."
363                echo "÷Ù ÄÏÌÖÎÙ ÕÓÔÁÎÏ×ÉÔØ Java Runtime Environment (×ÅÒÓÉÀ $MINIMUM_JAVA_VERSION ÉÌÉ ×ÙÛÅ)"
364                echo "ÐÅÒÅÄ ××ÏÄÏÍ ÂÉÂÌÉÏÔÅÞÎÏÇÏ $PROGNAME."
365            else
366                echo "Failed to locate an appropriate version of Java. You must install a"
367                echo "Java Runtime Environment (version $MINIMUM_JAVA_VERSION or greater) before running the"
368                echo "$PROGNAME."
369            fi
370        fi
371
372    fi
373
374fi
375echo $javapath
376echo
377
378
379## -- Check the version of Java is new enough (1.4.0 or higher) to run the GLI --
380`$javapath -classpath . CheckJavaVersion > /dev/null`
381if [ $? -ne 2 ] ; then
382    echo
383fi
384
385## ---- Check that the GLI has been compiled ----
386if [ ! -f "classes/org/greenstone/gatherer/GathererProg.class" ] && [ ! -f "GLI.jar" ]; then
387    echo
388    if [ "$glilang" = "es" ]; then
389    echo "Usted necesita compilar la Interfaz de la Biblioteca Digital Greenstone"
390    echo "(por medio de makegli.sh) antes de ejecutar este guión."
391    elif [ "$glilang" = "fr" ]; then
392    echo "Vous devez compiler le Greenstone Interface (en utilisant makegli.sh)"
393    echo "avant d'exécuter ce script."
394    elif [ "$glilang" = "ru" ]; then
395    echo "÷Ù ÄÏÌÖÎÙ ËÏÍÐÉÌÉÒÏ×ÁÔØ ÂÉÂÌÉÏÔÅÞÎÙÊ ÉÎÔÅÒÆÅÊÓ Greenstone"
396    echo "(ÉÓÐÏÌØÚÕÑ makegli.sh) ÐÅÒÅÄ ××ÏÄÏÍ ÜÔÏÇÏ ÓËÒÉÐÔÁ"
397    else
398    echo "You need to compile the Greenstone Librarian Interface (using makegli.sh)"
399    echo "before running this script."
400    fi
401    exit 1
402fi
403
404## ---- Finally, run the GLI ----
405echo
406if [ "$glilang" = "es" ]; then
407    echo "Ejecutando la Interfaz de la $PROGNAME..."
408elif [ "$glilang" = "fr" ]; then
409    echo "Exécution de $PROGNAME..."
410elif [ "$glilang" = "ru" ]; then
411    echo "ôÅËÕÝÉÊ ÂÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME..."
412else
413    echo "Running the $PROGNAME..."
414fi
415
416# basic_command is the cmd string common to both Greenstone 3 and Greenstone 2 execution
417basic_command="$javapath -Xmx128M -classpath classes/:GLI.jar:lib/apache.jar:lib/qfslib.jar org.greenstone.gatherer.GathererProg"
418stop_gli=0
419while [ "$stop_gli" = "0" ] ; do
420   
421    # Other arguments you can provide to GLI to work around memory limitations, or debug
422    # -Xms<number>M    To set minimum memory (by default 32MB)
423    # -Xmx<number>M    To set maximum memory (by default the nearest 2^n to the total remaining physical memory)
424    # -verbose:gc      To set garbage collection messages
425    # -Xincgc          For incremental garbage collection (significantly slows performance)
426    # -Xprof           Function call profiling
427    # -Xloggc:<file>   Write garbage collection log
428   
429    exit_status=0
430    if [ "$_version" -eq 2 ]; then
431        $basic_command -gsdl $GSDLHOME -gsdlos $GSDLOS $*
432        exit_status=$?
433    elif [ "$_version" -eq 3 ]; then   
434        $basic_command -gsdl $GSDLHOME -gsdlos $GSDLOS -gsdl3 $GSDL3HOME -gsdl3src $GSDL3SRCHOME $*
435        exit_status=$?
436    fi
437   
438    if [ "$exit_status" != "2" ] ; then
439        stop_gli=1
440    else
441        echo
442        if [ "$glilang" = "es" ]; then
443            echo "Restarting/Ejecutando la Interfaz de la $PROGNAME..."
444        elif [ "$glilang" = "fr" ]; then
445            echo "Restarting/Exécution de $PROGNAME..."
446        elif [ "$glilang" = "ru" ]; then
447            echo "Restarting/ôÅËÕÝÉÊ ÂÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME..."
448        else
449            echo "Restarting the $PROGNAME..."
450        fi
451    fi
452done
453
454if [ "$glilang" = "es" ]; then
455    echo "¡Hecho!"
456elif [ "$glilang" = "fr" ]; then
457    echo "Terminé!"
458elif [ "$glilang" = "ru" ]; then
459    echo "÷ÙÐÏÌÎÅÎÏ!"
460else
461    echo "Done!"
462fi
Note: See TracBrowser for help on using the browser.