source: main/trunk/greenstone2/runtime-src/packages/apache-httpd/adjust-winmak-files.bat@ 31421

Last change on this file since 31421 was 31421, checked in by ak19, 7 years ago

New batch file adjust-winmake-files.bat that adjusts the win mak files within an extracted apache httpd 2 in approximately the same way that the release kit does this (changeset 22490), to prevent the race condition that stops GS2 compilation. This script is called from makegs2.bat after extracting the apache httpd, since the makegs2.bat script is not called by the release-kit which does its own regex replacement within the win mak files using custom anttasks.

File size: 4.1 KB
Line 
1:: This file ports the changes Sam made to the release-kit (using ant tasks) for compiling the GS2 release
2:: See changeset http://trac.greenstone.org/changeset/22490
3:: (Also http://trac.greenstone.org/browser/main/trunk/ant-tasks/src/org/greenstone/anttasks/RegexSearchReplace.java
4:: http://trac.greenstone.org/browser/main/trunk/ant-tasks/src/org/greenstone/anttasks/InsertUniqueValue.java)
5:: This script performs 2 steps:
6:: replace all occurrences of "tempfile" in .mak files within httpd-2.2.11 with "tempfile$counter"
7:: replace all occurrences of "/MD" in .mak files within httpd-2.2.11 with "/MT"
8
9:: http://www.theverge.com/2016/3/30/11331014/microsoft-windows-linux-ubuntu-bash
10:: "Microsoft is adding the Linux command line to Windows 10" Mar 30, 2016
11
12
13@echo off
14
15:: pass in the httpd folder to this script, e.g. httpd-2.2.11
16if [%1]==[] echo ERROR: Extracted httpd folder name not specified. Unable to adjust win .mak files&& goto :eof
17if not exist "%~dp0%1" echo ERROR: Extracted httpd folder %~dp0%1 doesn't exist. Unable to adjust win .mak files&& goto :eof
18
19setlocal enableextensions enabledelayedexpansion
20set httpdfolder=%1
21
22:: http://stackoverflow.com/questions/4419868/what-is-the-current-directory-in-a-batch-file
23pushd "%CD%"
24cd /d "%~dp0"
25
26:: Use sed to regex search and replace text files
27:: http://stackoverflow.com/questions/1115508/batch-find-and-edit-lines-in-txt-file
28:: (Instead of sed can also use FindRepl.bat from http://www.dostips.com/forum/viewtopic.php?t=4697)
29:: First add SED to PATH:
30set PATH=..\..\..\bin\windows;%PATH%
31
32:: Incrementing http://stackoverflow.com/questions/21697199/how-to-increment-variable-under-dos
33:: http://stackoverflow.com/questions/2913231/how-do-i-increment-a-dos-variable-in-a-for-f-loop
34:: http://stackoverflow.com/questions/17605767/create-list-or-arrays-in-windows-batch
35set counter=0
36
37:: http://stackoverflow.com/questions/2951063/windows-bat-file-how-to-recursively-list-all-files-of-type-mp3
38:: "This batch file demonstrates how to extract elements of a filename from the variable in a for loop.
39:: Save this as listfiles.bat, then run "listfiles some\folder *.mp3".
40:: I set up the file finding as a subroutine in the batch file so you can insert it into your own scripts."
41
42call :rsr-files %httpdfolder% *.mak
43::echo PATHS: %PATHS%
44::echo NAMES: %NAMES%
45
46popd
47endlocal
48goto :eof
49
50:: ************************ SUBROUTINES **********************************************
51
52:: append counter to tempfile.bat references in the current .mak file of loop
53:: And change any occurrence of /MD to /MT in each .mak file too
54:: Digit wildcard doesn't work for me in sed regex here, and although the any char wildcard
55:: works it may be too greedy. Fortunately, character classes for digits works.
56:: To check this script has worked, check httpd-2.2.11/modules/ssl/mod_ssl.mak to make sure
57:: occurrences of "tempfile.bat" have a number suffix before the extension and that there's
58:: no occurrence of /MD (or /MDd) only of /MT (and /MTd).
59:: See https://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx for /MD, /MDd, /MT, /MTd
60
61:rsr-files
62 set PATHS=
63 set NAMES=
64 for /r "%~1" %%P in ("%~2") do (
65 rem set PATHS=!PATHS! "%%~fP"
66 rem set NAMES=!NAMES! "%%~nP%%~xP"
67
68
69 set /a "counter +=1"
70 rem echo counter: !counter!
71
72 set filename=%%~fP
73
74 echo Writing tempfile!counter! into
75 echo file: !filename!
76
77
78 copy "!filename!" "!filename!.tmp"
79 sed "s@tempfile[0-9]*\.bat@tempfile!counter!.bat@g" "!filename!.tmp" > "!filename!"
80 del "!filename!.tmp"
81
82 copy "!filename!" "!filename!.tmp"
83 sed "s@/MD@/MT@g" "!filename!.tmp" > "!filename!"
84 del "!filename!.tmp"
85
86 )
87goto :eof
88
89
90
91
92:: copy httpd-2.2.11\libhttpd.mak httpd-2.2.11\libhttpd.mak.tmp
93
94:: Use batch cmd 'type' to view files without file locking and for viewing locked files: http://www.robvanderwoude.com/type.php
95rem type httpd-2.2.11\libhttpd.mak.tmp | sed "s/tempfile/tempfile1/g" > httpd-2.2.11\libhttpd.mak
96:: Alternatively:
97rem sed "s/tempfile/tempfile%counter%/g" httpd-2.2.11\libhttpd.mak.tmp > httpd-2.2.11\libhttpd.mak
98
99:: del httpd-2.2.11\libhttpd.mak.tmp
Note: See TracBrowser for help on using the repository browser.