root/main/trunk/greenstone2/setup.bat @ 32986

Revision 32986, 12.3 KB (checked in by ak19, 7 months ago)

Modifications to improve gs2build setup.bat's warning messages when JAVA/JRE_HOME not found on a machine. These warnings are premature on GS3 and can be non-fatal as gs3-setup still needs to check for the existence of a bundled JRE and make sure its bitness is suitable, in which case the non-detection of JAVA/JRE at gs2build level is non-fatal.

Line 
1@echo off
2
3setlocal enabledelayedexpansion
4
5pushd "%CD%"
6CD /D "%~dp0"
7set GSDLLANG=en
8
9echo.
10echo.
11echo  ####                        #
12echo ##                           #
13echo #     ###  ##   ##  ### ### ###  ##  ###  ##
14echo #   # #   #### #### # # ##   #  #  # # # ####
15echo ##  # #   #    #    # #   #  #  #  # # # #
16echo  #### #    ###  ### # # ###  ##  ##  # #  ###
17echo (C) 2008, New Zealand Digital Library Project
18echo.
19echo.
20echo.
21
22if "!GSDLHOME!" == "" goto start
23if "!GSDLHOME!" == "!CD!" if not "!GSDLOS!" == "" (
24    echo Your environment is already set up for Greenstone
25    goto done
26)
27
28:start
29if "!OS!" == "Windows_NT" goto WinNT
30if "!OS!" == "" goto Win95
31if "!GSDLLANG!" == "en" echo Setup failed - your PATH has not been set
32if "!GSDLLANG!" == "es" echo No se pudo realizar la configuraci¢n - no se ha establecido la RUTA.
33if "!GSDLLANG!" == "fr" echo Ech‚c de l'installation - votre variable PATH n'a pas ‚t‚ ajust‚e
34if "!GSDLLANG!" == "ru" echo “áâ ­®¢ª  ­¥ 〠« áì - “’œ ­¥ ¡ë« ãáâ ­®¢«¥­
35goto End
36
37:WinNT
38set GSDLHOME=%CD%
39set GSDLOS=windows
40
41REM Override Imagemagick and Ghostscript paths to the bundled applications shipped with greenstone if they exists otherwise use default environment variables.
42if exist "!GSDLHOME!\bin\windows\ghostscript\bin\gsdll32.dll" set GS_DLL=!GSDLHOME!\bin\windows\ghostscript\bin\gsdll32.dll
43if exist "!GSDLHOME!\bin\windows\ghostscript\lib\*.*" set GS_LIB=!GSDLHOME!\bin\windows\ghostscript\lib
44if exist "!GSDLHOME!\bin\windows\ghostscript\bin\*.*" set PATH=!GSDLHOME!\bin\windows\ghostscript\bin;!PATH!
45:: ImageMagick environment vars are now set in bin\script\gs-magick.pl
46::if exist "!GSDLHOME!\bin\windows\imagemagick\*.*" set PATH=!GSDLHOME!\bin\windows\imagemagick;!PATH!
47
48if "!GS_CP_SET!" == "yes" goto Success
49set PATH=!GSDLHOME!\bin\windows;!GSDLHOME!\bin\script;!PATH!
50if exist "!GSDLHOME!\bin\windows\perl\bin" (
51    set PERLPATH=!GSDLHOME!\bin\windows\perl\bin
52    set PATH=!PERLPATH!;!PATH! 
53)
54
55set GS_CP_SET=yes
56goto Success
57
58:Win95
59if "%1" == "SetEnv" goto Win95Env
60REM We'll invoke a second copy of the command processor to make
61REM sure there's enough environment space
62COMMAND /E:2048 /K %0 SetEnv
63goto End
64
65:Win95Env
66set GSDLHOME=%CD%
67set GSDLOS=windows
68
69REM Override Imagemagick and Ghostscript paths to the bundled applications shipped with greenstone if they exists otherwise use default environment variables.
70if exist "!GSDLHOME!\bin\windows\ghostscript\bin\gsdll32.dll" set GS_DLL="!GSDLHOME!\bin\windows\ghostscript\bin\gsdll32.dll"
71if exist "!GSDLHOME!\bin\windows\ghostscript\lib\*.*" set GS_LIB="!GSDLHOME!\bin\windows\ghostscript\lib"
72if exist "!GSDLHOME!\bin\windows\ghostscript\bin\*.*" set PATH="!GSDLHOME!\bin\windows\ghostscript\bin";"!PATH!"
73:: ImageMagick environment vars are now set in bin\script\gs-magick.pl
74::if exist "!GSDLHOME!\bin\windows\imagemagick\*.*" set PATH="!GSDLHOME!\bin\windows\imagemagick";"!PATH!"
75
76if "!GS_CP_SET!" == "yes" goto Success
77set PATH=!GSDLHOME!\bin\windows;!GSDLHOME!\bin\script;!PATH!
78if exist "!GSDLHOME!\bin\windows\perl\bin" (
79    set PERLPATH=!GSDLHOME!\bin\windows\perl\bin
80    set PATH=!PERLPATH!;!PATH!
81)
82set GS_CP_SET=yes
83goto Success
84
85
86:Success
87if "!GSDLLANG!" == "en" echo.
88if "!GSDLLANG!" == "en" echo Your environment has successfully been set up to run Greenstone.
89if "!GSDLLANG!" == "en" echo Note that these settings will only have effect within this MS-DOS
90if "!GSDLLANG!" == "en" echo session. You will therefore need to rerun setup.bat if you want
91if "!GSDLLANG!" == "en" echo to run Greenstone programs from a different MS-DOS session.
92if "!GSDLLANG!" == "en" echo.
93
94if "!GSDLLANG!" == "es" echo.
95if "!GSDLLANG!" == "es" echo Su ambiente ha sido configurado para correr los programas Greenstone.
96if "!GSDLLANG!" == "es" echo Recuerde que estos ajustes £nicamente tendr n efecto dentro de esta sesi¢n
97if "!GSDLLANG!" == "es" echo MS-DOS. Por lo tanto deber  ejecutar nuevamente setup.bat si desea
98if "!GSDLLANG!" == "es" echo correr los programas de Greenstone desde una sesi¢n MS-DOS diferente.
99if "!GSDLLANG!" == "es" echo.
100
101if "!GSDLLANG!" == "fr" echo.
102if "!GSDLLANG!" == "fr" echo Votre environnement a ‚t‚ configu‚re avec succŠs pour ex‚cuter Greenstone
103if "!GSDLLANG!" == "fr" echo Notez que ces paramŠtrages n'auront d'effet que dans cette session MS-DOS.
104if "!GSDLLANG!" == "fr" echo Vous devrez par cons‚quent r‚ex‚cuter setup.bat si vous voulez faire
105if "!GSDLLANG!" == "fr" echo lancer des programmes Greenstone dans une autre session MS-DOS.
106if "!GSDLLANG!" == "fr" echo.
107
108if "!GSDLLANG!" == "ru" echo.
109if "!GSDLLANG!" == "ru" echo ‚ è¥ ®ªà㊥­š¥ ¡ë«® ãᯥ譮 ­ áâ஥­®, ç⮡ë ãáâ ­®¢šâì Greenstone Ž¡à âšâ¥
110if "!GSDLLANG!" == "ru" echo ¢­š¬ ­š¥, çâ® íâš ­ §­ ç¥­šï ¡ã€ãâ ⮫쪮 š¬¥âì íä䥪⠢ ¯à¥€¥« å í⮣® MS DOS
111if "!GSDLLANG!" == "ru" echo á¥áášï. ‚ë ¡ã€¥â¥ ¯®í⮬㠀®«Š­ë ¯®¢â®à­® ã¯à ¢«ïâì setup.bat, ¥á«š ‚ë å®âšâ¥
112if "!GSDLLANG!" == "ru" echo ã¯à ¢«ïâì ¯à®£à ¬¬ ¬š ‡¥«ñ­ëå š§¢¥àŠ¥­­ëå ¯®à®€ ®â à §«šç­®© á¥áášš MS DOS.
113if "!GSDLLANG!" == "ru" echo.
114
115:End
116endlocal & set PATH=%PATH%& set GSDLHOME=%GSDLHOME%& set GSDLOS=%GSDLOS%
117
118set savedir=%CD%
119cd "%GSDLHOME%"
120if exist ext ( 
121    for /D %%e IN ("ext/*") do call :addexts %%e
122)
123cd "%savedir%"
124set savedir=
125goto :doneexts
126
127:addexts
128set folder=%1
129cd "ext\%folder%"       
130if EXIST setup.bat call setup.bat
131cd ..\..
132goto :eof
133
134:doneexts
135
136
137if exist "%GSDLHOME%\local\setup.bat" (
138    echo.
139    echo Running %GSDLHOME%\local\setup.bat
140    cd "%GSDLHOME%\local"
141    call setup.bat
142    cd "%GSDLHOME%"
143)
144
145setlocal enabledelayedexpansion
146
147if exist "%GSDLHOME%\local" (
148  set PATH=!GSDLHOME!\local\bin;!PATH!
149)
150
151if exist "%GSDLHOME%\apache-httpd" (
152  echo +Adding in executable path for apache-httpd
153  set PATH=!GSDLHOME!\apache-httpd\!GSDLOS!\bin;!PATH!
154  set PATH=!GSDLHOME!\apache-httpd\!GSDLOS!\lib;!PATH!
155)
156
157:: test writability of GSDLHOME
158@call "!GSDLHOME!\bin\script\checkwritability.bat"
159
160::::::::::::::::::::::::::::::
161if "!GSDL3SRCHOME!" == "" (goto javacheck) else (goto done)
162
163:javacheck
164:: Only for GS2: work out java, and if the bundled jre is found, then set Java env vars with it
165:: Then the same java will be consistently available for all aspects of GS2 (server or GLI, and any subshells these launch)
166echo.
167set MINIMUM_JAVA_VERSION=1.5.0_00
168echo GS2 installation: Checking for Java of version !MINIMUM_JAVA_VERSION! or above
169
170set BUNDLED_JRE=!GSDLHOME!\packages\jre
171if exist "!BUNDLED_JRE!" (
172    set HINT=!BUNDLED_JRE!
173) else (
174    echo No bundled JRE
175    set HINT=
176)
177
178set SEARCH4J_EXECUTABLE=!GSDLHOME!\bin\!GSDLOS!\search4j.exe
179if not exist "!SEARCH4J_EXECUTABLE!" (
180    echo Can't check for java, no Search4j 
181    if not exist "!BUNDLED_JRE!" echo Ensure Java environment variables are set ^(either JAVA_HOME or JRE_HOME and on PATH^) & goto done
182    :: else use Bundled JRE
183    echo Will use the bundled JRE and unset any JAVA_HOME to prevent conflicts
184    set JAVA_HOME=
185    set JRE_HOME=!BUNDLED_JRE!
186    set PATH=!BUNDLED_JRE!\bin;!PATH!
187    goto done
188)
189
190:: Need the call stmt, the usebackq with backticks around the full command, AND the double quotes around filepaths to properly handle spaces in the filepaths
191for /f "usebackq tokens=*" %%r in (`call "!GSDLHOME!\bin\!GSDLOS!\search4j.exe" -p "!HINT!" -m !MINIMUM_JAVA_VERSION!`) do set GS_JAVA_HOME=%%r
192
193
194if "!GS_JAVA_HOME!" == "" (
195    if not exist "!BUNDLED_JRE!" echo There's no bundled JRE.
196    echo setup.bat: Could not find Java in the environment or installation.
197    echo Set JAVA_HOME or JRE_HOME, and put it on the PATH, if working with Java tools like Lucene.
198    goto done
199)
200
201:: found java, now GS_JAVA_HOME env vars set, set JAVA_HOME else JRE_HOME
202
203if "!GS_JAVA_HOME!" == "!BUNDLED_JRE!" (   
204    :: since our bundled JRE was selected by search4j and we'll be using that, clearing any existing JAVA_HOME to prevent version conflicts
205    echo Found a bundled JRE. Setting up GS2's Java environment to use this ^(and unsetting any JAVA_HOME to prevent version conflicts^)
206    set JAVA_HOME=
207    set JRE_HOME=!BUNDLED_JRE!
208    set PATH=!BUNDLED_JRE!\bin;!PATH!
209    goto done
210)
211
212:: Otherwise, the java that search4j found is not the bundled jre. In that case
213:: if JAVA_HOME or JRE_HOME is already set to the Java found, then PATH presumably would already be set too.
214if "!JAVA_HOME!" == "!GS_JAVA_HOME!" (
215    echo Looks like the Java environment is already set up with a JAVA_HOME
216    ::echo Looks like the Java environment is already set up with a JAVA_HOME, unsetting any JRE_HOME   
217    goto done
218)
219if "!JRE_HOME!" == "!GS_JAVA_HOME!" (
220    echo Looks like the Java environment is already set up with a JRE_HOME, unsetting any JAVA_HOME to prevent java version conflicts
221    set JAVA_HOME=
222    goto done
223)
224
225:: if Java env vars not already set, then set them to the GS_JAVA_HOME found
226echo Found a Java on the system. Setting up GS2's Java environment to use this
227::echo Found a Java on the system. Setting up GS2's Java environment to use this: !GS_JAVA_HOME!
228set PATH=!GS_JAVA_HOME!\bin;!PATH!
229:: extract the last 4 chars from folder name. Could be \jre or jre\ or otherwise
230set javafoldername=!GS_JAVA_HOME:~-4!
231:: now can test if the foldername contains jre or otherwise, and based on that set either JAVA_HOME or JRE_HOME
232:: https://stackoverflow.com/questions/7005951/batch-file-find-if-substring-is-in-string-not-in-a-file
233:: https://ss64.com/nt/syntax-substring.html
234if /i "x!javafoldername:jre=!" == "x!javafoldername!" (
235    echo Setting JAVA_HOME, and unsetting any JRE_HOME to prevent version conflicts
236    set JAVA_HOME=!GS_JAVA_HOME!
237    set JRE_HOME=
238) else (
239    echo Setting JRE_HOME, and unsetting any JAVA_HOME to prevent version conflicts
240    set JRE_HOME=!GS_JAVA_HOME!
241    set JAVA_HOME=
242)
243
244::::::::::::::::::::::::::::::
245
246:done
247
248:: COMMENTING OUT THE 2 LINES DETERMINING AND SETTING THE BITNESS (32/64) ON WIN MACHINES
249:: AS IT MAY BE USEFUL IN FUTURE AND IT TOOK ME SOME TIME TO GET THESE LINES WORKING RIGHT
250:: To know bitness (32 vs 64) of a Windows machine, the cmd is "SET Processor"
251::   and look through the lines of output for the line PROCESSOR_ARCHITECTURE=x86
252::   or PROCESSOR_ARCHITECTURE=x64. See techgenix.com/aquicktiptocheckoperatingsystemarchitecture/
253:: The following runs the cmd "set Processor". Then, among the multiline output, it finds the line
254::   containing "PROCESSOR_ARCHITECTURE", splits this line on the delimiter "=" and stores the 2nd token in %%G
255::   Based on the example "_ping_cmd" at https://ss64.com/nt/for_cmd.html
256:: REM for /f "tokens=2 delims==" %%G in ('set Processor ^|find "PROCESSOR_ARCHITECTURE"') do set BITNESS=%%G
257:: Easier way to above: %PROCESSOR_ARCHITECTURE% already contains a value of amd64/x64 or x86. So don't need to run the "set Processor"
258:: command and hunt for PROCESSOR_ARCHITECTURE line. See https://superuser.com/questions/321988/how-do-i-determine-if-my-windows-is-32-bit-or-64-bit-using-a-command
259REM set BITNESS=%PROCESSOR_ARCHITECTURE%
260::   BITNESS will now be "x86" for 32 bit or something like "amd64" or "x64" for 64 bit
261:: From https://ss64.com/nt/syntax-substring.html
262::   "To do a string comparison, remove the SearchString and compare the result with the original
263::   variable before removal. If both strings are the same, then SearchString was not found:"
264REM if /i "%BITNESS:64=%" == "%BITNESS%" (set BITNESS=32) else (set BITNESS=64)
265
266
267popd
268endlocal & set PATH=%PATH%& set GSDLHOME=%GSDLHOME%& set GSDLOS=%GSDLOS%& set JRE_HOME=%JRE_HOME%& set JAVA_HOME=%JAVA_HOME%
269REM      & set BITNESS=%BITNESS%
270
271if not "%JAVA_HOME%" == "" echo JAVA_HOME: %JAVA_HOME%
272if not "%JRE_HOME%" == "" echo JRE_HOME: %JRE_HOME%
273:: if GS3, then we'll do some more checking such as bundled JRE if the bitness is right
274if "%GSDL3SRCHOME%" == "" if "%JAVA_HOME%" == "" if "%JRE_HOME%" == "" echo Warning: Neither JAVA_HOME nor JRE_HOME set. Ensure one is set and on PATH.
275if not "%GSDL3SRCHOME%" == "" if "%JAVA_HOME%" == "" if "%JRE_HOME%" == "" echo Neither JAVA_HOME nor JRE_HOME set. Will shortly check for bundled JRE of correct bitness.
276
277:: Perl >= v5.18.* randomises map iteration order within a process
278set PERL_PERTURB_KEYS=0
279
280:: The user can customise wget flags like number of retries and setting timeouts in the Wgetrc file.
281:: The WGETRC environment variable is used by wget to find a user wgetrc file overriding any system level one
282:: https://www.gnu.org/software/wget/manual/html_node/Wgetrc-Location.html
283set WGETRC=%GSDLHOME%/bin/%GSDLOS%/wgetrc
Note: See TracBrowser for help on using the browser.