214 lines
7.5 KiB
Perl
214 lines
7.5 KiB
Perl
|
##
|
||
|
## DIFF.PL
|
||
|
## Sub-routines used to windiff CD Trees
|
||
|
## Created by: Robert E. Blue (a-robebl) 09/08/99
|
||
|
##
|
||
|
|
||
|
sub tree_diff {
|
||
|
|
||
|
if ( $platform eq "x86" ) {
|
||
|
$platdir = "i386";
|
||
|
} else {
|
||
|
$platdir = $platform;
|
||
|
}
|
||
|
|
||
|
`ECHO \@ECHO OFF > $log_path\\wind.cmd`;
|
||
|
|
||
|
if ( $product =~ /CD2/i ) {
|
||
|
$local = "$drive\\$lang\\cd2" unless $local; ### For wind.bat
|
||
|
|
||
|
@cd2_plats = ( 'x86' );
|
||
|
push @cd2_plats, 'nec98' if $lang =~ /JPN/i;
|
||
|
|
||
|
foreach $cd2_plat ( @cd2_plats ) {
|
||
|
$bld_root{$cd2_plat} = find_bldsrv( $bld_plat{uc $cd2_plat} ) or die "ERROR: No release shares found for $cd2_plat!\n\n";
|
||
|
}
|
||
|
|
||
|
&wind_cmd( "dbg.htm", "\\\\nighthawk\\nec\\review\\scratch\\w2ktool\\dbg.htm", "dbg.htm-cd2" );
|
||
|
&wind_cmd( "autorun.inf", "$bld_root{'x86'}\\fre.wks\\symbolcd\\cd\\autorun.inf", "autorun.inf-cd2" );
|
||
|
&wind_cmd( "setup\\gifs", "$bld_root{'x86'}\\fre.wks\\symbolcd\\cd\\setup\\gifs", "gifs-setup-cd2" ) unless $cd2_plat =~ /nec98/i;
|
||
|
|
||
|
foreach $cd2_plat ( @cd2_plats ) {
|
||
|
if ( $cd2_plat =~ /x86/i ) { $plat_dir = 'i386'; } else { $plat_dir = $cd2_plat; }
|
||
|
|
||
|
&wind_cmd( "symbols\\$plat_dir\\retail", "$bld_root{$cd2_plat}\\fre.wks\\symbolcd\\cd\\symbols\\$plat_dir\\retail", "$cd2_plat\-fre-cd2" );
|
||
|
&wind_cmd( "symbols\\$plat_dir\\debug", "$bld_root{$cd2_plat}\\chk.wks\\symbolcd\\cd\\symbols\\$plat_dir\\debug", "$cd2_plat\-chk-cd2" );
|
||
|
&wind_cmd( "tools\\$plat_dir", "$bld_root{$cd2_plat}\\fre.wks\\symbolcd\\cd\\tools\\$plat_dir", "$cd2_plat\-tools-cd2" ) unless $cd2_plat =~ /nec98/i;
|
||
|
&wind_cmd( "setup\\$plat_dir", "$bld_root{$cd2_plat}\\fre.wks\\symbolcd\\cd\\setup\\$plat_dir", "$cd2_plat\-setup-cd2" ) unless $cd2_plat =~ /nec98/i;
|
||
|
}
|
||
|
|
||
|
`$log_path\\wind.cmd`;
|
||
|
`del $log_path\\wind.cmd`;
|
||
|
|
||
|
### Check windiff logs
|
||
|
print "\nChecking windiff logs...\n\n";
|
||
|
|
||
|
wdfcheck "dbg.htm-cd2";
|
||
|
wdfcheck "autorun.inf-cd2";
|
||
|
wdfcheck "gifs-setup-cd2";
|
||
|
|
||
|
foreach $cd2_plat ( @cd2_plats ) {
|
||
|
wdfcheck "$cd2_plat\-fre-cd2";
|
||
|
wdfcheck "$cd2_plat\-chk-cd2";
|
||
|
wdfcheck "$cd2_plat\-tools-cd2" unless $cd2_plat =~ /nec98/i;
|
||
|
wdfcheck "$cd2_plat\-setup-cd2" unless $cd2_plat =~ /nec98/i;
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
|
||
|
$bld_root{$platform} = find_bldsrv( $bld_plat{uc $platform} ) or die "ERROR: No release shares found for $platform!\n\n";
|
||
|
|
||
|
$ntbuilds = "$bld_root{$platform}\\$fre.$product";
|
||
|
|
||
|
$local = "$drive\\$lang\\$fre.$product\\$platform" unless $local;
|
||
|
|
||
|
### Platform Directory.
|
||
|
&wind_cmd( $platdir, $ntbuilds, $platdir );
|
||
|
|
||
|
### WINNTUPG
|
||
|
&wind_cmd( "$platdir\\winntupg", "$ntbuilds\\winnt32\\winntupg", "winntupg" );
|
||
|
|
||
|
### WIN9XUPG
|
||
|
&wind_cmd( "$platdir\\win9xupg", "$ntbuilds\\winnt32\\win9xupg", "win9xupg" ) if $platform =~ /x86/i;
|
||
|
|
||
|
### COMPDATA
|
||
|
&wind_cmd( "$platdir\\compdata", "$ntbuilds\\winnt32\\compdata", "compdata" );
|
||
|
|
||
|
if ( $lang =~ /USA/i ) {
|
||
|
### SUPPORT
|
||
|
&wind_cmd( "support", "$ntbuilds\\support", "support" );
|
||
|
|
||
|
### VALUEADD
|
||
|
&wind_cmd( "valueadd", "$bld_root{$platform}\\$fre.wks\\valueadd", "valueadd" );
|
||
|
|
||
|
### DISCOVER
|
||
|
&wind_cmd( "discover", "$bld_root{$platform}\\$fre.wks\\discover", "discover" ) if $product =~ /wks/i;
|
||
|
} else {
|
||
|
### SUPPORT
|
||
|
&wind_cmd( "support", "\\\\intlrel\\nt5media\\$lang\\$product\\x86\\support", "support" );
|
||
|
|
||
|
### VALUEADD
|
||
|
&wind_cmd( "valueadd", "\\\\intlrel\\nt5media\\$lang\\$product\\x86\\valueadd", "valueadd" );
|
||
|
|
||
|
### DISCOVER
|
||
|
&wind_cmd( "discover", "\\\\rastaman\\external\\src\\nt5\\discover\\$lang\\content", "discover" ) if $product =~ /wks/i;
|
||
|
}
|
||
|
|
||
|
### PRINTERS
|
||
|
if ( $product =~ /(SRV|ENT|DTC)/i ) {
|
||
|
&wind_cmd( "printers", "$ntbuilds\\printers", "printers" );
|
||
|
&wind_cmd( "clients", "$ntbuilds\\clients", "clients" );
|
||
|
}
|
||
|
|
||
|
`$log_path\\wind.cmd`;
|
||
|
`del $log_path\\wind.cmd`;
|
||
|
|
||
|
### Check windiff logs
|
||
|
print "\nChecking windiff logs...\n\n";
|
||
|
wdfcheck "$platdir";
|
||
|
wdfcheck "winntupg";
|
||
|
wdfcheck "support";
|
||
|
wdfcheck "msreport";
|
||
|
wdfcheck "win9xupg" if $platform =~ /x86/i;
|
||
|
wdfcheck "reskit";
|
||
|
wdfcheck "discover" if $product =~ /wks/i;
|
||
|
wdfcheck "valueadd";
|
||
|
wdfcheck "compdata";
|
||
|
|
||
|
if ( $product =~ /(SRV|ENT|DTC)/i ) {
|
||
|
wdfcheck "printers";
|
||
|
wdfcheck "clients";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
####################################################################
|
||
|
### Create the wind.cmd file to be executed by &runwindiff()
|
||
|
###
|
||
|
|
||
|
sub wind_cmd {
|
||
|
my $cmplcl = $_[0];
|
||
|
my $cmpsrc = $_[1];
|
||
|
my $cmpname = uc $_[2];
|
||
|
|
||
|
print "Windiffing $cmplcl...\n";
|
||
|
`echo start windiff $local\\$cmplcl $cmpsrc -T -Sdx $log_path\\$build-$platform-$fre-$product-$cmpname.wdf >> $log_path\\wind.cmd`;
|
||
|
`echo sleep 1 >> $log_path\\wind.cmd`;
|
||
|
}
|
||
|
|
||
|
|
||
|
#####################################################################
|
||
|
### Check the windiff logs to find if any files did not match and
|
||
|
### attempt to fix them if they do not.
|
||
|
###
|
||
|
|
||
|
sub wdfcheck {
|
||
|
$wdf_log = "$log_path\\$build-$platform-$fre-$product-$_[0].wdf";
|
||
|
|
||
|
$fix_files = 1 if $_[0] =~ /fix/i;
|
||
|
|
||
|
print "Checking $wdf_log for errors\n";
|
||
|
if ( -e $wdf_log ) {
|
||
|
$wdf_list = `type $wdf_log`;
|
||
|
|
||
|
unless ( $wdf_list =~ /-- 0 files listed/g ) {
|
||
|
while ( $wdf_list =~ /\.\\(\S+)/g ) {
|
||
|
$problem_files++ unless $1 =~ /(setupp.ini|2000rkst.msi|different in blanks)/i;
|
||
|
push @bad_files, $1;
|
||
|
$wdf_count++
|
||
|
}
|
||
|
|
||
|
if ( $problem_files ) {
|
||
|
$wdf_brk++;
|
||
|
|
||
|
print "Found problem files in $build $platform $fre.$product \\$_[0]\n";
|
||
|
|
||
|
system "start notepad $wdf_log";
|
||
|
|
||
|
### Let's make it easier to check for different in blanks only (CD media only).
|
||
|
if ( $problem_files <= 25 && $goldcheck_ver ) {
|
||
|
$wdf_list =~ /-- (.*) : (.*) --/;
|
||
|
$wdf_local = $1;
|
||
|
$wdf_remote = $2;
|
||
|
|
||
|
foreach $pf ( @bad_files ) {
|
||
|
next if $pf =~ /(setupp.ini|2000rkst.msi)/i;
|
||
|
$counter++;
|
||
|
|
||
|
print " `--> Checking if $pf is different in blanks only.\n";
|
||
|
|
||
|
### We only want to start 5 at a time.
|
||
|
$dibo[$dibo_counter] .= "start windiff $wdf_local\\$pf $wdf_remote\\$pf && ";
|
||
|
|
||
|
if ( $counter == 5 ) {
|
||
|
$dibo_counter++;
|
||
|
$counter = 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
### Execute the windiff.
|
||
|
foreach $dibo_wdf ( @dibo ) {
|
||
|
`$dibo_wdf ECHO.`;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
if ( $fix_files ) {
|
||
|
print " `-- Would you like to start Share Fixer now? [Y/N] ";
|
||
|
$verify = <STDIN> ;
|
||
|
|
||
|
if ( $verify =~ ( /^Y/i ) ) {
|
||
|
print " `-- Fixing problem files found in \\$_[0]...\n";
|
||
|
`start sharefix $wdf_log`;
|
||
|
} else {
|
||
|
print " `-- Ok, not fixing problem files found in \\$_[0]...\n";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return 1;
|