From 8d6b9c8ca4a1694f6d4f2bdecf4394cc3b9f7a9a Mon Sep 17 00:00:00 2001 From: Alex Hoppen Date: Wed, 19 Mar 2025 09:26:44 -0700 Subject: [PATCH] [Windows] Use a multiroot data file to test (corelibs-)foundation on Windows We currently rebuild swift-syntax, swift-foundation-icu and swift-foundation twice: Once to test swift-foundation and once to test swift-corelibs-foundation. Using a unified build for both projects means that we only need to rebuild them once, saving ~5 minutes. (cherry picked from commit 61f833c04c6ef9521b59d9ba7749cb1d862c0ed2) (cherry picked from commit 7ce649c168c76c8f82e2202a575822aa1c3b7164) --- utils/build.ps1 | 13 +++++++++---- .../contents.xcworkspacedata | 3 +++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/utils/build.ps1 b/utils/build.ps1 index b521b1f1cd5d7..ab86881d5d4ad 100644 --- a/utils/build.ps1 +++ b/utils/build.ps1 @@ -2414,12 +2414,16 @@ function Build-Foundation { } function Test-Foundation { + $ScratchPath = "$BinaryCache\$($BuildPlatform.Triple)\FoundationTests" + # Foundation tests build via swiftpm rather than CMake Build-SPMProject ` -Action Test ` -Src $SourceCache\swift-foundation ` - -Bin "$BinaryCache\$($BuildPlatform.Triple)\CoreFoundationTests" ` - -Platform $BuildPlatform + -Bin "$ScratchPath" ` + -Platform $BuildPlatform ` + --multiroot-data-file "$SourceCache\swift\utils\build_swift\resources\SwiftPM-Unified-Build.xcworkspace" ` + --test-product swift-foundationPackageTests Invoke-IsolatingEnvVars { $env:DISPATCH_INCLUDE_PATH="$(Get-SwiftSDK Windows)/usr/include" @@ -2431,9 +2435,10 @@ function Test-Foundation { Build-SPMProject ` -Action Test ` -Src $SourceCache\swift-corelibs-foundation ` - -Bin "$BinaryCache\$($BuildPlatform.Triple)\FoundationTests" ` + -Bin "$ScratchPath" ` -Platform $BuildPlatform ` - -Configuration $FoundationTestConfiguration + --multiroot-data-file "$SourceCache\swift\utils\build_swift\resources\SwiftPM-Unified-Build.xcworkspace" ` + --test-product swift-corelibs-foundationPackageTests } } diff --git a/utils/build_swift/resources/SwiftPM-Unified-Build.xcworkspace/contents.xcworkspacedata b/utils/build_swift/resources/SwiftPM-Unified-Build.xcworkspace/contents.xcworkspacedata index 98690cb842e09..605ae4dc932d6 100644 --- a/utils/build_swift/resources/SwiftPM-Unified-Build.xcworkspace/contents.xcworkspacedata +++ b/utils/build_swift/resources/SwiftPM-Unified-Build.xcworkspace/contents.xcworkspacedata @@ -6,10 +6,13 @@ + + +