summaryrefslogtreecommitdiff
path: root/Build-Sample.ps1
diff options
context:
space:
mode:
authorJakob Lichtenberg (170957) <[email protected]>2024-06-28 11:43:03 -0700
committerJakob Lichtenberg (170957) <[email protected]>2024-06-28 11:43:03 -0700
commit341564fbc34d7521d03da4e91a0d4c2be9656410 (patch)
treeeb73dfda8e7c2cd3450c7d1cc8a73beafb914b0e /Build-Sample.ps1
parent57d4b2b5143a99d6e3a39100d183e26cac51da5b (diff)
parentb3af8c8f9bd508f54075da2f2516b31d05cd52c8 (diff)
Merge branch 'main' into user/jakobl/add_templatesuser/jakobl/add_templates
Diffstat (limited to 'Build-Sample.ps1')
-rw-r--r--Build-Sample.ps170
1 files changed, 58 insertions, 12 deletions
diff --git a/Build-Sample.ps1 b/Build-Sample.ps1
index 0ef9d051..8c614bd2 100644
--- a/Build-Sample.ps1
+++ b/Build-Sample.ps1
@@ -134,23 +134,60 @@ foreach ($line in Get-Content -Path $solutionFile)
if (-not $configurationIsSupported)
{
Write-Verbose "[$SampleName] `u{23E9} Skipped. Configuration $Configuration|$Platform not supported."
- exit 2
+ exit 3
}
-$errorLogFilePath = "$LogFilesDirectory\$SampleName.$Configuration.$Platform.err"
-$warnLogFilePath = "$LogFilesDirectory\$SampleName.$Configuration.$Platform.wrn"
-$OutLogFilePath = "$LogFilesDirectory\$SampleName.$Configuration.$Platform.out"
-
Write-Verbose "Building Sample: $SampleName; Configuration: $Configuration; Platform: $Platform {"
-msbuild $solutionFile -clp:Verbosity=m -t:rebuild -property:Configuration=$Configuration -property:Platform=$Platform -p:TargetVersion=Windows10 -p:InfVerif_AdditionalOptions="$InfVerif_AdditionalOptions" -warnaserror -flp1:errorsonly`;logfile=$errorLogFilePath -flp2:WarningsOnly`;logfile=$warnLogFilePath -noLogo > $OutLogFilePath
-if ($env:WDS_WipeOutputs -ne $null)
-{
- Write-Verbose ("WipeOutputs: "+$Directory+" "+(((Get-Volume ($DriveLetter=(Get-Item ".").PSDrive.Name)).SizeRemaining/1GB)))
- Get-ChildItem -path $Directory -Recurse -Include x64|Remove-Item -Recurse
- Get-ChildItem -path $Directory -Recurse -Include arm64|Remove-Item -Recurse
+
+$myexit=0
+
+#
+# Let us build up to three times (0th, 1st, and 2nd attempt).
+# If we succeed at first, then it is a success.
+# If we fail at first, but succeed at either of next two attempts, then it is a sporadic failure.
+# If we even at third attempt fail, then it is a true failure.
+#
+for ($i=0; $i -le 2; $i++) {
+ $errorLogFilePath = "$LogFilesDirectory\$SampleName.$Configuration.$Platform.$i.err"
+ $warnLogFilePath = "$LogFilesDirectory\$SampleName.$Configuration.$Platform.$i.wrn"
+ $OutLogFilePath = "$LogFilesDirectory\$SampleName.$Configuration.$Platform.$i.out"
+
+ msbuild $solutionFile -clp:Verbosity=m -t:rebuild -property:Configuration=$Configuration -property:Platform=$Platform -p:TargetVersion=Windows10 -p:InfVerif_AdditionalOptions="$InfVerif_AdditionalOptions" -warnaserror -flp1:errorsonly`;logfile=$errorLogFilePath -flp2:WarningsOnly`;logfile=$warnLogFilePath -noLogo > $OutLogFilePath
+ if ($env:WDS_WipeOutputs -ne $null)
+ {
+ Write-Verbose ("WipeOutputs: "+$Directory+" "+(((Get-Volume ($DriveLetter=(Get-Item ".").PSDrive.Name)).SizeRemaining/1GB)))
+ Get-ChildItem -path $Directory -Recurse -Include x64|Remove-Item -Recurse
+ Get-ChildItem -path $Directory -Recurse -Include arm64|Remove-Item -Recurse
+ }
+ if ($LASTEXITCODE -eq 0)
+ {
+ # We succeeded building.
+ # If at first attempt, then $myexit=0
+ # If at later attempt, then $myexit=2
+ if ($i -eq 0)
+ {
+ $myexit=0
+ }
+ else
+ {
+ $myexit=2
+ }
+ break;
+ }
+ else
+ {
+ # We failed building.
+ # Let us sleep for a bit.
+ # Then let the while loop do its thing and re-run.
+ sleep 1
+ if ($Verbose)
+ {
+ Write-Warning "`u{274C} Build failed. Retrying to see if sporadic..."
+ }
+ }
}
-if ($LASTEXITCODE -ne 0)
+if ($myexit -eq 1)
{
if ($Verbose)
{
@@ -159,4 +196,13 @@ if ($LASTEXITCODE -ne 0)
exit 1
}
+if ($myexit -eq 2)
+{
+ if ($Verbose)
+ {
+ Write-Warning "`u{274C} Build sporadically failed. Log available at $errorLogFilePath"
+ }
+ exit 2
+}
+
Write-Verbose "Building Sample: $SampleName; Configuration: $Configuration; Platform: $Platform }"