sub DoDriverSigning()

in build/scripts/automation/winbldroutines.pm [1036:1180]


sub DoDriverSigning
{
  print "DEBUG: in DoDriverSigning()\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 $signing = $this->Signing();

  my ($buildoutputdir,$logfile);
  
  foreach my $config (reverse sort @{$configlist})
  {
    foreach my $product (@{$productlist})
    {
	
 	next if uc($product) ne "UA" and uc($product) ne "CX" and uc($product) ne "PI" and uc($product) ne "ASRUA" and uc($product) ne "ASRSETUP";

	$buildoutputdir = $this->GetBuildIssDir($product);
	$logfile = "${srcpath}\\${buildoutputdir}\\DriverSigningLog_${product}_${config}_${partner}.txt";
	my $bldlogfile = "${srcpath}\\${buildoutputdir}\\BuildLog_${product}_${config}_${partner}.txt";
	my $solnfile = $this->GetSolnFileName($product);
	unlink "$logfile" if -e "$logfile";
    	
	my ($weekday,$month,$sdate,$hour,$min,$sec,$year) = ( localtime =~ /^(\w{3})\s+(\w{3})\s+(\d{1,2})\s+(\d{2}):(\d{2}):(\d{2})\s+(\d{4})$/ );
	$sdate = sprintf("%02d", $sdate);
	my $sdate = "${sdate}_${month}_${year}";
	my $product = uc($product);
	
	# Delete signing related files if they exists.	
	my @signfilestoberemoved = ("InputSign.json", "OutputSign.json", "OutputSignVerbose.log");
	foreach (@signfilestoberemoved) {
		Log_Do("if exist I:\\Signing\\$branchname\\$sdate\\$product\\$_ del /F I:\\Signing\\$branchname\\$sdate\\$product\\$_");
	}	

	# Variables specific to signing.
	my $inputfileslist = "$srcpath\\build\\scripts\\automation\\CodeSignScripts\\Files.json";
	my $sourcerootdir = "\t\t\"SourceRootDirectory\":" . " \"I:\\\\Signing\\\\$branchname\\\\$sdate\\\\$product\\\\Unsigned\\\\$config\",\n";
	my $destrootdir = "\t\t\"DestinationRootDirectory\":" . " \"I:\\\\Signing\\\\$branchname\\\\$sdate\\\\$product\\\\Signed\\\\$config\",\n";
	my $inputtempfile = "$srcpath\\build\\scripts\\automation\\CodeSignScripts\\InputSignTemplate.json";
	my $inputfile = "I:\\Signing\\$branchname\\$sdate\\$product\\InputSign.json";
	my $outputfile = "I:\\Signing\\$branchname\\$sdate\\$product\\OutputSign.json";
	my $verboselogfile = "I:\\Signing\\$branchname\\$sdate\\$product\\OutputSignVerbose.log";
	
    if (uc($product) eq "UA") 
	{		
		# Copy unsigned binaries/files to submission path.
		system($PowerShellPath ' -File ".\\CodeSignScripts\\Copy_Unsinged_Binaries_To_Submission_Path.ps1"' , $config , $product , $srcpath, $branchname, $signing);
		
		# Prepare files for signing.
		my $filessection = "UA_SIGN_FILES";
		prepare_signing_files ("$inputfileslist", "$filessection", "$inputtempfile", "$inputfile", "$sourcerootdir", "$destrootdir");

		# Submit binaries/files for signing.
		submit_files_for_signing("$product", "$config", "$inputfile", "$outputfile", "$verboselogfile");
		
		# Copy signed binaries/files back to build path.
		system($PowerShellPath ' -File ".\\CodeSignScripts\\Copy_Signed_Binaries_To_Build_Path.ps1"' , $config , $product , $srcpath, $branchname, $signing);	
	}

	if (uc($product) eq "ASRUA") 
	{
		# Copy managed binaries to submission path.
		system($PowerShellPath ' -File ".\\CodeSignScripts\\Copy_Unsinged_Binaries_To_Submission_Path.ps1"' , $config , $product , $srcpath, $branchname, $signing);

		# Prepare files for signing.
		my $filessection = "ASRUA_SIGN_FILES";
		prepare_signing_files ("$inputfileslist", "$filessection", "$inputtempfile", "$inputfile", "$sourcerootdir", "$destrootdir");
	
		# Submit binaries/files for signing.
		submit_files_for_signing("$product", "$config", "$inputfile", "$outputfile", "$verboselogfile");
		
		# Copy managed binaries to build path.
		system($PowerShellPath ' -File ".\\CodeSignScripts\\Copy_Signed_Binaries_To_Build_Path.ps1"' , $config , $product , $srcpath, $branchname, $signing);	

		if (Log_Do("\"$msbuild_exe\" ${srcpath}\\$solnfile /t:UnifiedAgentCustomActions:Rebuild /p:Configuration=$config /p:Platform=\"Any CPU\" /p:Signing=True") == 0 ) {
			Log_Do("if exist $bldlogfile copy /Y $bldlogfile ${datewisedir}\\${config}\\logs");
			print "\n\n$config build from $branchname is successful for $product for UnifiedAgentCustomActions in $addr\n\n";
		}
		else 
		{
			Log_Do("if exist $bldlogfile copy /Y $bldlogfile ${datewisedir}\\${config}\\logs");
			send_mail($failure_alert_ids,'Windows build failure',"$config build from $branchname is failed for $product for UnifiedAgentCustomActions in $addr",1);
			die "\n\n$config build from $branchname is failed for $product for UnifiedAgentCustomActions in $addr";
		}
	}

	if (uc($product) eq "ASRSETUP") 
	{
		# Copy managed binaries to submission path.
		system($PowerShellPath ' -File ".\\CodeSignScripts\\Copy_Unsinged_Binaries_To_Submission_Path.ps1"' , $config , $product , $srcpath, $branchname, $signing);

		# Prepare files for signing.
		my $filessection = "ASRUS_SIGN_FILES";
		prepare_signing_files ("$inputfileslist", "$filessection", "$inputtempfile", "$inputfile", "$sourcerootdir", "$destrootdir");
	
		# Submit binaries/files for signing.
		submit_files_for_signing("$product", "$config", "$inputfile", "$outputfile", "$verboselogfile");
		
		# Copy managed binaries to build path.
		system($PowerShellPath ' -File ".\\CodeSignScripts\\Copy_Signed_Binaries_To_Build_Path.ps1"' , $config , $product , $srcpath, $branchname, $signing);			
	}
	
	if (uc($product) eq "PI") 
	{
		# Copy unsigned binaries to submission path.
		system($PowerShellPath ' -File ".\\CodeSignScripts\\Copy_Unsinged_Binaries_To_Submission_Path.ps1"' , $config , $product , $srcpath, $branchname, $signing);
		
		# Prepare files for signing.
		my $filessection = "PI_SIGN_FILES";
		prepare_signing_files ("$inputfileslist", "$filessection", "$inputtempfile", "$inputfile", "$sourcerootdir", "$destrootdir");
		
		# Submit binaries/files for signing.
		submit_files_for_signing("$product", "$config", "$inputfile", "$outputfile", "$verboselogfile");
		
		# Copy signed binaries to build path.
		system($PowerShellPath ' -File ".\\CodeSignScripts\\Copy_Signed_Binaries_To_Build_Path.ps1"' , $config , $product , $srcpath, $branchname, $signing);			
	}
	
	if (uc($product) eq "CX") 
	{	
		# Copy binaries/files to submission path.
		system($PowerShellPath ' -File ".\\CodeSignScripts\\Copy_Unsinged_Binaries_To_Submission_Path.ps1"' , $config , $product , $srcpath, $branchname, $signing);
		
		# Prepare files for signing.
		my $filessection = "CX_SIGN_FILES";
		prepare_signing_files ("$inputfileslist", "$filessection", "$inputtempfile", "$inputfile", "$sourcerootdir", "$destrootdir");

		# Submit binaries/files for signing.
		submit_files_for_signing("$product", "$config", "$inputfile", "$outputfile", "$verboselogfile");
	
		# Copy signed binaries/files to build path.
		system($PowerShellPath ' -File ".\\CodeSignScripts\\Copy_Signed_Binaries_To_Build_Path.ps1"' , $config , $product , $srcpath, $branchname, $signing);
	}	
	else
	{
		next;
	}
 	Log_Do("if exist $logfile copy /Y $logfile ${datewisedir}\\${config}\\logs");
    }
  }
}