diff --git a/azure-devops/create-new-agent-image.ps1 b/azure-devops/create-new-agent-image.ps1 index ec54b329b72..45297877222 100644 --- a/azure-devops/create-new-agent-image.ps1 +++ b/azure-devops/create-new-agent-image.ps1 @@ -14,7 +14,7 @@ $LiveVMPrefix = 'BUILD' $WindowsServerSku = '2019-Datacenter' $ProgressActivity = 'Creating Scale Set' -$TotalProgress = 8 +$TotalProgress = 10 $CurrentProgress = 1 function Find-ResourceGroupNameCollision { @@ -190,11 +190,9 @@ New-AzVm ` #################################################################################################### Write-Progress ` -Activity $ProgressActivity ` - -Status 'Running provisioning script in VM' ` + -Status 'Running provisioning script provision-image.ps1 in VM' ` -PercentComplete (100 / $TotalProgress * $CurrentProgress++) -$VM = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $ProtoVMName -$PrototypeOSDiskName = $VM.StorageProfile.OsDisk.Name Invoke-AzVMRunCommand ` -ResourceGroupName $ResourceGroupName ` -VMName $ProtoVMName ` @@ -202,6 +200,26 @@ Invoke-AzVMRunCommand ` -ScriptPath "$PSScriptRoot\provision-image.ps1" ` -Parameter @{AdminUserPassword = $AdminPW } +#################################################################################################### +Write-Progress ` + -Activity $ProgressActivity ` + -Status 'Restarting VM' ` + -PercentComplete (100 / $TotalProgress * $CurrentProgress++) + +Restart-AzVM -ResourceGroupName $ResourceGroupName -Name $ProtoVMName + +#################################################################################################### +Write-Progress ` + -Activity $ProgressActivity ` + -Status 'Running provisioning script sysprep.ps1 in VM' ` + -PercentComplete (100 / $TotalProgress * $CurrentProgress++) + +Invoke-AzVMRunCommand ` + -ResourceGroupName $ResourceGroupName ` + -VMName $ProtoVMName ` + -CommandId 'RunPowerShellScript' ` + -ScriptPath "$PSScriptRoot\sysprep.ps1" + #################################################################################################### Write-Progress ` -Activity $ProgressActivity ` @@ -226,6 +244,8 @@ Set-AzVM ` -Name $ProtoVMName ` -Generalized +$VM = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $ProtoVMName +$PrototypeOSDiskName = $VM.StorageProfile.OsDisk.Name $ImageConfig = New-AzImageConfig -Location $Location -SourceVirtualMachineId $VM.ID $Image = New-AzImage -Image $ImageConfig -ImageName $ProtoVMName -ResourceGroupName $ResourceGroupName @@ -278,8 +298,7 @@ $Vmss = Set-AzVmssStorageProfile ` -VirtualMachineScaleSet $Vmss ` -OsDiskCreateOption 'FromImage' ` -OsDiskCaching ReadWrite ` - -ImageReferenceId $Image.Id ` - -ManagedDisk Premium_LRS + -ImageReferenceId $Image.Id New-AzVmss ` -ResourceGroupName $ResourceGroupName ` diff --git a/azure-devops/provision-image.ps1 b/azure-devops/provision-image.ps1 index 9526f6a944f..73c024fcf56 100644 --- a/azure-devops/provision-image.ps1 +++ b/azure-devops/provision-image.ps1 @@ -7,9 +7,23 @@ param( [string]$AdminUserPassword = $null ) +Function Get-TempFilePath { + Param( + [String]$Extension + ) + + if ([String]::IsNullOrWhiteSpace($Extension)) { + throw 'Missing Extension' + } + + $tempPath = [System.IO.Path]::GetTempPath() + $tempName = [System.IO.Path]::GetRandomFileName() + '.' + $Extension + return Join-Path $tempPath $tempName +} + if (-not [string]::IsNullOrEmpty($AdminUserPassword)) { Write-Output "AdminUser password supplied; switching to AdminUser" - $PsExecPath = $env:TEMP + "\psexec.exe" + $PsExecPath = Get-TempFilePath -Extension 'exe' Write-Output "Downloading psexec to $PsExecPath" & curl.exe -L -o $PsExecPath -s -S https://live.sysinternals.com/PsExec64.exe $PsExecArgs = @( @@ -25,16 +39,23 @@ if (-not [string]::IsNullOrEmpty($AdminUserPassword)) { '-File', $PSCommandPath ) - Write-Output "Executing $PsExecPath @PsExecArgs" - & $PsExecPath @PsExecArgs - exit $? + + Write-Output "Executing $PsExecPath " + @PsExecArgs + + $proc = Start-Process -FilePath $PsExecPath -ArgumentList $PsExecArgs -Wait -PassThru + Write-Output 'Cleaning up...' + Remove-Item $PsExecPath + exit $proc.ExitCode } -$WorkLoads = '--add Microsoft.VisualStudio.Component.VC.CLI.Support ' + ` - '--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ' + ` - '--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 ' + ` - '--add Microsoft.VisualStudio.Component.VC.Tools.ARM ' + ` - '--add Microsoft.VisualStudio.Component.Windows10SDK.18362 ' +$Workloads = @( + 'Microsoft.VisualStudio.Component.VC.CLI.Support', + 'Microsoft.VisualStudio.Component.VC.CoreIde', + 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64', + 'Microsoft.VisualStudio.Component.VC.Tools.ARM64', + 'Microsoft.VisualStudio.Component.VC.Tools.ARM', + 'Microsoft.VisualStudio.Component.Windows10SDK.18362' +) $ReleaseInPath = 'Preview' $Sku = 'Enterprise' @@ -44,6 +65,13 @@ $LlvmUrl = 'https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0. $NinjaUrl = 'https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-win.zip' $PythonUrl = 'https://www.python.org/ftp/python/3.8.2/python-3.8.2-amd64.exe' +$CudaUrl = 'https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_426.00_win10.exe' +$CudaFeatures = 'nvcc_10.1 cuobjdump_10.1 nvprune_10.1 cupti_10.1 gpu_library_advisor_10.1 memcheck_10.1 ' + ` + 'nvdisasm_10.1 nvprof_10.1 visual_profiler_10.1 visual_studio_integration_10.1 cublas_10.1 cublas_dev_10.1 ' + ` + 'cudart_10.1 cufft_10.1 cufft_dev_10.1 curand_10.1 curand_dev_10.1 cusolver_10.1 cusolver_dev_10.1 cusparse_10.1 ' + ` + 'cusparse_dev_10.1 nvgraph_10.1 nvgraph_dev_10.1 npp_10.1 npp_dev_10.1 nvrtc_10.1 nvrtc_dev_10.1 nvml_dev_10.1 ' + ` + 'occupancy_calculator_10.1 fortran_examples_10.1' + $ErrorActionPreference = 'Stop' $ProgressPreference = 'SilentlyContinue' @@ -63,19 +91,33 @@ Function PrintMsiExitCodeMessage { Function InstallVisualStudio { Param( - [String]$WorkLoads, - [String]$Sku, - [String]$BootstrapperUrl + [String[]]$Workloads, + [String]$BootstrapperUrl, + [String]$InstallPath = $null, + [String]$Nickname = $null ) try { Write-Output 'Downloading Visual Studio...' - [string]$bootstrapperExe = Join-Path ([System.IO.Path]::GetTempPath()) ` - ([System.IO.Path]::GetRandomFileName() + '.exe') - curl.exe -L -o $bootstrapperExe $BootstrapperUrl - + [string]$bootstrapperExe = Get-TempFilePath -Extension 'exe' + curl.exe -L -o $bootstrapperExe -s -S $BootstrapperUrl Write-Output "Installing Visual Studio..." - $args = ('/c', $bootstrapperExe, $WorkLoads, '--quiet', '--norestart', '--wait', '--nocache') + $args = @('/c', $bootstrapperExe, '--quiet', '--norestart', '--wait', '--nocache') + foreach ($workload in $Workloads) { + $args += '--add' + $args += $workload + } + + if (-not ([String]::IsNullOrWhiteSpace($InstallPath))) { + $args += '--installpath' + $args += $InstallPath + } + + if (-not ([String]::IsNullOrWhiteSpace($Nickname))) { + $args += '--nickname' + $args += $Nickname + } + $proc = Start-Process -FilePath cmd.exe -ArgumentList $args -Wait -PassThru PrintMsiExitCodeMessage $proc.ExitCode } @@ -94,10 +136,8 @@ Function InstallMSI { try { Write-Output "Downloading $Name..." - [string]$randomRoot = Join-Path ([System.IO.Path]::GetTempPath()) ([System.IO.Path]::GetRandomFileName()) - [string]$msiPath = $randomRoot + '.msi' - curl.exe -L -o $msiPath $Url - + [string]$msiPath = Get-TempFilePath -Extension 'msi' + curl.exe -L -o $msiPath -s -S $Url Write-Output "Installing $Name..." $args = @('/i', $msiPath, '/norestart', '/quiet', '/qn') $proc = Start-Process -FilePath 'msiexec.exe' -ArgumentList $args -Wait -PassThru @@ -119,10 +159,8 @@ Function InstallZip { try { Write-Output "Downloading $Name..." - [string]$randomRoot = Join-Path ([System.IO.Path]::GetTempPath()) ([System.IO.Path]::GetRandomFileName()) - [string]$zipPath = $randomRoot + '.zip' - curl.exe -L -o $zipPath $Url - + [string]$zipPath = Get-TempFilePath -Extension 'zip' + curl.exe -L -o $zipPath -s -S $Url Write-Output "Installing $Name..." Expand-Archive -Path $zipPath -DestinationPath $Dir -Force } @@ -140,10 +178,8 @@ Function InstallLLVM { try { Write-Output 'Downloading LLVM...' - [string]$randomRoot = Join-Path ([System.IO.Path]::GetTempPath()) ([System.IO.Path]::GetRandomFileName()) - [string]$installerPath = $randomRoot + '.exe' - curl.exe -L -o $installerPath $Url - + [string]$installerPath = Get-TempFilePath -Extension 'exe' + curl.exe -L -o $installerPath -s -S $Url Write-Output 'Installing LLVM...' $proc = Start-Process -FilePath $installerPath -ArgumentList @('/S') -NoNewWindow -Wait -PassThru PrintMsiExitCodeMessage $proc.ExitCode @@ -161,10 +197,8 @@ Function InstallPython { ) Write-Output 'Downloading Python...' - [string]$randomRoot = Join-Path ([System.IO.Path]::GetTempPath()) ([System.IO.Path]::GetRandomFileName()) - [string]$installerPath = $randomRoot + '.exe' - curl.exe -L -o $installerPath $Url - + [string]$installerPath = Get-TempFilePath -Extension 'exe' + curl.exe -L -o $installerPath -s -S $Url Write-Output 'Installing Python...' $proc = Start-Process -FilePath $installerPath -ArgumentList ` @('/passive', 'InstallAllUsers=1', 'PrependPath=1', 'CompileAll=1') -Wait -PassThru @@ -178,19 +212,38 @@ Function InstallPython { } } +Function InstallCuda { + Param( + [String]$Url, + [String]$Features + ) + + try { + Write-Output 'Downloading CUDA...' + [string]$installerPath = Get-TempFilePath -Extension 'exe' + curl.exe -L -o $installerPath -s -S $Url + Write-Output 'Installing CUDA...' + $proc = Start-Process -FilePath $installerPath -ArgumentList @('-s ' + $Features) -Wait -PassThru + $exitCode = $proc.ExitCode + if ($exitCode -eq 0) { + Write-Output 'Installation successful!' + } + else { + Write-Output "Installation failed! Exited with $exitCode." + exit $exitCode + } + } + catch { + Write-Output "Failed to install CUDA!" + Write-Output $_.Exception.Message + exit -1 + } +} + Write-Output "AdminUser password not supplied; assuming already running as AdminUser" -InstallMSI 'CMake' $CMakeUrl -InstallZip 'Ninja' $NinjaUrl 'C:\Program Files\CMake\bin' -InstallLLVM $LlvmUrl -InstallPython $PythonUrl -InstallVisualStudio -WorkLoads $WorkLoads -Sku $Sku -BootstrapperUrl $VisualStudioBootstrapperUrl -Write-Output 'Updating PATH...' -$environmentKey = Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' -Name Path -Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' ` - -Name Path ` - -Value "$($environmentKey.Path);C:\Program Files\CMake\bin;C:\Program Files\LLVM\bin" +Write-Host 'Configuring AntiVirus exclusions...' Add-MPPreference -ExclusionPath C:\agent Add-MPPreference -ExclusionPath D:\ Add-MPPreference -ExclusionProcess ninja.exe @@ -199,4 +252,14 @@ Add-MPPreference -ExclusionProcess cl.exe Add-MPPreference -ExclusionProcess link.exe Add-MPPreference -ExclusionProcess python.exe -C:\Windows\system32\sysprep\sysprep.exe /oobe /generalize /shutdown +InstallMSI 'CMake' $CMakeUrl +InstallZip 'Ninja' $NinjaUrl 'C:\Program Files\CMake\bin' +InstallLLVM $LlvmUrl +InstallPython $PythonUrl +InstallVisualStudio -Workloads $Workloads -BootstrapperUrl $VisualStudioBootstrapperUrl +InstallCuda -Url $CudaUrl -Features $CudaFeatures +Write-Output 'Updating PATH...' +$environmentKey = Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' -Name Path +Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' ` + -Name Path ` + -Value "$($environmentKey.Path);C:\Program Files\CMake\bin;C:\Program Files\LLVM\bin" diff --git a/azure-devops/run-build.yml b/azure-devops/run-build.yml index 05e7b9a4cdc..27a0f41c0db 100644 --- a/azure-devops/run-build.yml +++ b/azure-devops/run-build.yml @@ -5,14 +5,14 @@ jobs: - job: ${{ parameters.targetPlatform }} timeoutInMinutes: 360 pool: - name: StlBuild-2020-03-28 + name: $(agentPool) variables: vcpkgLocation: '$(Build.SourcesDirectory)/vcpkg' steps: - checkout: self clean: true - submodules: recursive + submodules: true - task: Cache@2 displayName: Cache vcpkg timeoutInMinutes: 10 @@ -35,31 +35,6 @@ jobs: vcpkgArguments: 'boost-math' vcpkgDirectory: '$(vcpkgLocation)' vcpkgTriplet: '${{ parameters.targetPlatform }}-windows' - - task: run-cmake@0 - displayName: 'Build Support Tools' - timeoutInMinutes: 2 - condition: eq('${{ parameters.targetPlatform }}', 'x64') - inputs: - cmakeListsTxtPath: 'tools/CMakeSettings.json' - useVcpkgToolchainFile: true - configurationRegexFilter: '.*x64-Release.*' - buildDirectory: $(Build.ArtifactStagingDirectory)/tools - - task: BatchScript@1 - displayName: 'Enforce clang-format' - timeoutInMinutes: 60 - condition: eq('${{ parameters.targetPlatform }}', 'x64') - inputs: - filename: 'azure-devops/enforce-clang-format.cmd' - failOnStandardError: true - arguments: '$(Build.ArtifactStagingDirectory)/tools/parallelize/parallelize.exe' - - task: BatchScript@1 - displayName: 'Validate Files' - timeoutInMinutes: 2 - condition: eq('${{ parameters.targetPlatform }}', 'x64') - inputs: - filename: 'azure-devops/validate-files.cmd' - failOnStandardError: true - arguments: '$(Build.ArtifactStagingDirectory)/tools/validate/validate.exe' - task: PowerShell@2 displayName: 'Get Test Parallelism' timeoutInMinutes: 2 @@ -78,20 +53,16 @@ jobs: useVcpkgToolchainFile: true cmakeAppendedArgs: | -G Ninja -DBUILD_TESTING=TRUE -DENABLE_XUNIT_OUTPUT=TRUE -DADDITIONAL_LIT_FLAGS=-j$(testParallelism) - - task: PowerShell@2 + - task: CmdLine@2 displayName: 'Run Tests' timeoutInMinutes: 120 condition: in('${{ parameters.targetPlatform }}', 'x64', 'x86') inputs: workingDirectory: $(Build.ArtifactStagingDirectory)/${{ parameters.targetPlatform }} - targetType: inline script: | - Add-Content -Path ./run-tests.cmd -Value "set PATH=$(split-path (get-command ctest).source);%PATH%" - Add-Content -Path ./run-tests.cmd -Value "set PATH=$(split-path (get-command clang-cl).source);%PATH%" - $currentDir = "$((Get-Item -Path "./").FullName)" - Add-Content -Path ./run-tests.cmd -Value "cd $currentDir" - Add-Content -Path ./run-tests.cmd -Value "ctest -V" - $(vcpkgLocation)/vcpkg.exe env --triplet ${{ parameters.targetPlatform }}-windows "$currentDir/run-tests.cmd" + call "%PROGRAMFILES(X86)%\Microsoft Visual Studio\2019\Preview\Common7\Tools\VsDevCmd.bat" ^ + -host_arch=${{ parameters.vsDevCmdArch }} -arch=${{ parameters.vsDevCmdArch }} -no_logo + ctest -V - task: PublishTestResults@2 displayName: 'Publish libcxx Tests' timeoutInMinutes: 10 diff --git a/azure-devops/sysprep.ps1 b/azure-devops/sysprep.ps1 new file mode 100644 index 00000000000..60684423c97 --- /dev/null +++ b/azure-devops/sysprep.ps1 @@ -0,0 +1,5 @@ +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +Write-Output 'Running sysprep' +& C:\Windows\system32\sysprep\sysprep.exe /oobe /generalize /shutdown diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 310abe4a953..9fcade90b54 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -3,19 +3,64 @@ # Build STL targeting x86, x64, arm, arm64 -jobs: -- template: azure-devops/run-build.yml - parameters: - targetPlatform: x86 +variables: + agentPool: 'StlBuild-2020-04-04-3' -- template: azure-devops/run-build.yml - parameters: - targetPlatform: x64 +stages: + - stage: Code_Format + displayName: 'Code Format' + jobs: + - job: Code_Format_Validation + timeoutInMinutes: 90 + displayName: 'Validation' + pool: + name: $(agentPool) -- template: azure-devops/run-build.yml - parameters: - targetPlatform: arm + steps: + - checkout: self + clean: true + submodules: false + - script: | + call "%PROGRAMFILES(X86)%\Microsoft Visual Studio\2019\Preview\Common7\Tools\VsDevCmd.bat" ^ + -host_arch=amd64 -arch=amd64 -no_logo + cmake -G Ninja -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=Release ^ + -S $(Build.SourcesDirectory)\tools -B $(Build.ArtifactStagingDirectory)\tools + cd $(Build.ArtifactStagingDirectory)\tools + cmake --build . + displayName: 'Build Support Tools' + - task: BatchScript@1 + displayName: 'Enforce clang-format' + timeoutInMinutes: 60 + inputs: + filename: 'azure-devops/enforce-clang-format.cmd' + failOnStandardError: true + arguments: '$(Build.ArtifactStagingDirectory)/tools/parallelize/parallelize.exe' + - task: BatchScript@1 + displayName: 'Validate Files' + timeoutInMinutes: 2 + inputs: + filename: 'azure-devops/validate-files.cmd' + failOnStandardError: true + arguments: '$(Build.ArtifactStagingDirectory)/tools/validate/validate.exe' + - stage: Build_And_Test + displayName: 'Build and Test' + jobs: + - template: azure-devops/run-build.yml + parameters: + targetPlatform: x86 + vsDevCmdArch: x86 -- template: azure-devops/run-build.yml - parameters: - targetPlatform: arm64 + - template: azure-devops/run-build.yml + parameters: + targetPlatform: x64 + vsDevCmdArch: amd64 + + - template: azure-devops/run-build.yml + parameters: + targetPlatform: arm + vsDevCmdArch: arm + + - template: azure-devops/run-build.yml + parameters: + targetPlatform: arm64 + vsDevCmdArch: arm64 diff --git a/tests/std/expected_results.txt b/tests/std/expected_results.txt index 2ac2a854cb0..1c32158d670 100644 --- a/tests/std/expected_results.txt +++ b/tests/std/expected_results.txt @@ -1,2 +1,13 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +# TRANSITION, VSO-1093670 "Memory corruption in EDG when processing multiple TUs" +tests/GH_000545_include_compare:15 SKIP +tests/GH_000545_include_compare:16 SKIP +tests/P0607R0_inline_variables:19 SKIP +tests/P0607R0_inline_variables:20 SKIP +tests/P0607R0_inline_variables:21 SKIP + +# TRANSITION, GH-697 "We should have means of collecting compiler and test crash dumps" +# The ICE we are skipping this test because of is not easily reproducible we need to collect dumps +tests/VSO_0000000_string_view_idl:15 SKIP diff --git a/tests/std/tests/VSO_0157762_feature_test_macros/test.cpp b/tests/std/tests/VSO_0157762_feature_test_macros/test.cpp index b2fa95e76bc..c1c95cb80bb 100644 --- a/tests/std/tests/VSO_0157762_feature_test_macros/test.cpp +++ b/tests/std/tests/VSO_0157762_feature_test_macros/test.cpp @@ -51,7 +51,7 @@ int main() {} // COMPILE-ONLY #endif #endif -#if defined(__EDG__) || (defined(__clang__) && __clang_major__ < 10) // Clang 9 and EDG don't yet implement P1771R1 +#if defined(__clang__) && __clang_major__ < 10 // Clang 9 doesn't yet implement P1771R1 #if __has_cpp_attribute(nodiscard) != 201603L #error __has_cpp_attribute(nodiscard) is not 201603L #endif @@ -160,7 +160,8 @@ STATIC_ASSERT(__cpp_conditional_explicit == 201806L); #ifndef __cpp_constexpr #error __cpp_constexpr is not defined -#elif _HAS_CXX20 && defined(__clang__) && __clang_major__ >= 10 // TRANSITION, VSO-951133 and VSO-951142 +#elif _HAS_CXX20 \ + && (defined(__clang__) && __clang_major__ >= 10 || defined(__EDG__)) // TRANSITION, VSO-951133 and VSO-951142 #if __cpp_constexpr != 201907L #error __cpp_constexpr is not 201907L #else @@ -263,7 +264,7 @@ STATIC_ASSERT(__cpp_fold_expressions == 201603L); #ifndef __cpp_generic_lambdas #error __cpp_generic_lambdas is not defined -#elif _HAS_CXX20 && defined(__clang__) && __clang_major__ >= 10 // TRANSITION, VSO-951133 and EDG +#elif _HAS_CXX20 && ((defined(__clang__) && __clang_major__ >= 10) || defined(__EDG__)) // TRANSITION, VSO-951133 #if __cpp_generic_lambdas != 201707L #error __cpp_generic_lambdas is not 201707L #else @@ -336,12 +337,6 @@ STATIC_ASSERT(__cpp_impl_destroying_delete == 201806L); #if _HAS_CXX20 && (!defined(__clang__) || __clang_major__ >= 10) #ifndef __cpp_impl_three_way_comparison #error __cpp_impl_three_way_comparison is not defined -#elif defined(__EDG__) // EDG does not yet implement P1630R1 or P1186R3 so they still report the old value. -#if __cpp_impl_three_way_comparison != 201711L -#error __cpp_impl_three_way_comparison is not 201711L -#else -STATIC_ASSERT(__cpp_impl_three_way_comparison == 201711L); -#endif #else #if __cpp_impl_three_way_comparison != 201907L #error __cpp_impl_three_way_comparison is not 201907L diff --git a/tests/utils/stl/test/config.py b/tests/utils/stl/test/config.py index 87f20a393a5..cf9587846a2 100644 --- a/tests/utils/stl/test/config.py +++ b/tests/utils/stl/test/config.py @@ -126,6 +126,12 @@ def configure_features(self): self.config.available_features.add('msvc') self.config.available_features.update(self.target_info.features) + if self.target_arch is None: + self.configure_target_architecture() + + if self.target_arch == 'x86': + self.config.available_features.add('edg') + def configure_test_source_root(self): test_source_root = self.get_lit_conf('test_source_root', None) diff --git a/tests/utils/stl/util.py b/tests/utils/stl/util.py index 98e52193a96..e80379b9f65 100644 --- a/tests/utils/stl/util.py +++ b/tests/utils/stl/util.py @@ -43,7 +43,7 @@ def nullContext(value): def makeReport(cmd, out, err, rc): - report = "Command: %s\n" % ' '.join(cmd) + report = "Command: \"%s\"\n" % "\" \"".join(cmd) report += "Exit Code: %d\n" % rc if out: report += "Standard Output:\n--\n%s--\n" % out