summaryrefslogtreecommitdiffstats
path: root/Nightbuild2008.cmd
diff options
context:
space:
mode:
Diffstat (limited to 'Nightbuild2008.cmd')
-rw-r--r--Nightbuild2008.cmd315
1 files changed, 170 insertions, 145 deletions
diff --git a/Nightbuild2008.cmd b/Nightbuild2008.cmd
index 8d61ee598..fdd5d3de1 100644
--- a/Nightbuild2008.cmd
+++ b/Nightbuild2008.cmd
@@ -1,146 +1,171 @@
-@echo off
-:: Nightbbuild2008.cmd
-:: This script is run every night to produce a new version of MCServer, backup its PDB files and upload the packages to web.
-:: These sub-scripts are used:
-:: - WCRev.cmd together with subwcrev templating to obtain the version number as an environment var
-:: - UploadVersion.ftp FTP command template for uploading the version to the web (not included in the SVN, because it contains confidential passwords! Use your own :)
-:: When run without parameters, this script pauses at the end and waits for a keypress.
-:: To run in an automated scheduler, add any parameter to disable waiting for a keystroke
-::
-:: This script expects a few tools on specific paths, you can pass the correct paths for your system as env vars "zip", "vc" and "tsvn"
-
-
-:: 7-zip executable (by default it should be on PATH):
-if %zip%a == a set zip=7z
-
-:: Visual C++ compiler executable name:
-if %vc%a == a set vc="vcbuild.exe"
-
-:: TortoiseProc executable (for updating to the latest version):
-if %tsvn%a== a set tsvn="c:\program files\tortoisesvn\bin\tortoiseproc.exe"
-
-:: Subwcrev (from TortoiseSVN, for querying revision number; by default in PATH):
-if %subwcrev%a == a set subwcrev=subwcrev
-
-
-
-
-echo Performing nightbuild of MC-Server
-
-
-
-
-
-set DONOTPAUSE=y
-
-:: Update the sources to the latest revision:
-del source\Bindings.cpp
-del source\Bindings.h
-start "tsvn src" /b /min /wait %tsvn% /command:update /path:. /closeonend:1
-if errorlevel 1 goto haderror
-
-
-:: Copy all *.template files into their non-template versions, substituting SVN keywords:
-for /r %%X in (*.template) do (
- %subwcrev% . "%%X" "%%~dpX%%~nX"
- if errorlevel 1 goto haderror
-)
-
-
-:: Get the revision number into WCREV env var
-call Install\WCVersion.cmd
-echo WCREV = %WCREV%
-
-
-:: Test if the version is already present
-if exist Install\MCServer_Win_%WCREV%.7z (
- echo Latest version already present, bailing out
- goto end
-)
-
-
-
-:: Update Bindings.cpp
-del source\Bindings.cpp
-del source\Bindings.h
-echo Updating Lua bindings
-set ALLTOLUA_WAIT=N
-cd source
-call AllToLua.bat
-cd ..
-
-
-
-
-:: Compile using VC2008 Express. Do a full rebuild.
-echo Setting up VS environment...
-call "%VS90COMNTOOLS%\vsvars32.bat"
-echo Compiling MCServer...
-title MCS Nightbuild
-start "vc" /b /wait /low /min %vc% /r vc2008\MCServer.sln "Release|Win32"
-if errorlevel 1 goto haderror
-
-
-
-
-
-:: Use 7-zip to compress the resulting files into a single file:
-:: Note: the output filename here must be the same as in the upload_win.ftp.template script
-copy MCServer\MCServer.exe Install\MCServer.exe
-cd Install
-%zip% a -mx9 -y MCServer_Win_%WCREV%.7z -scsWIN @Zip2008.list
-if errorlevel 1 goto haderror
-cd ..
-
-:: Also pack PDBs into a separate archive:
-:: Note: the output filename here must be the same as in the upload_win.ftp.template script
-%zip% a -mx9 -y Install\MCServer_Win_%WCREV%_PDBs.7z -scsWIN @Install\Zip2008_PDBs.list
-if errorlevel 1 goto haderror
-
-
-
-
-
-:: upload to the FTP:
-:upload
-if "a%ftppass%" == "a" (
- echo You need to set FTP password in the ftppass environment variable to upload the files
- goto end
-)
-if "a%ftpuser%" == "a" (
- echo You need to set FTP username in the ftpuser environment variable to upload the files
- goto end
-)
-if "a%ftpsite%" == "a" (
- echo You need to set FTP server in the ftpsite environment variable to upload the files
- goto end
-)
-ncftpput -p %ftppass% -u %ftpuser% -T temp_ %ftpsite% / Install\MCServer_Win_%WCREV%.7z
-if errorlevel 1 goto haderror
-ncftpput -p %ftppass% -u %ftpuser% -T temp_ %ftpsite% /PDBs Install\MCServer_Win_%WCREV%_PDBs.7z
-if errorlevel 1 goto haderror
-echo Upload finished.
-
-
-
-
-goto end
-
-
-
-
-:haderror
-echo an error was encountered, check command output above
-pause
-goto finished
-
-
-
-
-
-:end
-if "a%1" == "a" pause
-
-
-
+@echo off
+:: Nightbbuild2008.cmd
+:: This script is run every night to produce a new version of MCServer, backup its PDB files and upload the packages to web.
+:: These sub-scripts are used:
+:: - UploadVersion.ftp FTP command template for uploading the version to the web
+:: When run without parameters, this script pauses at the end and waits for a keypress.
+:: To run in an automated scheduler, add any parameter to disable waiting for a keystroke
+::
+:: This script expects a few tools on specific paths, you can pass the correct paths for your system as env vars "zip" and "vc"
+:: This script assumes that "git", "symstore" and "touch" are available on PATH.
+:: git comes from msysgit
+:: symstore comes from Microsoft's Debugging Tools for Windows
+:: touch comes from unxtools
+:: This script is locale-dependent
+
+
+:: 7-zip executable (by default it should be on PATH):
+if %zip%a == a set zip=7z
+
+:: Visual C++ compiler executable name:
+if %vc%a == a set vc="vcbuild.exe"
+
+
+
+
+:: Get the date and time into vars:
+For /f "tokens=2-4 delims=/. " %%a in ('date /t') do (
+ set MYYEAR=%%c
+ set MYMONTH=%%b
+ set MYDAY=%%a
+)
+For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set MYTIME=%%a_%%b)
+
+echo MYYEAR = %MYYEAR%
+echo MYMONTH = %MYMONTH%
+echo MYDAY = %MYDAY%
+echo MYTIME = %MYTIME%
+
+echo Performing nightbuild of MC-Server
+
+
+
+
+
+set DONOTPAUSE=y
+
+:: Update the sources to the latest revision:
+del source\Bindings.cpp
+del source\Bindings.h
+git checkout -- source\Bindings.*
+git pull
+if errorlevel 1 goto haderror
+
+
+
+:: Get the Git commit ID into an environment var
+For /f "tokens=1 delims=/. " %%a in ('git log -1 --oneline --no-abbrev-commit') do (set COMMITID=%%a)
+if errorlevel 1 goto haderror
+
+
+
+:: Test if the version is already present, using a "tagfile" that we create upon successful build
+set TAGFILE=Install\built_%COMMITID%.tag
+if exist %TAGFILE% (
+ echo Latest version already present, bailing out
+ goto end
+)
+
+
+
+:: Update the Bindings:
+del source\Bindings.cpp
+del source\Bindings.h
+echo Updating Lua bindings
+set ALLTOLUA_WAIT=N
+cd source
+call AllToLua.bat
+cd ..
+
+
+
+
+:: Compile using VC2008 Express. Do a full rebuild.
+echo Setting up VS environment...
+call "%VS90COMNTOOLS%\vsvars32.bat"
+echo Compiling MCServer...
+title MCS Nightbuild
+start "vc" /b /wait /low /min %vc% /r vc2008\MCServer.sln "Release|Win32"
+if errorlevel 1 goto haderror
+
+
+
+
+
+:: Use 7-zip to compress the resulting files into a single file:
+set FILESUFFIX=%MYYEAR%_%MYMONTH%_%MYDAY%_%MYTIME%_%COMMITID%
+echo FILESUFFIX=%FILESUFFIX%
+copy MCServer\MCServer.exe Install\MCServer.exe
+cd Install
+%zip% a -mx9 -y MCServer_Win_%FILESUFFIX%.7z -scsWIN @Zip2008.list
+if errorlevel 1 goto haderror
+cd ..
+
+:: Also pack PDBs into a separate archive:
+%zip% a -mx9 -y Install\PDBs_%FILESUFFIX%.7z -scsWIN @Install\Zip2008_PDBs.list
+if errorlevel 1 goto haderror
+
+
+
+
+
+:: upload to the FTP:
+:upload
+if "a%ftppass%" == "a" (
+ echo You need to set FTP password in the ftppass environment variable to upload the files
+ goto end
+)
+if "a%ftpuser%" == "a" (
+ echo You need to set FTP username in the ftpuser environment variable to upload the files
+ goto end
+)
+if "a%ftpsite%" == "a" (
+ echo You need to set FTP server in the ftpsite environment variable to upload the files
+ goto end
+)
+ncftpput -p %ftppass% -u %ftpuser% -T temp_ %ftpsite% / Install\MCServer_Win_%FILESUFFIX%.7z
+if errorlevel 1 goto haderror
+ncftpput -p %ftppass% -u %ftpuser% -T temp_ %ftpsite% /PDBs Install\PDBs_%FILESUFFIX%.7z
+if errorlevel 1 goto haderror
+echo Upload finished.
+
+
+
+
+:: Create the tagfile so that we know that this CommitID has been built already
+touch %TAGFILE%
+
+
+
+
+
+:: Add the symbols to a global symbol cache
+:: We want per-month symbol caches, so that the old ones can be easily deleted
+set SYMBOLS=Symbols\%MYYEAR%_%MYMONTH%\
+echo Storing symbols in %SYMBOLS%
+
+symstore add /f MCServer\MCServer.* /s %SYMBOLS% /t MCServer
+if errorlevel 1 goto haderror
+
+
+
+goto end
+
+
+
+
+:haderror
+echo an error was encountered, check command output above
+pause
+goto finished
+
+
+
+
+
+:end
+if "a%1" == "a" pause
+
+
+
:finished \ No newline at end of file