154 lines
4.6 KiB
Batchfile
154 lines
4.6 KiB
Batchfile
|
@REM standard cmd script intro lines ...
|
||
|
@echo off
|
||
|
setlocal EnableDelayedExpansion
|
||
|
|
||
|
REM octopus.cmd
|
||
|
REM
|
||
|
REM intended to run on the machine which is
|
||
|
REM creating the build.inc file. this script
|
||
|
REM is called via remote when the x86fre build
|
||
|
REM finished postbuild.cmd
|
||
|
|
||
|
|
||
|
REM set up env vars needed
|
||
|
for %%a in (%0) do set SCRIPT_NAME=%%~na
|
||
|
set LOGFILE=%SDXROOT%\!SCRIPT_NAME!.log
|
||
|
set /a ExitCode=0
|
||
|
set SemaphoreName=octopus
|
||
|
set SemaphoreRaised=
|
||
|
|
||
|
REM startup
|
||
|
call logmsg.cmd /t "Beginning ..."
|
||
|
|
||
|
REM validate we're on an enlisted machine
|
||
|
if not defined SDXROOT (
|
||
|
call errmsg.cmd "SDXROOT is not defined! Exiting ..."
|
||
|
set /a ExitCode=!ExitCode! + 1
|
||
|
goto :ErrEnd
|
||
|
)
|
||
|
|
||
|
REM check the semaphore
|
||
|
pushd %RazzleToolPath%\PostBuildScripts
|
||
|
if "!ErrorLevel!" NEQ "0" (
|
||
|
call errmsg.cmd "Can't find %%RazzleToolPath%%\PostBuildScripts!"
|
||
|
set /a ExitCode=!ExitCode! + 1
|
||
|
goto :ErrEnd
|
||
|
)
|
||
|
perl cmdevt.pl -q %SemaphoreName% >nul 2>nul
|
||
|
if "!ErrorLevel!" == "0" (
|
||
|
REM there is already an octopus event, so octopus is running.
|
||
|
call errmsg.cmd "Octopus already running, won't start new process"
|
||
|
set /a ExitCode=!ExitCode! + 1
|
||
|
goto :ErrEnd
|
||
|
)
|
||
|
REM otherwise, start up octopus
|
||
|
REM first, raise the semaphore
|
||
|
start "Octopus running ..." /min perl cmdevt.pl -w %SemaphoreName%
|
||
|
set SemaphoreRaised=TRUE
|
||
|
popd &REM matches pushd %RazzleToolPath%\PostBuildScripts
|
||
|
|
||
|
set MailFileName=%TMP%\octomail.txt
|
||
|
if exist !MailFileName! del !MailFileName!
|
||
|
if exist !MailFileName! call logmsg.cmd "Mail not deleted, will append ..."
|
||
|
|
||
|
echo This is an automated message from octopus. >> !MailFileName!
|
||
|
echo. >> !MailFileName!
|
||
|
echo For build: >> !MailFileName!
|
||
|
|
||
|
REM all we need to do is build a build.inc file,
|
||
|
REM so no need to use timebuild, just build.exe
|
||
|
|
||
|
pushd %SDXROOT%
|
||
|
|
||
|
REM run scorch just so we don't get certain clobber errors
|
||
|
REM hide our log file from this temporarily
|
||
|
if exist %TMP%\templog.tmp del /f /q %TMP%\templog.tmp >nul 2>nul
|
||
|
copy %LOGFILE% %TMP%\templog.tmp >nul 2>nul
|
||
|
nmake -f makefil0 scorch_source
|
||
|
if not exist %LOGFILE% copy %TMP%\templog.tmp %LOGFILE% >nul 2>nul
|
||
|
|
||
|
call %RazzleToolPath%\PostBuildScripts\fullsync.cmd
|
||
|
if "!ErrorLevel!" NEQ "0" (
|
||
|
call errmsg.cmd "Failed to sync tree, exiting."
|
||
|
set /a ExitCode=!ExitCode! + 1
|
||
|
REM for now, just keep going like nothing happened.
|
||
|
REM goto :ErrEnd
|
||
|
REM instead of exiting, let's log the files that weren't syncable
|
||
|
echo Sync errors occured, here's the output of sdx sync: >> %LOGFILE%
|
||
|
sdx sync -n >>%LOGFILE% 2>>%LOGFILE%
|
||
|
)
|
||
|
REM now move old build.inc file in case we're overwritting something
|
||
|
if exist build.inc (
|
||
|
call logmsg.cmd "Moving build.inc to build.inc.old ..."
|
||
|
if exist build.inc.old del build.inc.old
|
||
|
ren build.inc build.inc.old
|
||
|
if "!ErrorLevel!" NEQ "0" (
|
||
|
call errmsg.cmd "Failed to rename build.inc to build.inc.old"
|
||
|
call errmsg.cmd "Will continue ..."
|
||
|
set /a ExitCode=!ExitCode! + 1
|
||
|
)
|
||
|
)
|
||
|
set BuildErrors=
|
||
|
build.exe -cDP#
|
||
|
if "!ErrorLevel!" NEQ "0" (
|
||
|
call errmsg.cmd "build finished with errors!"
|
||
|
set BuildErrors=TRUE
|
||
|
set /a ExitCode=!ExitCode! + 1
|
||
|
REM comment out the next line as we want to go on with postbuild
|
||
|
REM regardless of the outcome of the build
|
||
|
REM goto :ErrEnd
|
||
|
) else (
|
||
|
call logmsg.cmd "Build finished with no errors."
|
||
|
)
|
||
|
type %SDXROOT%\__blddate__ >> !MailFileName!
|
||
|
echo. >> !MailFileName!
|
||
|
if defined BuildErrors (
|
||
|
echo There were build errors: >> !MailFileName!
|
||
|
type %SDXROOT%\build.err >> !MailFileName!
|
||
|
echo. >> !MailFileName!
|
||
|
)
|
||
|
|
||
|
REM uniqify the build.inc file
|
||
|
perl %RazzleToolPath%\PostBuildScripts\unique.pl -i:%SDXROOT%\build.inc -o:%SDXROOT%\unique.inc
|
||
|
|
||
|
REM now postbuild
|
||
|
postbuild.cmd
|
||
|
|
||
|
REM let's just run release.pl for run since primecdixf will never
|
||
|
REM be an official_build_machine. use -nd so we don't propagate builds
|
||
|
perl %RazzleToolPath%\PostBuildScripts\release.pl -nd
|
||
|
|
||
|
if exist \\%COMPUTERNAME%\latest\build_logs\postbuild.err (
|
||
|
echo There were postbuild errors: >> !MailFileName!
|
||
|
type \\%COMPUTERNAME%\latest\build_logs\postbuild.err >> !MailFileName!
|
||
|
echo. >> !MailFileName!
|
||
|
)
|
||
|
|
||
|
echo Have a nice day! >> !MailFileName!
|
||
|
|
||
|
REM now send the mail
|
||
|
perl %RazzleToolPath%\PostBuildScripts\octomail.pl
|
||
|
|
||
|
popd &REM matches pushd %SDXROOT%
|
||
|
|
||
|
goto :End
|
||
|
|
||
|
|
||
|
:End
|
||
|
call logmsg.cmd /t "Finished."
|
||
|
REM drop the semaphore if we raised it
|
||
|
if defined SemaphoreRaised (
|
||
|
pushd %RazzleToolPath%\PostBuildScripts
|
||
|
perl cmdevt.pl -s %SemaphoreName%
|
||
|
popd &REM matches %RazzleToolPath%\PostBuildScripts
|
||
|
)
|
||
|
endlocal & seterror.exe "!ExitCode!"
|
||
|
goto :EOF
|
||
|
|
||
|
:ErrEnd
|
||
|
call logmsg.cmd /t "Encountered !ExitCode! logged error(s)."
|
||
|
call errmsg.cmd "See %LOGFILE% for errors."
|
||
|
call :End
|
||
|
if "!ExitCode!" == "0" set /a ExitCode=1
|
||
|
endlocal & seterror.exe "!ExitCode!"
|