[31421] | 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)
|
---|
[31425] | 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"
|
---|
[31421] | 9 |
|
---|
| 10 | :: http://www.theverge.com/2016/3/30/11331014/microsoft-windows-linux-ubuntu-bash
|
---|
| 11 | :: "Microsoft is adding the Linux command line to Windows 10" Mar 30, 2016
|
---|
| 12 |
|
---|
| 13 |
|
---|
| 14 | @echo off
|
---|
| 15 |
|
---|
| 16 | :: pass in the httpd folder to this script, e.g. httpd-2.2.11
|
---|
| 17 | if [%1]==[] echo ERROR: Extracted httpd folder name not specified. Unable to adjust win .mak files&& goto :eof
|
---|
| 18 | if not exist "%~dp0%1" echo ERROR: Extracted httpd folder %~dp0%1 doesn't exist. Unable to adjust win .mak files&& goto :eof
|
---|
| 19 |
|
---|
| 20 | setlocal enableextensions enabledelayedexpansion
|
---|
| 21 | set httpdfolder=%1
|
---|
| 22 |
|
---|
| 23 | :: http://stackoverflow.com/questions/4419868/what-is-the-current-directory-in-a-batch-file
|
---|
| 24 | pushd "%CD%"
|
---|
| 25 | cd /d "%~dp0"
|
---|
| 26 |
|
---|
| 27 | :: Use sed to regex search and replace text files
|
---|
| 28 | :: http://stackoverflow.com/questions/1115508/batch-find-and-edit-lines-in-txt-file
|
---|
| 29 | :: (Instead of sed can also use FindRepl.bat from http://www.dostips.com/forum/viewtopic.php?t=4697)
|
---|
| 30 | :: First add SED to PATH:
|
---|
| 31 | set PATH=..\..\..\bin\windows;%PATH%
|
---|
| 32 |
|
---|
| 33 | :: Incrementing http://stackoverflow.com/questions/21697199/how-to-increment-variable-under-dos
|
---|
| 34 | :: http://stackoverflow.com/questions/2913231/how-do-i-increment-a-dos-variable-in-a-for-f-loop
|
---|
| 35 | :: http://stackoverflow.com/questions/17605767/create-list-or-arrays-in-windows-batch
|
---|
[31425] | 36 | rem set counter=0
|
---|
[31421] | 37 |
|
---|
| 38 | :: http://stackoverflow.com/questions/2951063/windows-bat-file-how-to-recursively-list-all-files-of-type-mp3
|
---|
| 39 | :: "This batch file demonstrates how to extract elements of a filename from the variable in a for loop.
|
---|
| 40 | :: Save this as listfiles.bat, then run "listfiles some\folder *.mp3".
|
---|
| 41 | :: I set up the file finding as a subroutine in the batch file so you can insert it into your own scripts."
|
---|
| 42 |
|
---|
| 43 | call :rsr-files %httpdfolder% *.mak
|
---|
| 44 |
|
---|
| 45 | popd
|
---|
| 46 | endlocal
|
---|
[31422] | 47 |
|
---|
[31421] | 48 | goto :eof
|
---|
| 49 |
|
---|
| 50 | :: ************************ SUBROUTINES **********************************************
|
---|
| 51 |
|
---|
[31425] | 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.
|
---|
[31421] | 61 | :: To check this script has worked, check httpd-2.2.11/modules/ssl/mod_ssl.mak to make sure
|
---|
| 62 | :: occurrences of "tempfile.bat" have a number suffix before the extension and that there's
|
---|
| 63 | :: no occurrence of /MD (or /MDd) only of /MT (and /MTd).
|
---|
| 64 | :: See https://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx for /MD, /MDd, /MT, /MTd
|
---|
| 65 |
|
---|
| 66 | :rsr-files
|
---|
| 67 | set PATHS=
|
---|
| 68 | set NAMES=
|
---|
| 69 | for /r "%~1" %%P in ("%~2") do (
|
---|
| 70 |
|
---|
| 71 | set filename=%%~fP
|
---|
[31428] | 72 | echo file: Modifying win32.mak file !filename! to refer to unique tempfile .bat files to avoid race conditions.
|
---|
[31421] | 73 |
|
---|
[31425] | 74 | rem http://stackoverflow.com/questions/4462954/sed-increment-number
|
---|
| 75 | rem https://www.gnu.org/software/gawk/manual/gawk.html see section An Example with Two Rules
|
---|
[31421] | 76 | copy "!filename!" "!filename!.tmp"
|
---|
[31425] | 77 | awk -f mod_winmak_file.awk "!filename!.tmp" > "!filename!"
|
---|
[31421] | 78 | del "!filename!.tmp"
|
---|
| 79 |
|
---|
| 80 | )
|
---|
| 81 | goto :eof
|
---|