Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

226 lines
6.7 KiB

@REM -----------------------------------------------------------------
@REM
@REM createtokens.cmd - aesquiv
@REM a batch files that performs tokenization
@REM
@REM Copyright (c) Microsoft Corporation. All rights reserved.
@REM
@REM -----------------------------------------------------------------
@if defined _CPCMAGIC goto CPCBegin
@perl -x "%~f0" %*
@goto :EOF
#!perl
use strict;
use lib $ENV{RAZZLETOOLPATH} . "\\PostBuildScripts";
use lib $ENV{RAZZLETOOLPATH};
use PbuildEnv;
use ParseArgs;
sub Usage { print<<USAGE; exit(1) }
createtokens.cmd -b:buildname -f:filelist -l:lang
-b: BuildName
build name of build to tokenized
-f: Filelist
list of binaries to tokenize
-l: Lang
lang of build
Example:
createtokens.cmd -b:3663.main.x86fre.020805-1420 -f:\\nt\\tools\\ploc\\whistler.bat -l:psu
USAGE
parseargs('?' => \&Usage,
'-b:' => \$ENV{BLDNAME},
'-f:' => \$ENV{FLIST});
# *** TEMPLATE CODE ***
$ENV{"_CPCMAGIC"}++;exit(system($0)>>8);
__END__
@:CPCBegin
@set _CPCMAGIC=
@setlocal ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS
@if not defined DEBUG echo off
@REM *** CMD SCRIPT BELOW ***
IF NOT DEFINED LANG goto Use
if /i "%LANG%" == "usa" goto Done
if defined BLDName (
set BuildName=%BLDNAME%
) else (
call logmsg "-b flag must be define in order to perform tokenization on a build."
goto Use
)
if defined FLIST (
set FileList=%FLIST%
) else (
call logmsg "-f flag must be define in order to perform tokenization on a binaries."
goto Use
)
REM ********************************************************************************
REM Get and set parameters from %_BuildBranch%.%LANG%.ini file
REM ********************************************************************************
set PlocPath=%SDXROOT%\tools\ploc
set CmdIni=perl %RazzleToolPath%\PostBuildScripts\CmdIniSetting.pl
set ThisCommandLine=%CmdIni% -l:%LANG% -f:ReleaseDir
%ThisCommandLine% >nul 2>nul
if %ERRORLEVEL% NEQ 0 (
call errmsg.cmd "ReleaseDir is not defined in the %_BuildBranch%.%LANG%.ini file, exiting"
set ReleaseDir=release
goto :Done
) else (
for /f %%a in ('%ThisCommandLine%') do (
set ReleaseDir=%%a
set ReleasePath=%_NTDRIVE%\!ReleaseDir!
)
)
set ThisCommandLine=%CmdIni% -l:%LANG% -f:TokenShare
%ThisCommandLine% >nul 2>nul
if %ERRORLEVEL% NEQ 0 (
call errmsg.cmd "TokenShare is not defined in the %_BuildBranch%.%LANG%.ini file, exciting"
goto :Done
) else (
for /f %%a in ('%ThisCommandLine%') do (
set TokenShare=%%a
)
net share !TokenShare! >nul 2>nul
if %ERRORLEVEL% NEQ 0 (
call errmsg.cmd "No token share found on release server, exciting"
goto :Done
)
set TokenPath=
for /f "tokens=1,2" %%a in ('net share !TokenShare!') do (
if /i "%%a" == "Path" (
REM at this point, %%b is the local path to the default release directory
set TokenPath=%%b
)
)
)
set ThisCommandLine=%CmdIni% -l:%LANG% -f:CodePage
%ThisCommandLine% >nul 2>nul
if %ERRORLEVEL% NEQ 0 (
call errmsg.cmd "CodePage is not defined in the %_BuildBranch%.%LANG%.ini file, exiting"
goto :Done
) else (
for /f %%a in ('%ThisCommandLine%') do (
set CodePage=%%a
)
)
set ThisCommandLine=%CmdIni% -l:%LANG% -f:AlternateReleaseRemote
%ThisCommandLine% >nul 2>nul
if %ERRORLEVEL% NEQ 0 (
call errmsg.cmd "AlternateReleaseRemote is not defined in the %_BuildBranch%.%LANG%.ini file, exiting"
goto :Done
) else (
for /f %%a in ('%ThisCommandLine%') do (
set ReleaseRemote=%%a
)
)
REM +-------------------------------------------------------------------------------------------------+
REM Find the build at the release share
set ReleaseShare=!ReleasePath!\!LANG!
if not exist !ReleaseShare! (
call errmsg.cmd "No !ReleaseShare! dir on !COMPUTERNAME!, exiting ..."
goto :DONE
)
set BuildShare=!ReleaseShare!\!BuildName!
if not exist !BuildShare! (
call errmsg.cmd "No !BuildShare! found on !COMPUTERNAME!, exiting tokenization..."
goto :DONE
)
set path=%PlocPath%;%path%
REM Do Tokenization
set TmpBinPath=%TokenPath%\%LANG%\%BuildName%
set TmpResPath=%TokenPath%\%LANG%\%BuildName%\resources
set TokLogFile=%TokenPath%\%LANG%\%BuildName%\resources\TokLogFile.log
set LocMapPath=\\sysloc\sourcedepot\winloc\loc\res\%LANG%\windows\misc\dump
if NOT EXIST !TmpBinPath! md !TmpBinPath!
if NOT EXIST !TmpResPath! md !TmpResPath!
REM create semaphores
set sem1=%PlocPath%\run\sem1
set sem2=%PlocPath%\run\sem2
REM create the poor man's semaphore
echo running > %sem1%
echo running > %sem2%
REM call tokenization scripts, wait for both to complete
Start "Whistler1 tokenization" cmd /c !PlocPath!\run\scriptwrap1.bat %sem1% !PlocPath!\tokwrap.bat !TokLogFile! !_NTTREE! !PlocPath! !SDXROOT!\tools\ploc\whistler1.bat !LANG! !TmpBinPath! !BuildShare!
Start "Whistler1 tokenization" cmd /c !PlocPath!\run\scriptwrap1.bat %sem2% !PlocPath!\tokwrap.bat !TokLogFile! !_NTTREE! !PlocPath! !SDXROOT!\tools\ploc\whistler2.bat !LANG! !TmpBinPath! !BuildShare!
popd
REM wait for first pseudoloc process to complete
call logmsg /t "PSEUDOLOC SEM 1................[Running]"
REM wait for first pseudoloc process to complete
call logmsg /t "PSEUDOLOC SEM 2................[Running]"
:psuloop1
if exist %sem1% goto psuloop1
call logmsg /t "PSEUDOLOC SEM 1................[Finished]"
:psuloop2
if exist %sem1% goto psuloop2
call logmsg /t "PSEUDOLOC SEM 2................[Finished]"
if /I "!LANG!" == "psu" (
copy /y /v !PlocPath!\!CodePage!map.inf !TmpResPath!\map.inf
) else if /I "!LANG!" == "fe" (
copy /y /v !PlocPath!\!CodePage!map.inf !TmpResPath!\map.inf
) else (
copy /y /v !LocMapPath!\map.inf !TmpResPath!\map.inf
)
REM copy Tokens on token share to release server
REM First, we need to find the release servers and then send the copy command to the remotes
set ThisCommandLine=%CmdIni% -l:%LANG% -f:ReleaseServers::%_BuildArch%%_BuildType%
%ThisCommandLine% >nul 2>nul
if !ERRORLEVEL! NEQ 0 (
call errmsg.cmd "ReleaseServers is not defined in the %_BuildBranch%.%LANG%.ini file, exiting"
goto :Done
) else (
for /f %%a in ('!ThisCommandLine!') do (
echo pushd ^^%%RazzleToolPath^^%%\ploc\run ^& echo start /min cmd /c copytokens.cmd -b:%BuildName% -l:%LANG% -m:%ComputerName% ^& echo popd | %RazzleToolPath%\x86\remote.exe /c %%a %ReleaseRemote% /L 1>nul
)
)
goto :Done
:USE
call logmsg "createtokens.cmd -b:buildname -f:filelist -l:lang"
:Done