root/main/trunk/greenstone2/setup.bash @ 33064

Revision 32205, 11.9 KB (checked in by ak19, 18 months ago)

First set of commits to do with implementing the new 'paged_html' output option of PDFPlugin that uses using xpdftools' new pdftohtml. So far tested only on Linux (64 bit), but things work there so I'm optimistically committing the changes since they work. 2. Committing the pre-built Linux binaries of XPDFtools for both 32 and 64 bit built by the XPDF group. 2. To use the correct bitness variant of xpdftools, setup.bash now exports the BITNESS env var, consulted by gsConvert.pl. 3. All the perl code changes to do with using xpdf tools' pdftohtml to generate paged_html and feed it in the desired form into GS(3): gsConvert.pl, PDFPlugin.pm and its parent ConvertBinaryPFile.pm have been modified to make it all work. xpdftools' pdftohtml generates a folder containing an html file and a screenshot for each page in a PDF (as well as an index.html linking to each page's html). However, we want a single html file that contains each individual 'page' html's content in a div, and need to do some further HTML style, attribute and structure modifications to massage the xpdftool output to what we want for GS. In order to parse and manipulate the HTML 'DOM' to do this, we're using the Mojo::DOM package that Dr Bainbridge found and which he's compiled up. Mojo::DOM is therefore also committed in this revision. Some further changes and some display fixes are required, but need to check with the others about that.

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
Line 
1#!/bin/bash
2# if this file is executed, /bin/sh is used, as we don't start with #!
3# this should work under ash, bash, zsh, ksh, sh style shells.
4gsdllang=""
5# encoding inputs and outputs
6gsdltoenc=""
7gsdlfromenc=""
8
9# see if the shell has any language environment variables set
10# see locale(7) manpage for this ordering.
11if test ! -z "$LC_ALL" ; then
12  gsdllang="$LC_ALL"
13elif test ! -z "$LANG"; then
14  gsdllang="$LANG"
15fi
16
17
18# note... all our output strings have the charset hard-coded, but
19# people may be using a different encoding in their terminal. LANG
20# strings look like "en_NZ.UTF-8".
21
22# Determine the requested output encoding
23case $gsdllang in
24  *.*)
25    gsdltoenc=`echo $gsdllang | sed 's/.*\.//'`
26    ;;
27esac
28
29# Our french and spanish strings are currently in iso-8859-1 encoding.
30case $gsdllang in
31  fr*|FR*)
32    gsdllang=fr
33    gsdlfromenc="iso-8859-1"
34  ;;
35  es*|ES*)
36    gsdllang=es
37    gsdlfromenc="iso-8859-1"
38  ;;
39  ru*|RU*)
40    gsdllang=ru
41    gsdlfromenc="koi8r"
42  ;;
43  *) # default
44    gsdllang=en
45    gsdlfromenc="iso-8859-1"
46  ;;
47esac 
48
49# "iconv" is the program for converting text between encodings.
50gsdliconv=`which iconv 2>/dev/null`
51if test $? -ne 0 || test ! -x "$gsdliconv" || test -z "$gsdlfromenc" || test -z "$gsdltoenc"; then
52# we can't convert encodings from some reason
53  gsdliconv="cat"
54else
55# add the encodings
56  gsdliconv="$gsdliconv -f $gsdlfromenc -t $gsdltoenc"
57fi
58
59# make sure we are sourced, and not run
60
61if test "$0" != "`echo $0 | sed s/setup\.bash//`" ; then
62# if $0 contains "setup.bash" we've been run... $0 is shellname if sourced.
63# One exception is zsh has an option to set it temporarily to the script name
64  if test -z "$ZSH_NAME" ; then
65  # we aren't using zsh
66  gsdl_not_sourced=true
67  fi
68fi
69
70if test -n "$gsdl_not_sourced" ; then
71  case "$gsdllang" in
72 "es")
73eval $gsdliconv <<EOF
74      Error: Asegúrese de compilar este guión, no de ejecutarlo. P. ej.:
75         $ source setup.bash
76      o
77         $ . ./setup.bash
78      no
79         $ ./setup.bash
80EOF
81  ;;
82  "fr")
83eval $gsdliconv <<EOF
84      Erreur: Assurez-vous de "sourcer" le script, plutôt que de l'exécuter. Ex:
85         $ source setup.bash
86      ou
87         $ . ./setup.bash
88      pas
89         $ ./setup.bash
90EOF
91  ;;
92  "ru")
93eval $gsdliconv <<EOF
94      ïÛÉÂËÁ: õÄÏÓÔÏ×ÅÒØÔÅÓØ × ÉÓÔÏÞÎÉËÅ ÜÔÏÇÏ ÓËÒÉÐÔÁ. îÅ ÉÓÐÏÌÎÑÊÔÅ ÅÇÏ.
95      îÁÐÒÉÍÅÒ:
96         $ source setup.bash
97      ÉÌÉ
98         $ . ./setup.bash
99      ÎÅÔ
100         $ ./setup.bash
101EOF
102  ;;
103  *)
104eval $gsdliconv <<EOF
105    Error: Make sure you source this script, not execute it. Eg:
106        $ source setup.bash
107    or
108        $ . ./setup.bash
109    not
110        $ ./setup.bash
111EOF
112  ;;
113  esac
114elif test -n "$GSDLHOME" ; then
115  case "$gsdllang" in
116  "es")
117    echo '¡Su ambiente ya está listo para Greenstone!' | eval $gsdliconv
118  ;;
119  "fr")
120    echo 'Votre environnement est déjà préparé pour Greenstone!' | eval $gsdliconv
121 ;;
122  "ru")
123    echo '÷ÁÛÅ ÏËÒÕÖÅÎÉÅ ÕÖÅ ÎÁÓÔÒÏÅÎÏ ÄÌÑ Greenstone!' | eval $gsdliconv
124  ;;
125  *)
126    echo 'Your environment is already set up for Greenstone!'
127  ;;
128  esac
129elif test ! -f setup.bash ; then
130  case "$gsdllang" in
131    "es")
132eval $gsdliconv <<EOF
133Usted debe compilar el guión desde el interior del directorio de inicio
134de Greenstone.
135EOF
136  ;;
137  "fr")
138echo 'Vous devez trouver la source du script dans le répertoire de base de Greenstone' | eval $gsdliconv
139  ;;
140  "ru")
141eval $gsdliconv <<EOF
142÷ÁÍ ÎÅÏÂÈÏÄÉÍ ÉÓÔÏÞÎÉË ÓËÒÉÐÔÁ ÉÚ ÂÁÚÏ×ÏÊ ÄÉÒÅËÔÏÒÉÉ Greenstone
143EOF
144  ;;
145  *)
146    echo 'You must source the script from within the Greenstone home directory'
147  ;;
148  esac
149else
150  GSDLHOME=`pwd`
151  export GSDLHOME
152
153  if test "x$GSDLOS" = "x" ; then
154    GSDLOS=`uname -s | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
155    # check for running bash under cygwin
156    if test "`echo $GSDLOS | sed 's/cygwin//'`" != "$GSDLOS" ;
157    then
158      GSDLOS=windows
159    fi
160  fi
161  export GSDLOS
162
163  # check for running bash under mingw
164  if test "`echo $GSDLOS | sed 's/mingw//'`" != "$GSDLOS" ;
165  then
166    GSDLOS=windows
167  fi
168  export GSDLOS
169
170  # Establish cpu architecture
171  # 32-bit or 64-bit?
172  UNAME_HW_MACH=`uname -m`
173
174# Original test
175#  if test "`echo x$UNAME_HW_MACH | sed 's/^x.*_64$/x/'`" == "x" ;
176#  then
177#   GSDLARCH=64
178#  else
179#   GSDLARCH=32
180#  fi
181
182  # Following test came from VirtualBox's Guest Additions autostart.sh
183  # (adapted for use in Greenstone)
184  case "$UNAME_HW_MACH" in
185    i[3456789]86|x86|i86pc)
186      GSDLARCH='32'
187      ;;
188    x86_64|amd64|AMD64)
189      GSDLARCH='64'
190      ;;
191    *)
192      echo "Unknown architecture: $UNAME_HW_MACH"
193      ;;
194  esac
195
196  # for xpdf tools, need to know whether we're using the bin32 or bin64 folder
197  BITNESS=$GSDLARCH
198  export BITNESS
199
200  # Only want non-trival GSDLARCH value set if there is evidence of
201  # the installed bin (lib, ...) directories using linux32, linux64
202  # (otherwise probably looking at an SVN compiled up version for single OS)
203  if test ! -d "$GSDLHOME/bin/$GSDLOS$GSDLARCH" ;
204  then
205    GSDLARCH=""
206  fi
207
208  export GSDLARCH
209
210  PATH=$GSDLHOME/bin/script:$GSDLHOME/bin/$GSDLOS$GSDLARCH:$PATH
211  export PATH
212 
213  if test "$GSDLOS" = "linux" ; then
214      LD_LIBRARY_PATH="$GSDLHOME/lib/$GSDLOS$GSDLARCH:$LD_LIBRARY_PATH"
215      export LD_LIBRARY_PATH
216  elif test "$GSDLOS" = "darwin" ; then
217      DYLD_LIBRARY_PATH="$GSDLHOME/lib/$GSDLOS$GSDLARCH:$DYLD_LIBRARY_PATH"
218      export DYLD_LIBRARY_PATH
219  fi
220 
221  # Override Imagemagick and Ghostscript paths to the bundled applications shipped with greenstone if they exists otherwise use default environment variables.
222
223# Imagemagick env vars are set in bin\script\gs-magick.pl
224
225
226  # Note: Ghostscript is only bundled with Greenstone on Mac and Windows, not on Linux. The code below should be used only for the Darwin platform
227  # for Windows please see setup.bat
228if test -d "$GSDLHOME/bin/$GSDLOS$GSDLARCH/ghostscript" ; then
229    PATH="$GSDLHOME/bin/$GSDLOS$GSDLARCH/ghostscript/bin":"$PATH"
230    export PATH
231 
232    GS_LIB="$GSDLHOME/bin/$GSDLOS$GSDLARCH/ghostscript/share/ghostscript/8.63/lib"
233    export GS_LIB
234
235    GS_FONTPATH="$GSDLHOME/bin/$GSDLOS$GSDLARCH/ghostscript/share/ghostscript/8.63/Resource/Font"
236    export GS_FONTPATH
237fi
238 
239
240 
241  MANPATH=$MANPATH:$GSDLHOME/packages/mg/man
242  export MANPATH
243  case "$gsdllang" in
244    "es")
245      echo 'Su ambiente ha sido configurado para correr los programas Greenstone.' | eval $gsdliconv
246    ;;
247    "fr")
248      echo 'Votre environnement a été configuére avec succès pour exécuter Greenstone' | eval $gsdliconv
249    ;;
250    "ru")
251eval $gsdliconv <<EOF
252÷ÁÛÅ ÏËÒÕÖÅÎÉÅ ÂÙÌÏ ÕÓÐÅÛÎÏ ÎÁÓÔÒÏÅÎÏ, ÞÔÏÂÙ ÕÓÔÁÎÏ×ÉÔØ Greenstone
253EOF
254    ;;
255    *)
256      echo 'Your environment has successfully been set up to run Greenstone'
257    ;;
258  esac
259fi
260unset gsdl_not_sourced
261unset gsdliconv
262unset gsdlfromenc
263unset gsdltoenc
264
265if test "x$gsopt_noexts" != "x1" ; then
266    if test -e ext; then
267    for gsdl_ext in ext/*; do
268        if test -d $gsdl_ext; then
269        cd $gsdl_ext > /dev/null
270        if test -e setup.bash ; then
271            source ./setup.bash
272        fi
273        cd ../..
274        fi
275    done
276    fi
277fi
278
279if test -e apache-httpd ; then
280  echo "+Adding in executable path for apache-httpd"
281  PATH=$GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/bin:$PATH
282  export PATH
283
284  if test "$GSDLOS" = "linux" ; then
285      LD_LIBRARY_PATH="$GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/lib:$LD_LIBRARY_PATH"
286      export LD_LIBRARY_PATH
287 
288  elif test "$GSDLOS" = "darwin" ; then
289      DYLD_LIBRARY_PATH="$GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/lib:$DYLD_LIBRARY_PATH"
290      export DYLD_LIBRARY_PATH
291  fi
292fi
293
294if test -e local ; then
295  if test -e local/setup.bash ; then
296    echo "Sourcing local/setup.bash"
297    cd local ; source setup.bash ; cd ..
298  fi
299
300  PATH=$GSDLHOME/local/bin:$PATH
301  export PATH
302  LD_LIBRARY_PATH=$GSDLHOME/local/lib:$LD_LIBRARY_PATH
303  export LD_LIBRARY_PATH
304fi
305
306# Only for GS2: work out java, and if the bundled jre is found, then set Java env vars with it
307# Then the same java will be consistently available for all aspects of GS2 (server or GLI, and any subshells these launch)
308if [ "x$GSDL3SRCHOME" = "x" ] ; then
309    MINIMUM_JAVA_VERSION=1.5.0_00   
310
311    echo "GS2 installation: Checking for Java of version $MINIMUM_JAVA_VERSION or above"
312
313    SEARCH4J_EXECUTABLE="$GSDLHOME/bin/$GSDLOS$GSDLARCH/search4j"
314    if [ -f "$SEARCH4J_EXECUTABLE" ]; then
315   
316    # Give search4j a hint to find Java depending on the platform
317        # we now include a JRE with Mac (Mountain) Lion, because from Yosemite onwards there's no system Java on Macs
318    HINT=`cd "$GSDLHOME";pwd`/packages/jre   
319   
320        # we can't use boolean operator -a to do the AND, since it doesn't "short-circuit" if the first test fails
321        # see http://www.tldp.org/LDP/abs/html/comparison-ops.html
322
323
324    if [ "x$GSDLOS" = "xdarwin" ] && [ ! -d "$HINT" ]; then
325           # http://java.dzone.com/articles/java-findingsetting
326       # explains that /usr/libexec/java_home will print the default JDK
327       # regardless of which Mac OS we're on. Tested on Maverick, Lion, Leopard
328       # (run `/usr/libexec/java_home -v 1.7` to find a specific version)
329        macHINT=`/usr/libexec/java_home 2>&1`
330        status=$?
331        # if no java installed, then HINT will contain:
332        #  Unable to find any JVMs matching version "(null)".
333        #  No Java runtime present, try --request to install.
334        # and the status of running /usr/libexec/java_home will not be 0 but 1:
335        if [ "$status" = "0" ]; then
336        HINT=$macHINT
337        else
338        echo "No system Java on this mac..."
339        fi
340    fi
341   
342    javahome="`"$SEARCH4J_EXECUTABLE" -p "$HINT" -m $MINIMUM_JAVA_VERSION`"
343    BUNDLED_JRE="$GSDLHOME/packages/jre"
344
345    if [ "$?" != "0" ]; then
346        echo "setup.bash: Could not find Java in the environment or installation."
347        echo "Set JAVA_HOME or JRE_HOME, and put it on the PATH, if working with Java tools like Lucene."
348    elif [[ "x$javahome" != "x" && "x$javahome" != "x$BUNDLED_JRE" ]]; then
349            echo "Using Java found at $javahome"
350        if [ "x$JAVA_HOME" = "x" ]; then
351        # if Java env vars not already set, then set them to the $javahome found
352        echo "Found a Java on the system. Setting up GS2's Java environment to use this"
353        export JAVA_HOME=$javahome
354        export PATH=$JAVA_HOME/bin:$PATH
355        fi
356        # else JAVA_HOME, and PATH presumably too, would already be set
357    elif [ -d "$GSDLHOME/packages/jre" ]; then
358        echo "Found a bundled JRE. Setting up GS2's Java environment to use this"
359        export JRE_HOME=$GSDLHOME/packages/jre   
360        export PATH=$JRE_HOME/bin:$PATH
361    else
362        # can we ever really get here?
363        echo "Java environment not set and bundled JRE doesn't exist. Some tools need the Java environment. Proceeding without..."
364    fi
365    fi
366fi
367
368# if the Perl-for-greenstone tarfile has been installed in the bin/linux
369# folder, then we set things up to use that, instead of a system perl
370if [ -d "$GSDLHOME/bin/$GSDLOS$GSDLARCH/perl" ] ; then
371
372    if [ -d "$GSDLHOME/bin/$GSDLOS$GSDLARCH/perl/bin" ] ; then
373        PERLPATH=$GSDLHOME/bin/$GSDLOS$GSDLARCH/perl/bin
374        export PERLPATH
375        PATH=$PERLPATH:$PATH
376        export PATH
377    fi   
378
379    if test "$GSDLOS" = "linux" ; then
380    LD_LIBRARY_PATH=$GSDLHOME/bin/$GSDLOS$GSDLARCH/perl/lib/5.8.9/i686-linux-thread-multi/CORE:$LD_LIBRARY_PATH
381    export LD_LIBRARY_PATH
382    elif test "$GSDLOS" = "darwin" ; then
383    DYLD_LIBRARY_PATH=$GSDLHOME/bin/$GSDLOS$GSDLARCH/perl/lib/5.8.9/darwin-thread-multi-2level/CORE:$DYLD_LIBRARY_PATH
384    export DYLD_LIBRARY_PATH
385    fi
386
387    if [ "x$PERL5LIB" = "x" ] ; then
388    PERL5LIB=$GSDLHOME/bin/$GSDLOS$GSDLARCH/perl/lib
389    else
390    PERL5LIB=$GSDLHOME/bin/$GSDLOS$GSDLARCH/perl/lib:$PERL5LIB
391    fi
392    export PERL5LIB
393
394    echo ""
395    echo "***** Perl installation detected inside Greenstone."
396    echo "Command-line scripts need to be run with \"perl -S ...\""
397    echo "    e.g. perl -S import.pl -removeold demo"
398    echo ""
399# else we may in future need to update PERL5LIB with some other (further) locations
400fi
401
402# Perl >= v5.18.* randomises map iteration order within a process
403export PERL_PERTURB_KEYS=0
404
405# turn off certificate errors when using wget to retrieve over https
406# (to avoid turning it off with the --no-check-certificate flag to each wget cmd)
407# See https://superuser.com/questions/508696/wget-without-no-check-certificate
408# https://www.gnu.org/software/wget/manual/html_node/Wgetrc-Location.html
409export WGETRC=$GSDLHOME/bin/$GSDLOS/wgetrc
Note: See TracBrowser for help on using the browser.