source: main/trunk/greenstone2/setup.bat@ 32986

Last change on this file since 32986 was 32986, checked in by ak19, 5 years 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.

File size: 12.3 KB
RevLine 
[18968]1@echo off
[22318]2
3setlocal enabledelayedexpansion
4
[18968]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
[27831]22if "!GSDLHOME!" == "" goto start
[27966]23if "!GSDLHOME!" == "!CD!" if not "!GSDLOS!" == "" (
[27831]24 echo Your environment is already set up for Greenstone
25 goto done
26)
27
28:start
[22318]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 “áâ ­®¢ª  ­¥ 〠« áì - “’œ ­¥ ¡ë« ãáâ ­®¢«¥­
[18968]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.
[22318]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!
[24612]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!
[18968]47
[22318]48if "!GS_CP_SET!" == "yes" goto Success
[24363]49set PATH=!GSDLHOME!\bin\windows;!GSDLHOME!\bin\script;!PATH!
50if exist "!GSDLHOME!\bin\windows\perl\bin" (
51 set PERLPATH=!GSDLHOME!\bin\windows\perl\bin
[24373]52 set PATH=!PERLPATH!;!PATH!
[24363]53)
54
[18968]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.
[22318]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!"
[24612]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!"
[18968]75
[22318]76if "!GS_CP_SET!" == "yes" goto Success
[24363]77set PATH=!GSDLHOME!\bin\windows;!GSDLHOME!\bin\script;!PATH!
78if exist "!GSDLHOME!\bin\windows\perl\bin" (
79 set PERLPATH=!GSDLHOME!\bin\windows\perl\bin
[24372]80 set PATH=!PERLPATH!;!PATH!
[24363]81)
[18968]82set GS_CP_SET=yes
83goto Success
84
85
86:Success
[22318]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.
[18968]93
[22318]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.
[18968]100
[22318]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.
[18968]107
[22318]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.
[18968]114
115:End
[22492]116endlocal & set PATH=%PATH%& set GSDLHOME=%GSDLHOME%& set GSDLOS=%GSDLOS%
[18968]117
[23665]118set savedir=%CD%
[23650]119cd "%GSDLHOME%"
[23665]120if exist ext (
121 for /D %%e IN ("ext/*") do call :addexts %%e
[18968]122)
[23665]123cd "%savedir%"
124set savedir=
125goto :doneexts
[23650]126
[23665]127:addexts
128set folder=%1
129cd "ext\%folder%"
130if EXIST setup.bat call setup.bat
131cd ..\..
132goto :eof
133
134:doneexts
[28759]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
[22492]145setlocal enabledelayedexpansion
[23665]146
[28759]147if exist "%GSDLHOME%\local" (
148 set PATH=!GSDLHOME!\local\bin;!PATH!
149)
150
[23665]151if exist "%GSDLHOME%\apache-httpd" (
[22422]152 echo +Adding in executable path for apache-httpd
[22318]153 set PATH=!GSDLHOME!\apache-httpd\!GSDLOS!\bin;!PATH!
[23011]154 set PATH=!GSDLHOME!\apache-httpd\!GSDLOS!\lib;!PATH!
[18968]155)
156
157:: test writability of GSDLHOME
[22318]158@call "!GSDLHOME!\bin\script\checkwritability.bat"
[27831]159
[31983]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
[31990]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
[31983]192
[31990]193
[31983]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
[27831]246:done
[32207]247
[32209]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/
[32207]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
[32420]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%
[32209]260:: BITNESS will now be "x86" for 32 bit or something like "amd64" or "x64" for 64 bit
[32207]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:"
[32209]264REM if /i "%BITNESS:64=%" == "%BITNESS%" (set BITNESS=32) else (set BITNESS=64)
[32207]265
[32420]266
[23665]267popd
[32209]268endlocal & set PATH=%PATH%& set GSDLHOME=%GSDLHOME%& set GSDLOS=%GSDLOS%& set JRE_HOME=%JRE_HOME%& set JAVA_HOME=%JAVA_HOME%
269REM & set BITNESS=%BITNESS%
[29372]270
[31983]271if not "%JAVA_HOME%" == "" echo JAVA_HOME: %JAVA_HOME%
272if not "%JRE_HOME%" == "" echo JRE_HOME: %JRE_HOME%
[32986]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.
[31983]276
[29372]277:: Perl >= v5.18.* randomises map iteration order within a process
278set PERL_PERTURB_KEYS=0
[31854]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 repository browser.