113 lines
3.7 KiB
Batchfile
113 lines
3.7 KiB
Batchfile
|
@echo off
|
||
|
setlocal ENABLEDELAYEDEXPANSION
|
||
|
if DEFINED _echo echo on
|
||
|
if DEFINED verbose echo on
|
||
|
|
||
|
REM ********************************************************************
|
||
|
REM
|
||
|
REM This script finds out which files in symbad.txt are either not found
|
||
|
REM or pass symbol checking on all four build machines.
|
||
|
REM
|
||
|
REM It creates a new symbad.txt based on this build machine. Before
|
||
|
REM checking in a new symbad.txt, you need to take the union of symbad.txt.new
|
||
|
REM from all of the platforms.
|
||
|
REM
|
||
|
REM ********************************************************************
|
||
|
|
||
|
set Symbad=%RazzleToolPath%\symbad.txt
|
||
|
set SymDir=%_NTTREE%\symbad
|
||
|
set ml=perl %RazzleToolPath%\makelist.pl
|
||
|
|
||
|
if EXIST %SymDir% rd /s /q %SymDir%
|
||
|
md %SymDir%
|
||
|
|
||
|
REM Create a Symbad.txt that doesn't have any comments in it
|
||
|
for /f "eol=; tokens=1" %%a in (%Symbad%) do (
|
||
|
echo %%a>> %SymDir%\symbad.txt.old2
|
||
|
)
|
||
|
sort %SymDir%\symbad.txt.old2 >%SymDir%\symbad.txt.old
|
||
|
|
||
|
REM Create a list for each of the ones that pass symbol checking
|
||
|
|
||
|
echo Examining files on %_NTTREE%
|
||
|
for /f %%b in (%SymDir%\symbad.txt.old) do (
|
||
|
if /i EXIST %_NTTREE%\%%b (
|
||
|
symchk.exe %_NTTREE%\%%b /s %_NTTREE%\symbols\retail /v | findstr PASSED | findstr -v IGNORED >> %SymDir%\symchk.tmp
|
||
|
) else (
|
||
|
REM if
|
||
|
echo SYMCHK: %%b PASSED NOT FOUND >> %SymDir%\symchk.tmp
|
||
|
)
|
||
|
)
|
||
|
|
||
|
REM Strip everything out except for the file name
|
||
|
for /f "tokens=2 delims= " %%c in (%SymDir%\symchk.tmp) do (
|
||
|
echo %%c>> %SymDir%\all.pass
|
||
|
)
|
||
|
REM Special case for zero-length file, make sure that a zero length
|
||
|
REM file is at least there for later code
|
||
|
if NOT EXIST %SymDir%\all.pass copy %SymDir%\symchk.tmp %SymDir%\all.pass
|
||
|
|
||
|
echo All files that passed or were not found are in %SymDir%\all.pass
|
||
|
sort %SymDir%\all.pass > %SymDir%\all.passed
|
||
|
|
||
|
REM
|
||
|
REM Find the difference between the original symbad.txt and the files
|
||
|
REM that just passed symbol checking on all platforms. Note: symbad.txt.old
|
||
|
REM is symbad.txt without the comments.
|
||
|
REM
|
||
|
REM Save the list in %SymDir%\symbad.txt.tmp
|
||
|
REM
|
||
|
|
||
|
echo Calculating the new symbad.txt
|
||
|
%ml% -d %SymDir%\symbad.txt.old %SymDir%\all.passed -o %SymDir%\symbad.txt.tmp2
|
||
|
sort %SymDir%\symbad.txt.tmp2 > %SymDir%\symbad.txt.tmp
|
||
|
del %SymDir%\symbad.txt.tmp2
|
||
|
|
||
|
REM
|
||
|
REM Now, save all the comments that were in the original symbad.txt
|
||
|
REM Copy the new symbad.txt that can be checked in to
|
||
|
REM RazzleToolPath\symbad.txt
|
||
|
REM
|
||
|
|
||
|
REM BUGBUG!! Wx86 can be taken out after all of the wx86 files are cleaned
|
||
|
REM out of symbad.txt
|
||
|
|
||
|
echo Restoring the comments from original symbad.txt
|
||
|
for /f %%a in (%SymDir%\symbad.txt.tmp) do (
|
||
|
findstr /i %%a %Symbad% | findstr /v "Wx86" >> %SymDir%\symbad.txt.new2
|
||
|
)
|
||
|
|
||
|
|
||
|
REM Everything is great except that there could be duplicate lines in the file
|
||
|
sort %SymDir%\symbad.txt.new2 > %SymDir%\symbad.txt.new3
|
||
|
|
||
|
set prev=
|
||
|
for /f "tokens=1 delims=" %%a in (%SymDir%\symbad.txt.new3) do (
|
||
|
if /i NOT "%%a" == "!prev!" echo %%a>> %SymDir%\symbad.txt.new
|
||
|
set prev=%%a
|
||
|
)
|
||
|
|
||
|
REM BUGBUG!! Add acmsetup.exe and mssetup.dll back
|
||
|
REM This is a bug that the TS group needs to fix. This can be
|
||
|
REM removed when they get their bug fixed. They rename retail
|
||
|
REM in their placefil.txt. Thus, even though these don't get
|
||
|
REM binplaced to binaries, build.exe thinks they do and says they
|
||
|
REM have symbol errors
|
||
|
|
||
|
echo acmsetup.exe ; tsext\client\setup>> %SymDir%\symbad.txt.new
|
||
|
echo mssetup.dll ; tsext\client\setup>> %SymDir%\symbad.txt.new
|
||
|
|
||
|
REM Add the 64-bit files back in
|
||
|
REM findstr "64-bit" %Symbad% >> %SymDir%\symbad.txt.new
|
||
|
|
||
|
REM Add the international files back in
|
||
|
findstr /i "INTL" %Symbad% >> %SymDir%\symbad.txt.new
|
||
|
|
||
|
REM Sort the final list
|
||
|
sort %SymDir%\symbad.txt.new > %SymDir%\symbad.txt.sorted
|
||
|
copy %SymDir%\symbad.txt.sorted %SymDir%\symbad.txt.new
|
||
|
|
||
|
echo New symbad.txt = %SymDir%\symbad.txt.new
|
||
|
|
||
|
endlocal
|