source: main/trunk/greenstone2/setup.bash@ 32345

Last change on this file since 32345 was 32205, checked in by ak19, 6 years 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
File size: 11.9 KB
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 repository browser.