Changeset 31425 for main/trunk/greenstone2
- Timestamp:
- 2017-02-17T20:36:51+13:00 (7 years ago)
- Location:
- main/trunk/greenstone2/runtime-src/packages/apache-httpd
- Files:
-
- 1 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/runtime-src/packages/apache-httpd/adjust-winmak-files.bat
r31422 r31425 3 3 :: (Also http://trac.greenstone.org/browser/main/trunk/ant-tasks/src/org/greenstone/anttasks/RegexSearchReplace.java 4 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" 5 :: This script makes use of mod_winmake_file.awk to perform the following 2 steps 6 :: to prevent race conditions to any win32.mak file trying to create/access the same tempfile.bat: 7 :: - in each .mak within httpd-2.2.11, make each line that refers to "tempfile.bat" refer to a unique tempfile.bat instead 8 :: - replace all occurrences of "/MD" in .mak files within httpd-2.2.11 with "/MT" 8 9 9 10 :: http://www.theverge.com/2016/3/30/11331014/microsoft-windows-linux-ubuntu-bash … … 33 34 :: http://stackoverflow.com/questions/2913231/how-do-i-increment-a-dos-variable-in-a-for-f-loop 34 35 :: http://stackoverflow.com/questions/17605767/create-list-or-arrays-in-windows-batch 35 set counter=036 rem set counter=0 36 37 37 38 :: http://stackoverflow.com/questions/2951063/windows-bat-file-how-to-recursively-list-all-files-of-type-mp3 … … 41 42 42 43 call :rsr-files %httpdfolder% *.mak 43 ::echo PATHS: %PATHS%44 ::echo NAMES: %NAMES%45 44 46 45 popd … … 51 50 :: ************************ SUBROUTINES ********************************************** 52 51 53 :: append counter to tempfile.bat references in the current .mak file of loop 54 :: And change any occurrence of /MD to /MT in each .mak file too 55 :: Digit wildcard doesn't work for me in sed regex here, and although the any char wildcard 56 :: works it may be too greedy. Fortunately, character classes for digits works. 52 :: A win mak file may make references to tempfile.bat in various lines of the makefile. The different 53 :: references could end up clashing with each other when they're generated on the file system by 54 :: that .mak file, leading to race conditions. To avoid this, within each win32.mak file, ensure 55 :: unique tempfile .bat files are generated: 56 :: For each win32.mak file, change each line of reference to tempfile.bat to a unique tempfile.bat 57 :: by renaming the references in that makefile line to tempfile<number>.bat. Note: change each 58 :: LINE to refer consistently to a unique tempfile .bat, don't make each reference in a line 59 :: refer to a different tempfile.bat. 60 :: Further, change any occurrence of /MD to /MT in each .mak file too. 57 61 :: To check this script has worked, check httpd-2.2.11/modules/ssl/mod_ssl.mak to make sure 58 62 :: occurrences of "tempfile.bat" have a number suffix before the extension and that there's … … 64 68 set NAMES= 65 69 for /r "%~1" %%P in ("%~2") do ( 66 rem set PATHS=!PATHS! "%%~fP"67 rem set NAMES=!NAMES! "%%~nP%%~xP"68 70 69 70 set /a "counter +=1" 71 rem set /a "counter +=1" 71 72 rem echo counter: !counter! 72 73 73 74 set filename=%%~fP 75 echo file: Modifying win32.mak file !filename! to refer to unique tempfile .bat files to avoid race conditions. 74 76 75 echo Writing tempfile!counter! into76 echo file: !filename!77 rem echo Writing tempfile!counter! into 78 rem echo file: !filename! 77 79 80 rem copy "!filename!" "!filename!.tmp" 81 rem sed "s@tempfile[0-9]*\.bat@tempfile!counter!.bat@g" "!filename!.tmp" > "!filename!" 82 rem del "!filename!.tmp" 83 84 rem copy "!filename!" "!filename!.tmp" 85 rem sed "s@/MD@/MT@g" "!filename!.tmp" > "!filename!" 86 rem del "!filename!.tmp" 78 87 88 rem http://stackoverflow.com/questions/4462954/sed-increment-number 89 rem https://www.gnu.org/software/gawk/manual/gawk.html see section An Example with Two Rules 79 90 copy "!filename!" "!filename!.tmp" 80 sed "s@tempfile[0-9]*\.bat@tempfile!counter!.bat@g" "!filename!.tmp" > "!filename!" 81 del "!filename!.tmp" 82 83 copy "!filename!" "!filename!.tmp" 84 sed "s@/MD@/MT@g" "!filename!.tmp" > "!filename!" 91 awk -f mod_winmak_file.awk "!filename!.tmp" > "!filename!" 85 92 del "!filename!.tmp" 86 93
Note:
See TracChangeset
for help on using the changeset viewer.