source: main/trunk/greenstone3/gs3-setup.bat@ 33975

Last change on this file since 33975 was 33932, checked in by davidb, 4 years ago

Commented out Java version warning message, as it presents as something that looks like a big issue (just from the number of lines printed out, even though it is marked as a warning, it does so in SCARY ALL CAPS) when it isn't

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 16.1 KB
RevLine 
[15071]1@echo off
2
[22069]3setlocal enabledelayedexpansion
4
[31472]5set DEBUG=false
6
[20191]7set java_min_version=1.5.0_00
[15071]8
[27832]9if exist gs3-setup.bat goto prelim
[15071]10 echo This script must be run from within the Greenstone 3 home directory
[27832]11 goto done
[15071]12
[27832]13:prelim
14if "!GSDL3SRCHOME!" == "" goto start
15if "!GSDL3SRCHOME!" == "!CD!" (
16 echo Your environment is already set up for Greenstone3
17 goto done
18) else (
19 echo Your environment was set up for Greenstone 3 in !GSDL3SRCHOME!.
20 echo Overwriting that set up for the current Greenstone 3 in !CD!.
21)
22
[15071]23:start
[15363]24:: ---- Set some relevant environment variables ----
25
26:: this is the default
[22069]27:: greenstone3 (!GSDL3SRCHOME!)
28:: +-- web (!GSDL3HOME!)
[15363]29:: +-- packages
[22069]30:: +-- tomcat (!TOMCAT_HOME!)
31:: +-- ant (!ANT_HOME!)
[15363]32
[24374]33:: set GSDL3SRCHOME to the current directory
[22069]34cd | winutil\setvar.exe GSDL3SRCHOME > !TMP!\setgsdl3.bat
35call !TMP!\setgsdl3.bat
36del !TMP!\setgsdl3.bat
[15363]37
[24374]38:: set GSDL3HOME to the 'web' subdirectory
[22069]39set GSDL3HOME=!GSDL3SRCHOME!\web
[30574]40set WEB_CONTAINING_CLASSES=!GSDL3SRCHOME!\web
[30568]41:: set GSDL3HOME to any web.home property provided, and create that folder if it doesn't exist
42:: Replace forward slashes in web.home with back slashes
43:: http://scripts.dragon-it.co.uk/scripts.nsf/docs/batch-search-replace-substitute!OpenDocument&ExpandSection=3&BaseTarget=East&AutoFramed
[30592]44if exist "!GSDL3SRCHOME!\build.properties" for /F "usebackq tokens=1,2 delims==" %%G in ("!GSDL3SRCHOME!\build.properties") do (
[30568]45 if "%%G"=="web.home" (
46 set GSDL3HOME=%%H
47 set GSDL3HOME=!GSDL3HOME:/=\!
[30574]48 set WEB_CONTAINING_CLASSES=!GSDL3HOME!
[30568]49 if not exist "!GSDL3HOME!" cmd /c "!GSDL3SRCHOME!\userweb.cmd"
[30574]50 goto foundwebhome
51 )
[30568]52)
[15071]53
[30574]54:foundwebhome
[30568]55:: Whatever the web directory is, it should contain the WEB-INF\classes folder, else go back to using default for this
56:: The WEB-INF\classes folder will be absent in a userweb folder, but will be present if GSDL3HOME=GSDL3SRCHOME\web
57:: or if web.home points to GS3 as a webapp inside tomcat
[30574]58if not exist "!GSDL3HOME!\WEB-INF\classes" set WEB_CONTAINING_CLASSES=!GSDL3SRCHOME!\web
[30568]59
[15363]60:: change if using external tomcat or ant
[22069]61set TOMCAT_HOME=!GSDL3SRCHOME!\packages\tomcat
62if exist "!GSDL3SRCHOME!\packages\ant\*.*" set ANT_HOME=!GSDL3SRCHOME!\packages\ant
[15071]63
[15363]64:: other important environment variables
[15071]65set GSDLOS=windows
[15363]66
67:: ---- Set the CLASSPATH and PATH environment variables ----
[22069]68if "!GS_CP_SET!" == "yes" goto skipSetCp
[30574]69set CLASSPATH=!WEB_CONTAINING_CLASSES!\WEB-INF\classes;!GSDL3SRCHOME!\resources\java;!GSDL3SRCHOME!\cp.jar;!CLASSPATH!;
[24603]70set PATH=!GSDL3SRCHOME!\bin;!GSDL3SRCHOME!\bin\script;!GSDL3SRCHOME!\lib\jni;!ANT_HOME!\bin;!PATH!
[15071]71
[20304]72:: Override Imagemagick and Ghostscript paths to the bundled applications shipped with greenstone if they exists otherwise use default environment variables.
[24374]73:: if exist "!GSDL3SRCHOME!\gs2build\bin\windows\ghostscript\bin\gsdll32.dll" set GS_DLL=!GSDL3SRCHOME!\gs2build\bin\windows\ghostscript\bin\gsdll32.dll
74:: if exist "!GSDL3SRCHOME!\gs2build\bin\windows\ghostscript\lib\*.*" set GS_LIB=!GSDL3SRCHOME!\gs2build\bin\windows\ghostscript\lib
75:: if exist "!GSDL3SRCHOME!\gs2build\bin\windows\ghostscript\bin\*.*" set PATH=!GSDL3SRCHOME!\gs2build\bin\windows\ghostscript\bin;!PATH!
76:: if exist "!GSDL3SRCHOME!\gs2build\bin\windows\imagemagick\*.*" set PATH=!GSDL3SRCHOME!\gs2build\bin\windows\imagemagick;!PATH!
[20304]77
[15363]78:: a little dynamic set cp stuff
[22075]79if exist "!TMP!\setcp.bat" del "!TMP!\setcp.bat"
80
81:: http://ss64.com/nt/for_cmd.html, how to deal with spaces in the file list in a for command
82:: Note that TOMCAT_HOME\common\endorsed only exists for Tomcat 5, not Tomcat 6
83:: (where it contains xercesImpl.jar and xml-apis.jar which aren't there in Tomcat 6)
84if exist "!TOMCAT_HOME!\common\endorsed\*.jar" for /f %%j in ('dir/b ^"!TOMCAT_HOME!\common\endorsed\*.jar^"') do echo set CLASSPATH=%%CLASSPATH%%;%%TOMCAT_HOME%%\common\endorsed\%%j>> !TMP!\setcp.bat
85for /f %%j in ('dir/b ^"!TOMCAT_HOME!\lib\*.jar^"') do echo set CLASSPATH=%%CLASSPATH%%;%%TOMCAT_HOME%%\lib\%%j>> !TMP!\setcp.bat
86
[22069]87if exist !TMP!\setcp.bat call !TMP!\setcp.bat
88if exist !TMP!\setcp.bat del !TMP!\setcp.bat
[15363]89
90set GS_CP_SET=yes
[15071]91:skipSetCp
92
[21320]93:: ---- if gs2build is there, run its setup.bat file ----
[31472]94:: http://stackoverflow.com/questions/69068/long-commands-split-over-multiple-lines-in-windows-vista-batch-bat-file
[31473]95endlocal & set DEBUG=%DEBUG%& set RUNJAVA=%RUNJAVA%& set PATH=%PATH%& set GSDLOS=%GSDLOS%& set GSDLHOME=%GSDLHOME%& set GSDL3HOME=%GSDL3HOME%& ^
96set GSDL3SRCHOME=%GSDL3SRCHOME%& set JAVA_HOME=%JAVA_HOME%& set JRE_HOME=%JRE_HOME%& set ANT_HOME=%ANT_HOME%& set CLASSPATH=%CLASSPATH%
[21320]97
98if exist gs2build\setup.bat (
99 echo.
100 echo Running gs2build\setup.bat
101 cd gs2build
102 call setup.bat
103 cd ..
104)
105
106:: ---- Check for any setup files in ext or local folders ----
107if exist ext (
108 for /D %%e IN ("ext/*") do (
109 cd ext\%%e
[24336]110 if EXIST gs3-setup.bat (
111 call gs3-setup.bat
112 ) else (
113 if EXIST setup.bat call setup.bat
114 )
[21320]115 cd ..\..
116 )
117)
118
119
120if exist local\gs3-setup.bat (
121 echo.
122 echo Running local\gs3-setup.bat
123 cd local
124 call gs3-setup.bat
125 cd ..
126)
127
[24374]128setlocal enabledelayedexpansion
129
[15363]130:: ---- Search for java ----
[20300]131set JAVA_MIN_VERSION=1.5.0_00
[31469]132set BUNDLED_JRE=!CD!\packages\jre
133set HINT=!BUNDLED_JRE!
[31447]134
[20300]135::if search4j is present, use it
136set FOUNDJAVAHOME=
137set RUNJAVA=
138if exist bin\search4j.exe (
[22069]139 for /F "tokens=*" %%r in ('bin\search4j.exe -d -p "!HINT!" -m !JAVA_MIN_VERSION!') do set FOUNDJAVAHOME=%%r
140 for /F "tokens=*" %%r in ('bin\search4j.exe -r -p "!HINT!" -m !JAVA_MIN_VERSION!') do set FOUNDJREHOME=%%r
[20300]141)
[15071]142
[31447]143
144echo.
[31472]145if "%DEBUG%" == "true" echo ********************************************************************
[31447]146
147rem Check if any Java found matches the bitness of the Greenstone installation's binaries
148rem The sort of output we want:
149:: Installed GS as 32 bit
150:: Detected java is 64 bit
151:: Changing to use the GS bundled 32 bit jre
152:: We've detected a mismatch, this will only affect MG/MGPP collections for searching and GDBM database collections
153
154:: 1. What bit-ness are this Greenstone installation's binaries?
155:: GNUfile: http://stackoverflow.com/questions/2689168/checking-if-file-is-32bit-or-64bit-on-windows
156:: http://gnuwin32.sourceforge.net/packages/file.htm
[31460]157:: Also http://stackoverflow.com/questions/4089641/programatically-determine-if-native-exe-is-32-bit-or-64-bit
[31447]158:: http://stackoverflow.com/questions/2062020/how-can-i-tell-if-im-running-in-64-bit-jvm-or-32-bit-jvm-from-within-a-program
159:: Messy way: http://superuser.com/questions/358434/how-to-check-if-a-binary-is-32-or-64-bit-on-windows
160
161:: "%GSDLHOME%\bin\windows\GNUfile\bin\file.exe" "%GSDLHOME%\bin\windows\wvWare.exe"
[31460]162:: But we'll test the bitness of gdbmjava.dll itself as it's guaranteed to be present in GS3 and is also dependent on JNI
163:: No need to have the right bitness for GS2, since it doesn't use JNI
[31447]164
165:: See https://ss64.com/nt/for_cmd.html for using batch FOR to loop against the results of another command.
166:: Running
167:: for /f "usebackq delims=" %%G IN (`"gs2build\bin\windows\GNUfile\bin\file.exe" gs2build\bin\windows\wvWare.exe`) do echo %%G
168:: prints out the entire output, e.g.:
169:: gs2build\bin\windows\wvWare.exe; PE32 executable for MS Windows (console) Intel 80386 32-bit
170:: To just get the "PE32" part of that output, set the delimiter char to space and request only the 2nd token:
[31472]171:: Note: Using call before the command to allow 2 sets of double quotes, see
[31447]172:: http://stackoverflow.com/questions/6474738/batch-file-for-f-doesnt-work-if-path-has-spaces
173:: Could use shortfilenames, see http://stackoverflow.com/questions/10227144/convert-long-filename-to-short-filename-8-3-using-cmd-exe
[31472]174if not exist "!GSDL3SRCHOME!\lib\jni\gdbmjava.dll" set bitness=UNKNOWN& goto setupjavahome
[32969]175rem The following breaks when GS3 is installed in a path containing spaces
176rem for /f "usebackq tokens=2 delims= " %%G IN (`call "!GSDLHOME!\bin\windows\GNUfile\bin\file.exe" "!GSDL3SRCHOME!\lib\jni\gdbmjava.dll"`) do set bitness=%%G
177rem So run with relative filepaths:
178for /f "usebackq tokens=2 delims= " %%G IN (`cd gs2build ^&^& call "bin\windows\GNUfile\bin\file.exe" "..\lib\jni\gdbmjava.dll"`) do set bitness=%%G
[31447]179
180if "%bitness%" == "PE32+" (
181 set bitness=64
182 echo The installed Greenstone is 64 bit
183) else (
184 if "%bitness%" == "PE32" (
185 set bitness=32
186 echo The installed Greenstone is 32 bit
187 ) else (
[31472]188 echo WARNING: Greenstone installation is of unknown bitness. "%bitness%" is neither 32 nor 64 bit
[31447]189 set bitness=UNKNOWN
190 )
191)
192
193:: 2. What bitness are any JAVA_HOME else JRE_HOME found by search4j?
194:: If you run the non-existent program "pinky" from batch or the DOS console, the exit value is 9009
195:: The same must be true if java is not installed and therefore not found. echo %errorlevel% produces 9009
196:: If java exists and is 32 bit, then running "java -d32 -version" has a return value of 1. echo %errorlevel% (1)
197:: If java exists and is 64 bit, then running "java -d32 -version" has a return value of 0. echo %errorlevel% (0)
198
199:testjavahome
200:: http://www.robvanderwoude.com/errorlevel.php
201:: https://ss64.com/nt/errorlevel.html
[21988]202if DEFINED FOUNDJAVAHOME (
[31469]203 if "%bitness%" == "UNKNOWN" goto setupjavahome
[31472]204 if "%DEBUG%" == "true" echo Testing bitness of JAVA_HOME found at !FOUNDJAVAHOME!:
[31447]205 "!FOUNDJAVAHOME!\bin\java.exe" -d%bitness% -version 2> nul
[31472]206 if !ERRORLEVEL! equ 1 if "%DEBUG%" == "true" echo The detected JDK java is incompatible with !bitness! bit GS& goto testjre
[31447]207 if !ERRORLEVEL! equ 0 (
[31472]208 if "%DEBUG%" == "true" echo The detected JDK java is a matching %bitness% bit
[31461]209 goto setupjavahome
[31472]210 )
[20300]211)
[15071]212
[31447]213:testjre
214if DEFINED FOUNDJREHOME (
[31469]215 if "%bitness%" == "UNKNOWN" goto setupjrehome
[31472]216 if "%DEBUG%" == "true" echo Testing bitness of JRE_HOME found at !FOUNDJREHOME!:
[31447]217 "!FOUNDJREHOME!\bin\java.exe" -d%bitness% -version 2> nul
[31472]218 if !ERRORLEVEL! equ 1 if "%DEBUG%" == "true" echo The detected JRE java is incompatible with !bitness! bit GS& goto testbundledjre
[31471]219 if !ERRORLEVEL! equ 0 (
[31447]220 rem The JRE_HOME found by search4j may be the bundled JRE, overriding any system JRE_HOME,
[31471]221 rem because the bundled JRE_HOME was provided as HINT to search4j.
[31472]222 if "%DEBUG%" == "true" echo The detected JRE java is a matching %bitness% bit
[31461]223 goto setupjrehome
[31472]224 )
[20307]225)
226
[31447]227:: 3. Fall back to 32 bit JRE bundled with GS
[31469]228:testbundledjre
229if exist "!BUNDLED_JRE!\bin\java.exe" (
230 if "%bitness%" == "UNKNOWN" goto bundledjre
[31472]231 if "%DEBUG%" == "true" echo Testing bitness of bundled JRE at !BUNDLED_JRE!:
[31469]232 "!BUNDLED_JRE!\bin\java.exe" -d%bitness% -version 2> nul
[31472]233 if !ERRORLEVEL! equ 1 if "%DEBUG%" == "true" echo The bundled JRE java is incompatible with !bitness! bit& goto setupjavahome
[31471]234 if !ERRORLEVEL! equ 0 (
[31472]235 if "%DEBUG%" == "true" echo The bundled JRE java is a matching %bitness% bit
236 echo *** Changing to use Greenstone's bundled JRE.
[31469]237 goto bundledjre
238 )
239)
240
[31447]241:bundledjre
242:: We bundled a 32 bit JRE, but what if GS was compiled with 64 bit Java?
243:: All but MG/MGPP and GDBM should still work with 64 bit java.
[31469]244if exist "!BUNDLED_JRE!\bin\java.exe" (
245 set JRE_HOME=!BUNDLED_JRE!
246 ::set JAVA_HOME=!BUNDLED_JRE!
[31467]247 set PATH=!JRE_HOME!\bin;!PATH!
248 set RUNJAVA=!JRE_HOME!\bin\java.exe
[20300]249 goto summaryThenEnd
250)
[15071]251
[31461]252:: 4. If no bundled JRE exists either, we'd still need to check if search4j found a JAVA_HOME or JRE_HOME
253:: and use that even if there was a bitness mismatch btw GS3 and the Java found.
254:: Label summaryThenEnd will print out warnings on any mismatch
255:setupjavahome
256if DEFINED FOUNDJAVAHOME (
[31472]257 echo Using the JAVA_HOME detected at !FOUNDJAVAHOME!
[31471]258 set JAVA_HOME=!FOUNDJAVAHOME!
[31461]259 set PATH=!FOUNDJAVAHOME!\bin;!PATH!
260 set RUNJAVA=!FOUNDJAVAHOME!\bin\java.exe
261 goto summaryThenEnd
262)
263
264:setupjrehome
[31472]265if DEFINED FOUNDJREHOME (
266 if "!FOUNDJREHOME!" == "!BUNDLED_JRE!" (
267 echo Using the bundled JRE detected at !FOUNDJREHOME!
268 ) else (
269 echo Using the JRE detected at !FOUNDJREHOME!
270 )
[31461]271 set JRE_HOME=!FOUNDJREHOME!
272 set PATH=!FOUNDJREHOME!\bin;!PATH!
273 set RUNJAVA=!FOUNDJREHOME!\bin\java.exe
274 goto summaryThenEnd
275)
276
[31472]277if exist "!BUNDLED_JRE!\bin\java.exe" (
278 echo Using the bundled JRE detected at !FOUNDJREHOME!
279 goto bundledjre
280)
[31469]281
[31461]282:: 5. Last ditch effort: search4j couldn't find any java, but check any Java env vars set anyway
[31472]283echo Search4j could not find an appropriate JDK or JRE java.
[33932]284echo Checking for Java explicitly set through environment variables
285:echo Attempting to use any JAVA_HOME else JRE_HOME in the environment...
[31472]286
[22069]287if exist "!JAVA_HOME!\bin\java.exe" (
288 set PATH=!JAVA_HOME!\bin;!PATH!
289 set RUNJAVA=!JAVA_HOME!\bin\java.exe
[22082]290 echo Using Java at !JAVA_HOME!
[33932]291: echo WARNING: Greenstone has not checked the version number of this Java installation
292: echo The source distribution of Greenstone3 requires Java 1.5 or greater
293: echo SVN users may still use Java 1.4
294: echo.
[20300]295 goto summaryThenEnd
296)
297
[22069]298if exist "!JRE_HOME!\bin\java.exe" (
299 set PATH=!JRE_HOME!\bin;!PATH!
300 set RUNJAVA=!JRE_HOME!\bin\java.exe
[22082]301 echo Using Java at !JRE_HOME!
[33932]302: echo WARNING: Greenstone has not checked the version number of this JRE installation
303: echo The source distribution of Greenstone3 requires Java 1.5 or greater
304: echo SVN users may still use Java 1.4
305: echo.
[20300]306 goto summaryThenEnd
307)
308
[22082]309echo ERROR: Failed to locate Java
[31447]310echo Please set JAVA_HOME or JRE_HOME to point to an appropriate %bitness% bit Java
[32987]311echo and add JAVA_HOME/bin or JRE_HOME/bin to your PATH.
[20300]312goto end
313
314:summaryThenEnd
[31461]315:: 6. Check that the bitness of any Java found is appropriate and warn if it is not.
[31469]316if "%bitness%" == "UNKNOWN" goto displayvars
[31447]317"!RUNJAVA!" -d%bitness% -version 2> nul
318if !ERRORLEVEL! equ 1 (
[31468]319 echo *** WARNING: Detected mismatch between the bit-ness of your Greenstone installation ^(!bitness! bit^)
320 echo *** and the Java found at !RUNJAVA!.
[31447]321 echo *** Continuing with this Java anyway:
[31472]322 echo *** This will only affect MG/MGPP collections for searching, and GDBM database collections.
323 echo *** Else set JAVA_HOME or JRE_HOME to point to an appropriate %bitness%-bit Java,
324 echo *** or recompile GS with your system Java:
[31447]325 if exist "!JAVA_HOME!" ( echo *** JAVA_HOME at !JAVA_HOME! ) else ( echo *** JRE_HOME at !JRE_HOME! )
326)
[20300]327
[31469]328:displayvars
[31472]329if "%DEBUG%" == "true" echo ********************************************************************
[31447]330echo.
331
[22069]332echo GSDL3SRCHOME : !GSDL3SRCHOME!
333echo GSDL3HOME : !GSDL3HOME!
334echo JAVA : !RUNJAVA!
[22075]335
[22024]336if "!ANT_HOME!" == "" (
[20493]337 echo.
338 echo ANT_HOME is not yet set.
339 echo Please make sure you have Ant version 1.7.1 or higher installed
[22082]340 echo Then set ANT_HOME to the Ant installation folder
[22075]341 echo and add the path to its bin folder to the PATH environment variable
[20493]342) else (
[22024]343 echo ANT_HOME : !ANT_HOME!
[20493]344)
345echo.
[22015]346
[27832]347:done
[22069]348:: End localisation of variables that started with the set local/set enabledelayedexpansion command
[31472]349:: Restore global variables that would otherwise be lost at script's end due to their having been initialised in a
[22069]350:: set local/set enabledelayedexpansion section. See http://ss64.com/nt/endlocal.html
[31473]351endlocal & set RUNJAVA=%RUNJAVA%& set PATH=%PATH%& set GSDLOS=%GSDLOS%& set GSDLHOME=%GSDLHOME%& set GSDL3HOME=%GSDL3HOME%& set GSDL3SRCHOME=%GSDL3SRCHOME%& ^
352set JAVA_HOME=%JAVA_HOME%& set JRE_HOME=%JRE_HOME%& set ANT_HOME=%ANT_HOME%& set CLASSPATH=%CLASSPATH%
[22015]353
[33793]354rem For locales that are significantly different from the English locale, for example for
355rem Chinese locales, UTF-8 XML files parsed by DOM or SAX XML parser in Java code requires
356rem -Dfile.encoding=UTF-8 to be passed to the JVM. We can ensure this happens by setting
357rem the JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 in gs2build\setup.bat and exporting it as below.
358rem In that case, can also set this in force-start-tomcat and force-stop-tomcat in build.xml
359rem Finally, in DirectoryPlugin.pm, uncomment Alias.pm and rename *forLocaleIssue files
360rem in cpan\Encode to Alias.pm and the up-to-date Locale.pm.
361rem endlocal & set RUNJAVA=%RUNJAVA%& set PATH=%PATH%& set GSDLOS=%GSDLOS%& set GSDLHOME=%GSDLHOME%& set GSDL3HOME=%GSDL3HOME%& set GSDL3SRCHOME=%GSDL3SRCHOME%& ^
362set JAVA_HOME=%JAVA_HOME%& set JRE_HOME=%JRE_HOME%& set JAVA_TOOL_OPTIONS=%JAVA_TOOL_OPTIONS%& set ANT_HOME=%ANT_HOME%& set CLASSPATH=%CLASSPATH%
363
[31473]364:end
Note: See TracBrowser for help on using the repository browser.