From 6a6bc4dd20c25ece54debacd206571a833ed089d Mon Sep 17 00:00:00 2001 From: Pavel Yaskevich Date: Tue, 28 May 2024 09:51:28 -0700 Subject: [PATCH] [SwiftPMBuildSystem] Adjust `BuildParameters` use to indicate a destination The change is introduced by https://github.com/apple/swift-package-manager/pull/7593 (cherry picked from commit 12b848ed58ad1aa1a49234a329213d2d34173a4c) --- .../SwiftPMBuildSystem.swift | 27 ++++++++++++++----- .../SwiftPMBuildSystemTests.swift | 12 ++++----- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/Sources/SKSwiftPMWorkspace/SwiftPMBuildSystem.swift b/Sources/SKSwiftPMWorkspace/SwiftPMBuildSystem.swift index 23ea99c76..17f56912f 100644 --- a/Sources/SKSwiftPMWorkspace/SwiftPMBuildSystem.swift +++ b/Sources/SKSwiftPMWorkspace/SwiftPMBuildSystem.swift @@ -127,7 +127,8 @@ public actor SwiftPMBuildSystem { private var modulesGraph: ModulesGraph private let workspace: Workspace - @_spi(Testing) public let buildParameters: BuildParameters + @_spi(Testing) public let toolsBuildParameters: BuildParameters + @_spi(Testing) public let destinationBuildParameters: BuildParameters private let fileSystem: FileSystem private let toolchain: SKCore.Toolchain @@ -235,7 +236,18 @@ public actor SwiftPMBuildSystem { buildConfiguration = .release } - self.buildParameters = try BuildParameters( + self.toolsBuildParameters = try BuildParameters( + destination: .host, + dataPath: location.scratchDirectory.appending( + component: swiftPMToolchain.targetTriple.platformBuildPathComponent + ), + configuration: buildConfiguration, + toolchain: swiftPMToolchain, + flags: buildSetup.flags + ) + + self.destinationBuildParameters = try BuildParameters( + destination: .target, dataPath: location.scratchDirectory.appending( component: swiftPMToolchain.targetTriple.platformBuildPathComponent ), @@ -313,12 +325,13 @@ extension SwiftPMBuildSystem { let modulesGraph = try self.workspace.loadPackageGraph( rootInput: PackageGraphRootInput(packages: [AbsolutePath(projectRoot)]), forceResolvedVersions: forceResolvedVersions, - availableLibraries: self.buildParameters.toolchain.providedLibraries, + availableLibraries: [], observabilityScope: observabilitySystem.topScope ) let plan = try BuildPlan( - buildParameters: buildParameters, + productsBuildParameters: destinationBuildParameters, + toolsBuildParameters: toolsBuildParameters, graph: modulesGraph, fileSystem: fileSystem, observabilityScope: observabilitySystem.topScope @@ -384,12 +397,12 @@ extension SwiftPMBuildSystem: SKCore.BuildSystem { public nonisolated var supportsPreparation: Bool { true } public var buildPath: TSCAbsolutePath { - return TSCAbsolutePath(buildParameters.buildPath) + return TSCAbsolutePath(destinationBuildParameters.buildPath) } public var indexStorePath: TSCAbsolutePath? { - return buildParameters.indexStoreMode == .off - ? nil : TSCAbsolutePath(buildParameters.indexStore) + return destinationBuildParameters.indexStoreMode == .off + ? nil : TSCAbsolutePath(destinationBuildParameters.indexStore) } public var indexDatabasePath: TSCAbsolutePath? { diff --git a/Tests/SKSwiftPMWorkspaceTests/SwiftPMBuildSystemTests.swift b/Tests/SKSwiftPMWorkspaceTests/SwiftPMBuildSystemTests.swift index 150f9b1ac..f0b8b0cb7 100644 --- a/Tests/SKSwiftPMWorkspaceTests/SwiftPMBuildSystemTests.swift +++ b/Tests/SKSwiftPMWorkspaceTests/SwiftPMBuildSystemTests.swift @@ -147,7 +147,7 @@ final class SwiftPMBuildSystemTests: XCTestCase { try await swiftpmBuildSystem.generateBuildGraph(allowFileSystemWrites: false) let aswift = packageRoot.appending(components: "Sources", "lib", "a.swift") - let hostTriple = await swiftpmBuildSystem.buildParameters.triple + let hostTriple = await swiftpmBuildSystem.destinationBuildParameters.triple let build = buildPath(root: packageRoot, platform: hostTriple.platformBuildPathComponent) assertEqual(await swiftpmBuildSystem.buildPath, build) @@ -212,7 +212,7 @@ final class SwiftPMBuildSystemTests: XCTestCase { try await swiftpmBuildSystem.generateBuildGraph(allowFileSystemWrites: false) let aPlusSomething = packageRoot.appending(components: "Sources", "lib", "a+something.swift") - let hostTriple = await swiftpmBuildSystem.buildParameters.triple + let hostTriple = await swiftpmBuildSystem.destinationBuildParameters.triple let build = buildPath(root: packageRoot, platform: hostTriple.platformBuildPathComponent) assertEqual(await swiftpmBuildSystem.buildPath, build) @@ -275,7 +275,7 @@ final class SwiftPMBuildSystemTests: XCTestCase { try await swiftpmBuildSystem.generateBuildGraph(allowFileSystemWrites: false) let aswift = packageRoot.appending(components: "Sources", "lib", "a.swift") - let hostTriple = await swiftpmBuildSystem.buildParameters.triple + let hostTriple = await swiftpmBuildSystem.destinationBuildParameters.triple let build = buildPath(root: packageRoot, config: config, platform: hostTriple.platformBuildPathComponent) assertEqual(await swiftpmBuildSystem.buildPath, build) @@ -514,7 +514,7 @@ final class SwiftPMBuildSystemTests: XCTestCase { let acxx = packageRoot.appending(components: "Sources", "lib", "a.cpp") let bcxx = packageRoot.appending(components: "Sources", "lib", "b.cpp") let header = packageRoot.appending(components: "Sources", "lib", "include", "a.h") - let hostTriple = await swiftpmBuildSystem.buildParameters.triple + let hostTriple = await swiftpmBuildSystem.destinationBuildParameters.triple let build = buildPath(root: packageRoot, platform: hostTriple.platformBuildPathComponent) assertEqual(await swiftpmBuildSystem.buildPath, build) @@ -596,7 +596,7 @@ final class SwiftPMBuildSystemTests: XCTestCase { let arguments = try await unwrap(swiftpmBuildSystem.buildSettings(for: aswift.asURI, language: .swift)) .compilerArguments assertArgumentsContain("-target", arguments: arguments) // Only one! - let hostTriple = await swiftpmBuildSystem.buildParameters.triple + let hostTriple = await swiftpmBuildSystem.destinationBuildParameters.triple #if os(macOS) assertArgumentsContain( @@ -829,7 +829,7 @@ final class SwiftPMBuildSystemTests: XCTestCase { try await swiftpmBuildSystem.generateBuildGraph(allowFileSystemWrites: false) let aswift = packageRoot.appending(components: "Plugins", "MyPlugin", "a.swift") - let hostTriple = await swiftpmBuildSystem.buildParameters.triple + let hostTriple = await swiftpmBuildSystem.destinationBuildParameters.triple let build = buildPath(root: packageRoot, platform: hostTriple.platformBuildPathComponent) assertEqual(await swiftpmBuildSystem.buildPath, build)