in build/scripts/automation/winbldroutines.pm [866:1035]
sub DoProductBuilds
{
print "DEBUG: in DoProductBuilds()\n";
my $this = shift;
my $srcpath = $this->SrcPath();
my $partner = $this->Partner();
my $configlist = $this->ConfigList();
my $productlist = $this->ProductList();
my $datewisedir = $this->DatewiseDir();
my $branchname = $this->Branch();
my $MajorVersion = $this->GetMajorVersion();
my $MinorVersion = $this->GetMinorVersion();
my $buildversion = "${MajorVersion}.${MinorVersion}";
my $pwd = $this->GetThisScriptDir();
my ($solnfile,$project,$buildoutputdir,$logfile,$host_solnfile,$vacp_bldlogfile,$Log_bldlogfile,$hostagenthelpers_bldlogfile);
foreach my $config (reverse sort @{$configlist})
{
my $draReturnCode = system($PowerShellPath ' -File "Copy_DRA_Binaries.ps1"', $branchname, $config );
$draReturnCode = $draReturnCode >> 8;
if ( $draReturnCode == 1 )
{
die "Failed executing Copy_DRA_Binaries.ps1.\n";
}
system($PowerShellPath ' -File "Copy_Vista_Drivers.ps1"', $branchname, $buildversion, $config );
chdir "${srcpath}\\host";
if (Log_Do("\"$msbuild_exe\" /t:restore /p:RestorePackagesConfig=true /p:Configuration=Release /p:Platform=Win32") != 0) {
die "Failed to restore nuget pacakges for host.\n";
}
chdir "${srcpath}\\server";
if (Log_Do("\"$msbuild_exe\" /t:restore /p:RestorePackagesConfig=true /p:Configuration=Release /p:Platform=x64") != 0) {
die "Failed to restore nuget pacakges for server.\n";
}
chdir "$pwd";
if (Log_Do("\"$mvss_exe\" ${srcpath}\\thirdparty\\sqlite3x\\sqlite3x.sln /project sqlite3x /build \"Release|Win32\" /out $logfile") != 0) {
die "Failed to build Win32 sqlite3x.\n";
}
if (Log_Do("\"$mvss_exe\" ${srcpath}\\thirdparty\\sqlite3x\\sqlite3x.sln /project sqlite3x /build \"Release|X64\" /out $logfile") != 0) {
die "Failed to build X64 sqlite3x.\n";
}
# workaround to generate the sqlite3x builds and copy to packages. this should be avoided by referring the libs from build path
Log_Do("copy /Y ${srcpath}\\thirdparty\\sqlite3x\\sqlite3x\\lib\\win32\\Release\\sqlite3x.lib ${srcpath}\\host\\packages\\sqlite3x.0.0.6\\lib\\win32\\release\\");
Log_Do("copy /Y ${srcpath}\\thirdparty\\sqlite3x\\sqlite3x\\lib\\win32\\Release\\sqlite3x.pdb ${srcpath}\\host\\packages\\sqlite3x.0.0.6\\lib\\win32\\release\\");
Log_Do("copy /Y ${srcpath}\\thirdparty\\sqlite3x\\sqlite3x\\lib\\x64\\Release\\sqlite3x.lib ${srcpath}\\host\\packages\\sqlite3x.0.0.6\\lib\\x64\\release\\");
Log_Do("copy /Y ${srcpath}\\thirdparty\\sqlite3x\\sqlite3x\\lib\\x64\\Release\\sqlite3x.pdb ${srcpath}\\host\\packages\\sqlite3x.0.0.6\\lib\\x64\\release\\");
foreach my $product (@{$productlist})
{
$project = $this->GetBuildProjectName($product);
$buildoutputdir = $this->GetBuildIssDir($product);
$logfile = "${srcpath}\\${buildoutputdir}\\BuildLog_${product}_${config}_${partner}.txt";
$solnfile = $this->GetSolnFileName($product);
unlink "$logfile" if -e "$logfile";
if (uc($product) eq "CX")
{
foreach my $projectname ("CSAuthModule")
{
if (Log_Do("\"$mvss_exe\" ${srcpath}\\$solnfile /project $projectname /clean \"$config|x64\" /out $logfile") == 0) {
print "\n\n $projectname project clean successful for configuration $config for $product in $addr\n\n";
} else {
send_mail($failure_alert_ids,'Windows build failure',"$projectname project clean failed for configuration $config for $product in $addr",1);
die "\n\n $projectname project clean failed for configuration $config for $product in $addr";
}
if (Log_Do("\"$mvss_exe\" ${srcpath}\\$solnfile /project $projectname /build \"$config|x64\" /out $logfile") == 0 ) {
Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
print "\n\n$config build from $branchname is successful for $product for $projectname in $addr\n\n";
} else {
Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
send_mail($failure_alert_ids,'Windows build failure',"$config build from $branchname is failed for $product for $projectname in $addr",1);
die "\n\n$config build from $branchname is failed for $product for $projectname in $addr";
}
}
}
if (uc($product) ne "PSMSI")
{
# Main product build
if (Log_Do("\"$mvss_exe\" ${srcpath}\\$solnfile /project $project /build \"$config|Win32\" /out $logfile") == 0 ) {
Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
Log_Do("if exist $vacp_bldlogfile copy /Y $vacp_bldlogfile ${datewisedir}\\${config}\\logs");
Log_Do("if exist $Log_bldlogfile copy /Y $Log_bldlogfile ${datewisedir}\\${config}\\logs");
Log_Do("if exist $hostagenthelpers_bldlogfile copy /Y $hostagenthelpers_bldlogfile ${datewisedir}\\${config}\\logs");
print "\n\n$config build from $branchname is successful for $product in $addr\n\n";
} else {
Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
Log_Do("if exist $vacp_bldlogfile copy /Y $vacp_bldlogfile ${datewisedir}\\${config}\\logs");
Log_Do("if exist $Log_bldlogfile copy /Y $Log_bldlogfile ${datewisedir}\\${config}\\logs");
Log_Do("if exist $hostagenthelpers_bldlogfile copy /Y $hostagenthelpers_bldlogfile ${datewisedir}\\${config}\\logs");
send_mail($failure_alert_ids,'Windows build failure',"$config build from $branchname is failed for $product in $addr",1);
die "\n\n$config build from $branchname is failed for $product in $addr";
}
}
if (uc($product) eq "UA") {
foreach my $projectname ("DiskFlt")
{
foreach my $configuration ("Win7", "Win8", "Win8.1")
{
Log_Do("\"$mvss_exe\" ${srcpath}\\$solnfile /project $projectname /clean \"$configuration $config|Win32\" /out $logfile");
if (Log_Do("\"$mvss_exe\" ${srcpath}\\$solnfile /project $projectname /build \"$configuration $config|Win32\" /out $logfile") == 0 ) {
Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
print "\n\n$config build from $branchname is successful for $product for $projectname in $addr\n\n";
} else {
Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
send_mail($failure_alert_ids,'Windows build failure',"$config build from $branchname is failed for $product for $projectname in $addr",1);
}
Log_Do("\"$mvss_exe\" ${srcpath}\\$solnfile /project $projectname /clean \"$configuration $config|x64\" /out $logfile");
if (Log_Do("\"$mvss_exe\" ${srcpath}\\$solnfile /project $projectname /build \"$configuration $config|x64\" /out $logfile") == 0 ) {
Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
print "\n\n$config build from $branchname is successful for $product for $projectname in $addr\n\n";
} else {
Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
send_mail($failure_alert_ids,'Windows build failure',"$config build from $branchname is failed for $product for $projectname in $addr",1);
}
}
}
foreach my $projectname ("cxps", "vacp", "InMageVssProvider")
{
if (Log_Do("\"$mvss_exe\" ${srcpath}\\$solnfile /project $projectname /clean \"$config|x64\" /out $logfile") == 0) {
print "\n\n $projectname project clean successful for configuration $config for $product in $addr\n\n";
} else {
send_mail($failure_alert_ids,'Windows build failure',"$projectname project clean failed for configuration $config for $product in $addr",1);
die "\n\n $projectname project clean failed for configuration $config for $product in $addr";
}
if (Log_Do("\"$mvss_exe\" ${srcpath}\\$solnfile /project $projectname /build \"$config|x64\" /out $logfile") == 0 ) {
Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
print "\n\n$config build from $branchname is successful for $product for $projectname in $addr\n\n";
} else {
Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
send_mail($failure_alert_ids,'Windows build failure',"$config build from $branchname is failed for $product for $projectname in $addr",1);
die "\n\n$config build from $branchname is failed for $product for $projectname in $addr";
}
}
my $ComponentDriverDITestsolnfile = 'ComponentDriverDITest.sln';
Log_Do("\"$mvss_exe\" ${srcpath}\\host\\tests\\$ComponentDriverDITestsolnfile /clean \"$config|Win32\" /out $logfile");
if (Log_Do("\"$mvss_exe\" ${srcpath}\\host\\tests\\$ComponentDriverDITestsolnfile /build \"$config|Win32\" /out $logfile") == 0 ) {
Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
print "\n\n$config build from $branchname is successful for $product for $ComponentDriverDITestsolnfile in $addr\n\n";
} else {
Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
send_mail($failure_alert_ids,'Windows build failure',"$config build from $branchname is failed for $product for $ComponentDriverDITestsolnfile in $addr",1);
die "\n\n$config build from $branchname is failed for $product for $ComponentDriverDITestsolnfile in $addr";
}
my $DITestsolnfile = 'DITests.sln';
Log_Do("\"$mvss_exe\" ${srcpath}\\host\\tests\\DITests\\$DITestsolnfile /clean \"$config|Win32\" /out $logfile");
if (Log_Do("\"$mvss_exe\" ${srcpath}\\host\\tests\\DITests\\$DITestsolnfile /build \"$config|Win32\" /out $logfile") == 0 ) {
Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
print "\n\n$config build from $branchname is successful for $product for $DITestsolnfile in $addr\n\n";
} else {
Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
send_mail($failure_alert_ids,'Windows build failure',"$config build from $branchname is failed for $product for $DITestsolnfile in $addr",1);
die "\n\n$config build from $branchname is failed for $product for $DITestsolnfile in $addr";
}
}
}
}
}