#!/bin/sh # Function that, when given gsdlpath as parameter, will return the # version of greenstone that is to run (2 or 3). If things are not, # this program will exit here. get_version() { # first parameter is value of gsdlpath if [ -f "${1}/gs3-setup.sh" ]; then return 3 elif [ -f "${1}/setup.bash" ]; then return 2 else echo "Error: can't determine which Greenstone version is being run." exit 1 fi } # Function that is passed the following paramters (in order): # - the gsdlpath (GS3 home, GS2 home or gs2build for GS3), # - the version of greenstone that's running, and # - the language GLI is set to # and checks the installation. # If things are not right, this program will exit here. check_installation() { # Check that the Greenstone installation looks OK if [ "$3" = "es" ]; then echo "Revisando GSDL$2: $1" elif [ "$3" = "fr" ]; then echo "Vérification de GSDL$2: $1" elif [ "$3" = "ru" ]; then echo "ðÒÏ×ÅÒËÁ GSDL$2: $1" else echo "Checking GSDL$2: $1" fi # even if we are only checking for gs2build (gsdl2path), we still # need the file setup.bash to exist in the following condition: if [ ! -f "${1}/gs3-setup.sh" -a ! -f "${1}/setup.bash" ] ; then echo if [ "$3" = "es" ]; then echo "No se pudo encontrar la instalación de Greenstone $2 o está incompleta." echo "Trate de reinstalar Greenstone $2 y a continuación ejecute nuevamente" echo "este guión." elif [ "$3" = "fr" ]; then echo "L'installation de Greenstone $2 est introuvable ou incomplète." echo "Essayez de réinstaller Greenstone $2 et exécutez ce script à nouveau." elif [ "$3" = "ru" ]; then echo "éÎÓÔÁÌÌÑÃÉÑ Greenstone $_version ÎÅ ÂÙÌÁ ÎÁÊÄÅÎÁ ÉÌÉ ÏÎÁ ÎÅÐÏÌÎÁ." echo "ðÏÐÒÏÂÕÊÔÅ ÐÏ×ÔÏÒÎÏ ÕÓÔÁÎÏ×ÉÔØ Greenstone $2, Á ÚÁÔÅÍ ××ÅÓÔÉ ÜÔÏÔ ÓËÒÉÐÔ ÓÎÏ×Á." else echo "The Greenstone $2 installation could not be found, or is incomplete." echo "Try reinstalling Greenstone $2 then running this script again." fi exit 1 fi } glilang=en if [ "x$PROGNAME" = "x" ] ; then if [ "$glilang" = "es" ]; then PROGNAME="Biblioteca Digital Greenstone" elif [ "$glilang" = "fr" ]; then PROGNAME="Bibliothécaire Greenstone" elif [ "$glilang" = "ru" ]; then PROGNAME="ÉÎÔÅÒÆÅÊÓ Greenstone" else PROGNAME="Greenstone Librarian Interface" fi fi if [ "x$PROGABBR" = "x" ] ; then PROGABBR="GLI" fi if [ "x$PROGNAME_EN" = "x" ] ; then PROGNAME_EN="Greenstone Librarian Interface" fi echo if [ "$glilang" = "es" ]; then echo "Interfaz de la $PROGNAME ($PROGNAME_EN - $PROGABBR)" echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato" echo "La Interfaz de la $PROGNAME NO INCLUYE ABSOLUTAMENTE NINGUNA GARANTÍA." echo "Para mayor información vea los términos de la licencia en LICENSE.txt" echo "Este es un software abierto, por lo que lo invitamos a que lo distribuya de forma gratuita" elif [ "$glilang" = "fr" ]; then echo "Interface du $PROGNAME ($PROGNAME_EN - $PROGABBR)" echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato" echo "$PROGABBR est fourni sans AUCUNE GARANTIE; pour des détails, voir LICENSE.txt" echo "Ceci est un logiciel libre, et vous êtes invité à le redistribuer" elif [ "$glilang" = "ru" ]; then echo "âÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME ($PROGNAME_EN - $PROGABBR)" echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato" echo "âéç ÎÅ ÄÁÅÔ áâóïìàôîï îéëáëéè çáòáîôéê; ÄÅÔÁÌÉ ÓÍ. × ÔÅËÓÔÅ LICENSE.TXT" echo "üÔÏ - Ó×ÏÂÏÄÎÏ ÒÁÓÐÒÏÓÔÒÁÎÑÅÍÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ É ÷Ù ÍÏÖÅÔÅ ÒÁÓÐÒÏÓÔÒÁÎÑÔØ ÅÇÏ" else echo "$PROGNAME ($PROGABBR)" echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato" echo "$PROGABBR comes with ABSOLUTELY NO WARRANTY; for details see LICENSE.txt" echo "This is free software, and you are welcome to redistribute it" fi echo ## -------- Run the Greenstone Librarian Interface -------- # This script must be run from within the directory in which it lives thisdir=`pwd` if [ ! -f "${thisdir}/gli.sh" ]; then if [ "$glilang" = "es" ]; then echo "Este guión deberá ejecutarse desde el directorio en el que reside." elif [ "$glilang" = "fr" ]; then echo "Ce script doit être exécuté à partir du répertoire dans lequel il se trouve." elif [ "$glilang" = "ru" ]; then echo "üÔÏÔ ÓËÒÉÐÔ ÄÏÌÖÅÎ ÂÙÔØ ×ÚÑÔ ÉÚ ÄÉÒÅËÔÏÒÉÉ, × ËÏÔÏÒÏÊ ÏÎ ÒÁÓÐÏÌÏÖÅÎ" else echo "This script must be run from the directory in which it resides." fi exit 1 fi ## ---- Determine GSDLHOME ---- ## gsdlpath can be either Greenstone 3 or Greenstone 2 gsdlpath= # Some users may set the above line manually # This variable is set automatically: _version= if [ "x$gsdlpath" != "x" ]; then get_version $gsdlpath _version=$? # otherwise $gsdlpath is not yet set else # Check the environment variable first # Check whether environment variables for both GS2 and GS3 are set # and if so, warn the user that we have defaulted to GS3 if [ "x$GSDLHOME" != "x" -a "x$GSDL3SRCHOME" != "x" ]; then # _version not set, but both env vars set, so default to 3 _version=3 gsdlpath=$GSDL3SRCHOME echo "Both Greenstone 2 and Greenstone 3 environments are set." echo "It is assumed you want to run Greenstone 3." echo "If you want to run Greenstone 2, please unset the" echo "environment variable GSDL3SRCHOME before running GLI." echo "" elif [ "x$GSDL3SRCHOME" != "x" ]; then echo "Only gsdl3srchome set" gsdlpath=$GSDL3SRCHOME _version=3 echo "$gsdlpath" elif [ "x$GSDLHOME" != "x" ]; then gsdlpath=$GSDLHOME _version=2 # If it is not set, assume that the GLI is installed as a subdirectory of Greenstone else gsdlpath=`(cd .. && pwd)` # Still need to find what version we are running: # GS3 main directory contains file gs3-setup.sh, GS2 only setup.bash get_version $gsdlpath _version=$? fi fi echo "Greenstone version found: $_version" # Check that the main Greenstone installation for the version we're running looks OK check_installation $gsdlpath $_version $glilang # Need to source the correct setup file depending on whether we are running # gs3 or gs2 # If we're running version GS2 if [ "$_version" -eq 2 ]; then # Setup Greenstone 2, unless it has already been done if [ "x$GSDLHOME" = "x" ]; then cd "$gsdlpath" . ./setup.bash cd "$thisdir" fi # else, if we're running GS3 elif [ "$_version" -eq 3 ]; then # Setup Greenstone 3, unless it has already been done if [ "x$GSDL3HOME" = "x" -o "x$GSDL3SRCHOME" = "x" ]; then cd "$gsdlpath" . ./gs3-setup.sh cd "$thisdir" fi ## if Greenstone version 3 is running, we want to set gsdl2path ## ---- Determine GSDLHOME ---- ## may be already set, or manually entered here. gsdl2path= # Some users may set the above line manually if [ "x$gsdl2path" = "x" ]; then # Check the environment variable first if [ "x$GSDLHOME" != "x" ]; then echo "GSDLHOME environment variable is set to $GSDLHOME." echo "Will use this to find build scripts." gsdl2path=$GSDLHOME # If it is not set, assume that the gs2build subdirectory of Greenstone 3 exists else gsdl2path=$GSDL3SRCHOME/gs2build fi fi # Check that Greenstone 3's Greenstone 2 stuff looks OK (in gs2build) check_installation $gsdl2path "" $glilang # Setup Greenstone 3's gs2build, unless it has already been done if [ "x$GSDLHOME" = "x" ]; then cd "$gsdl2path" . ./setup.bash cd "$thisdir" fi else echo "Greenstone version unknown." exit 1 fi echo if [ "x$GSDL3SRCHOME" != "x" ]; then echo "GSDL3SRCHOME is: $GSDL3SRCHOME" fi if [ "x$GSDL3HOME" != "x" ]; then echo "GSDL3HOME is: $GSDL3HOME" fi if [ "x$GSDLHOME" != "x" ]; then echo "GSDLHOME is: $GSDLHOME" fi echo ## ---- Check Perl exists ---- perlpath= # Some users may set the above line manually if [ "x$perlpath" = "x" ]; then # Check if Perl is on the search path perlpath=`which perl 2> /dev/null` fi # Check that a Perl executable has been found echo "Perl:" if [ ! -x "$perlpath" ] ; then echo if [ "$glilang" = "es" ]; then echo "La Interfaz de la $PROGNAME requiere Perl para " echo "poder operar, pero éste no aparece en su sistema. Por favor asegúrese " echo "de que Perl está instalado y se encuentra en su ruta de búsqueda. A " echo "continuación ejecute nuevamente este guión." elif [ "$glilang" = "fr" ]; then echo "$PROGNAME nécessite Perl pour son fonctionnement," echo "mais perl n'a pas pu être détecté dans votre système. Veuillez vous " echo "assurer que perl est installé et est spécifié dans votre chemin de " echo "recherche, puis redémarrez ce script." elif [ "$glilang" = "ru" ]; then echo "âÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME ÔÒÅÂÕÅÔ Perl, ÞÔÏÂÙ ÉÍÅÔØ ×ÏÚÍÏÖÎÏÓÔØ" echo "ÒÁÂÏÔÁÔØ, ÎÏ Perl ÎÅ ÂÙÌ × ×ÁÛÅÊ ÓÉÓÔÅÍÅ. ðÏÖÁÌÕÊÓÔÁ, ÐÏÄÔ×ÅÒÄÉÔÅ, ÞÔÏ " echo "Perl ÕÓÔÁÎÏ×ÌÅÎ É ÎÁÈÏÄÉÔÓÑ ÎÁ ×ÁÛÅÍ ÐÕÔÉ ÐÏÉÓËÁ, ÚÁÔÅÍ ÐÏ×ÔÏÒÎÏ××ÅÄÉÔÅ" echo "ÜÔÏÔ ÓËÒÉÐÔ." else echo "The $PROGNAME requires Perl in order to operate," echo "but perl could not be detected on your system. Please ensure that perl" echo "is installed and is on your search path, then rerun this script." fi exit 1 fi echo $perlpath echo ## ---- Check Java ---- echo "Java:" MINIMUM_JAVA_VERSION=1.4.0_00 # Some users may set this line manually #JAVA_HOME="" if [ -z $javapath ]; then # sus out search4j if [ "$_version" -eq 2 -a -e "$GSDLHOME/bin/$GSDLOS/search4j" ]; then SEARCH4J_EXECUTABLE=$GSDLHOME/bin/$GSDLOS/search4j elif [ "$_version" -eq 3 -a -e "$GSDL3SRCHOME/bin/$GSDLOS/search4j" ]; then SEARCH4J_EXECUTABLE=$GSDL3SRCHOME/bin/search4j elif [ -e "../bin/$GSDLOS/search4j" ]; then SEARCH4J_EXECUTABLE=../bin/$GSDLOS/search4j elif [ -e "../bin/search4j" ]; then SEARCH4J_EXECUTABLE=../bin/search4j else echo "Couldn't determine the location of the search4j executable" echo "If you are running Greenstone2" echo " * check GSDLHOME is set" echo " * check bin/$GSDLOS/search4j exists" echo " * check bin/$GSDLOS/search4j is executable" echo "If you are running Greenstone3" echo " * check GSDL3SRCHOME is set" echo " * check bin/search4j exists" echo " * check bin/search4j is executable" echo " * try running 'ant compile-search4j'" # last-resort tricks # if [ -e "../packages/jre" ]; then # function search4j_shell_function() { # echo `cd ../packages/jre/bin; pwd`/java # } # SEARCH4J_EXECUTABLE=search4j_shell_function # elif [ "$JAVA_HOME" != "" ]; then # function search4j_shell_function() { # echo $JAVA_HOME/bin/java # } # SEARCH4J_EXECUTABLE=search4j_shell_function # else # exit 1 # fi fi # Give search4j a hint to find Java depending on the platform if [ $GSDLOS = "linux"] ; then HINT=`cd ..;pwd`/packages/jre elif [ $GSDLOS = "darwin"] ; then HINT=/System/Library/Frameworks/JavaVM.framework/Home fi javapath=`"$SEARCH4J_EXECUTABLE" -e -p "$HINT" -m $MINIMUM_JAVA_VERSION` if [ "$?" != "0" ]; then OLDVER=`"$SEARCH4J_EXECUTABLE" -v -p "$HINT"` if [ "$?" = "0" ]; then if [ "$glilang" = "es" ]; then echo "La versión del Ambiente de Ejecución Java (JRE por sus siglas en " echo "inglés) que usted tiene instalada es demasiado vieja para ejecutar " echo "la Interfaz de la $PROGNAME. Por favor instale " echo "una nueva versión del Ambiente de Ejecución Java (versión $MINIMUM_JAVA_VERSION o " echo "posterior) y ejecute nuevamente este guión." elif [ "$glilang" = "fr" ]; then echo "La version de Java Runtime Environment que vous avez installée est" echo "trop vielle pour faire fonctionner $PROGNAME." echo "Veuillez installer une nouvelle version du JRE (version $MINIMUM_JAVA_VERSION ou plus" echo "récente) et redémarrez le script." elif [ "$glilang" = "ru" ]; then echo "÷ÅÒÓÉÑ Java Runtime Environment, ËÏÔÏÒÕÀ ÷Ù ÕÓÔÁÎÏ×ÉÌÉ, ÏÞÅÎØ ÓÔÁÒÁ," echo "ÞÔÏÂÙ ÕÐÒÁ×ÌÑÔØ ÂÉÂÌÉÏÔÅÞÎÙÍ $PROGNAME. ðÏÖÁÌÕÊÓÔÁ, " echo "ÕÓÔÁÎÏ×ÉÔÅ ÎÏ×ÕÀ ×ÅÒÓÉÀ JRE (×ÅÒÓÉÀ $MINIMUM_JAVA_VERSION ÉÌÉ ÂÏÌÅÅ ÎÏ×ÕÀ) É" echo "ÐÅÒÅÕÓÔÁÎÏ×ÉÔÅ ÜÔÏÔ ÓËÒÉÐÔ" else echo "The version of the Java Runtime Environment you have installed ($OLDVER)" echo "is too old to run the $PROGNAME. Please install a new" echo "version of the JRE (version $MINIMUM_JAVA_VERSION or newer) and rerun this script." fi exit 1 else echo if [ "$glilang" = "es" ]; then echo "No se pudo localizar una versión apropiada de Java. Usted deberá " echo "instalar un Ambiente de Ejecución Java (versión $MINIMUM_JAVA_VERSION o superior) " echo "antes de correr la Interfaz de la $PROGNAME." elif [ "$glilang" = "fr" ]; then echo "Une version adéquate de Java n'a pas pu être localisée." echo "Vous devez installer un Java Runtime Environment (version $MINIMUM_JAVA_VERSION ou" echo "supérieur) avant de démarrer $PROGNAME." echo "Si vous avez Java installé sur votre ordinateur veuillez vérifier la variable" echo "d'environnement JAVA_HOME." elif [ "$glilang" = "ru" ]; then echo "îÅ ÕÄÁÌÏÓØ ÏÐÒÅÄÅÌÉÔØ ÍÅÓÔÏÎÁÈÏÖÄÅÎÉÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ×ÅÒÓÉÉ Java." echo "÷Ù ÄÏÌÖÎÙ ÕÓÔÁÎÏ×ÉÔØ Java Runtime Environment (×ÅÒÓÉÀ $MINIMUM_JAVA_VERSION ÉÌÉ ×ÙÛÅ)" echo "ÐÅÒÅÄ ××ÏÄÏÍ ÂÉÂÌÉÏÔÅÞÎÏÇÏ $PROGNAME." else echo "Failed to locate an appropriate version of Java. You must install a" echo "Java Runtime Environment (version $MINIMUM_JAVA_VERSION or greater) before running the" echo "$PROGNAME." echo "If you have Java intalled on your machine please set the environment variable JAVA_HOME." fi fi fi fi echo $javapath echo ## -- Check the version of Java is new enough (1.4.0 or higher) to run the GLI -- `$javapath -classpath . CheckJavaVersion > /dev/null` if [ $? -ne 2 ] ; then echo fi ## ---- Check that the GLI has been compiled ---- if [ ! -f "classes/org/greenstone/gatherer/GathererProg.class" ] && [ ! -f "GLI.jar" ]; then echo if [ "$glilang" = "es" ]; then echo "Usted necesita compilar la Interfaz de la Biblioteca Digital Greenstone" echo "(por medio de makegli.sh) antes de ejecutar este guión." elif [ "$glilang" = "fr" ]; then echo "Vous devez compiler le Greenstone Interface (en utilisant makegli.sh)" echo "avant d'exécuter ce script." elif [ "$glilang" = "ru" ]; then echo "÷Ù ÄÏÌÖÎÙ ËÏÍÐÉÌÉÒÏ×ÁÔØ ÂÉÂÌÉÏÔÅÞÎÙÊ ÉÎÔÅÒÆÅÊÓ Greenstone" echo "(ÉÓÐÏÌØÚÕÑ makegli.sh) ÐÅÒÅÄ ××ÏÄÏÍ ÜÔÏÇÏ ÓËÒÉÐÔÁ" else echo "You need to compile the Greenstone Librarian Interface (using makegli.sh)" echo "before running this script." fi exit 1 fi ## ---- Explain how to bypass Imagemagick and Ghostscript bundled with Greenstone if needed ---- if [ -e "$GSDLHOME/bin/$GSDLOS/ghostscript" ] ; then echo "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." fi echo echo if [ -e "$GSDLHOME/bin/$GSDLOS/imagemagick" ] ; then echo "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." echo echo fi ## ---- Finally, run the GLI ---- if [ "$glilang" = "es" ]; then echo "Ejecutando la Interfaz de la $PROGNAME..." elif [ "$glilang" = "fr" ]; then echo "Exécution de $PROGNAME..." elif [ "$glilang" = "ru" ]; then echo "ôÅËÕÝÉÊ ÂÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME..." else echo "Running the $PROGNAME..." fi # basic_command is the cmd string common to both Greenstone 3 and Greenstone 2 execution basic_command="$javapath -Xmx128M -classpath classes/:GLI.jar:lib/apache.jar:lib/qfslib.jar org.greenstone.gatherer.GathererProg" stop_gli=0 while [ "$stop_gli" = "0" ] ; do # Other arguments you can provide to GLI to work around memory limitations, or debug # -XmsM To set minimum memory (by default 32MB) # -XmxM To set maximum memory (by default the nearest 2^n to the total remaining physical memory) # -verbose:gc To set garbage collection messages # -Xincgc For incremental garbage collection (significantly slows performance) # -Xprof Function call profiling # -Xloggc: Write garbage collection log exit_status=0 if [ "$_version" -eq 2 ]; then $basic_command -gsdl $GSDLHOME -gsdlos $GSDLOS $* exit_status=$? elif [ "$_version" -eq 3 ]; then $basic_command -gsdl $GSDLHOME -gsdlos $GSDLOS -gsdl3 $GSDL3HOME -gsdl3src $GSDL3SRCHOME $* exit_status=$? fi if [ "$exit_status" != "2" ] ; then stop_gli=1 else echo if [ "$glilang" = "es" ]; then echo "Restarting/Ejecutando la Interfaz de la $PROGNAME..." elif [ "$glilang" = "fr" ]; then echo "Restarting/Exécution de $PROGNAME..." elif [ "$glilang" = "ru" ]; then echo "Restarting/ôÅËÕÝÉÊ ÂÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME..." else echo "Restarting the $PROGNAME..." fi fi done if [ "$glilang" = "es" ]; then echo "¡Hecho!" elif [ "$glilang" = "fr" ]; then echo "Terminé!" elif [ "$glilang" = "ru" ]; then echo "÷ÙÐÏÌÎÅÎÏ!" else echo "Done!" fi