Skip to content

Commit 0044699

Browse files
committed
Reduce API surface exposed by TargetBuildGraph
1 parent 16cb3d2 commit 0044699

File tree

5 files changed

+13
-12
lines changed

5 files changed

+13
-12
lines changed

Sources/SWBCore/DependencyResolution.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ import struct SWBProtocol.RunDestinationInfo
1515
import SWBMacro
1616

1717
public protocol TargetGraph: Sendable {
18-
var workspaceContext: WorkspaceContext { get }
19-
2018
var allTargets: OrderedSet<ConfiguredTarget> { get }
2119

2220
func dependencies(of target: ConfiguredTarget) -> [ConfiguredTarget]

Sources/SWBCore/TargetDependencyResolver.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,12 @@ public struct TargetBuildGraph: TargetGraph, Sendable {
7979
}
8080

8181
/// The workspace context this graph is for.
82-
public let workspaceContext: WorkspaceContext
82+
private let workspaceContext: WorkspaceContext
8383

8484
/// The build request the graph is for.
85-
public let buildRequest: BuildRequest
85+
private let buildRequest: BuildRequest
8686

87-
public let buildRequestContext: BuildRequestContext
87+
private let buildRequestContext: BuildRequestContext
8888

8989
/// The complete list of configured targets, in topological order. That is, each target will be included in the array only after all of the targets that it depends on (unless there is a target dependency cycle).
9090
public let allTargets: OrderedSet<ConfiguredTarget>

Sources/SWBTaskConstruction/ProductPlanning/ProductPlan.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -644,7 +644,7 @@ package final class GlobalProductPlan: GlobalTargetInfoProvider
644644
guard staticTarget.type == .packageProduct else { continue }
645645

646646
let packageTargetDependencies = staticTarget.dependencies.compactMap { targetDependency in
647-
planRequest.buildGraph.workspaceContext.workspace.target(for: targetDependency.guid)
647+
planRequest.workspaceContext.workspace.target(for: targetDependency.guid)
648648
}.filter {
649649
$0.type != .packageProduct
650650
}

Sources/SWBTestSupport/BuildDescriptionBasedTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ extension CoreBasedTests {
4242
let buildRequest = BuildRequest(parameters: parameters, buildTargets: buildTargets, dependencyScope: dependencyScope, continueBuildingAfterErrors: true, useParallelTargets: true, useImplicitDependencies: useImplicitDependencies, useDryRun: false)
4343

4444
// Create the build graph.
45-
return await TargetBuildGraph(workspaceContext: workspaceContext, buildRequest: buildRequest, buildRequestContext: buildRequestContext)
45+
return await (TargetBuildGraph(workspaceContext: workspaceContext, buildRequest: buildRequest, buildRequestContext: buildRequestContext), buildRequest)
4646
}
4747

4848
package func planRequest(for workspace: Workspace, configuration: String = "Debug", activeRunDestination: RunDestinationInfo?, overrides: [String: String] = [:], fs: any FSProxy = PseudoFS(), includingTargets predicate: (Target) -> Bool) async throws -> BuildPlanRequest {
@@ -57,7 +57,7 @@ extension CoreBasedTests {
5757

5858
let buildRequestContext = BuildRequestContext(workspaceContext: workspaceContext)
5959

60-
let buildGraph = await self.buildGraph(for: workspaceContext, buildRequestContext: buildRequestContext, configuration: configuration, activeRunDestination: activeRunDestination, overrides: overrides, fs: fs, includingTargets: predicate)
60+
let (buildGraph, buildRequest) = await self.buildGraph(for: workspaceContext, buildRequestContext: buildRequestContext, configuration: configuration, activeRunDestination: activeRunDestination, overrides: overrides, fs: fs, includingTargets: predicate)
6161

6262
// Construct an appropriate set of provisioning inputs. This is important for performance testing to ensure we end up with representative code signing tasks, which trigger the mutable node analysis during build description construction.
6363
var provisioningInputs = [ConfiguredTarget: ProvisioningTaskInputs]()
@@ -66,7 +66,7 @@ extension CoreBasedTests {
6666
provisioningInputs[ct] = ProvisioningTaskInputs(identityHash: "-")
6767
}
6868

69-
return BuildPlanRequest(workspaceContext: buildGraph.workspaceContext, buildRequest: buildGraph.buildRequest, buildRequestContext: buildRequestContext, buildGraph: buildGraph, provisioningInputs: provisioningInputs)
69+
return BuildPlanRequest(workspaceContext: workspaceContext, buildRequest: buildRequest, buildRequestContext: buildRequestContext, buildGraph: buildGraph, provisioningInputs: provisioningInputs)
7070
}
7171

7272
package func buildDescription(for workspace: Workspace, configuration: String = "Debug", activeRunDestination: RunDestinationInfo?, overrides: [String: String] = [:], fs: any FSProxy = PseudoFS(), includingTargets predicate: (Target) -> Bool = { _ in true }) async throws -> (BuildDescription, WorkspaceContext) {

Tests/SWBCoreTests/IndexTargetDependencyResolverTests.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ import SWBUtil
134134
])])
135135

136136
let tester = try await BuildOperationTester(core, workspace, simulated: false)
137+
let workspaceContext = WorkspaceContext(core: core, workspace: tester.workspace, processExecutionCache: .sharedForTesting)
137138
try await tester.checkIndexBuildGraph(targets: [macApp, macApp2, iosApp, iosApp2, fwkTarget_mac, fwkTarget_ios], workspaceOperation: true) { results in
138139
#expect(results.targets().map { results.targetNameAndPlatform($0) } == [
139140
"FwkTarget_mac-macos", "macApp-macos", "macApp2-macos",
@@ -150,7 +151,7 @@ import SWBUtil
150151
try results.checkDependencies(of: fwkTarget_mac, are: [])
151152
try results.checkDependencies(of: .init(fwkTarget_ios, "iphoneos"), are: [])
152153
try results.checkDependencies(of: .init(fwkTarget_ios, "iphonesimulator"), are: [])
153-
if results.buildGraph.workspaceContext.userPreferences.enableDebugActivityLogs {
154+
if workspaceContext.userPreferences.enableDebugActivityLogs {
154155
results.delegate.checkDiagnostics([
155156
"FwkTarget_mac rejected as an implicit dependency because its SUPPORTED_PLATFORMS (macosx) does not contain this target's platform (iphoneos). (in target 'iosApp' from project 'aProject')",
156157
"FwkTarget_ios rejected as an implicit dependency because its SUPPORTED_PLATFORMS (iphoneos iphonesimulator) does not contain this target's platform (macosx). (in target 'macApp' from project 'aProject')",
@@ -260,6 +261,7 @@ import SWBUtil
260261
])])
261262

262263
let tester = try await BuildOperationTester(core, workspace, simulated: false)
264+
let workspaceContext = WorkspaceContext(core: core, workspace: tester.workspace, processExecutionCache: .sharedForTesting)
263265
try await tester.checkIndexBuildGraph(targets: [macApp, iosApp, watchKitApp, watchKitExt], workspaceOperation: true) { results in
264266
#expect(results.targets().map { results.targetNameAndPlatform($0) } == [
265267
"macApp-macos", "iosApp-iphoneos", "iosApp-iphonesimulator",
@@ -270,7 +272,7 @@ import SWBUtil
270272
try results.checkDependencies(of: .init(iosApp, "iphonesimulator"), are: [])
271273
try results.checkDependencies(of: .init(watchKitApp, "watchos"), are: [.init(watchKitExt, "watchos")])
272274
try results.checkDependencies(of: .init(watchKitApp, "watchsimulator"), are: [.init(watchKitExt, "watchsimulator")])
273-
if results.buildGraph.workspaceContext.userPreferences.enableDebugActivityLogs {
275+
if workspaceContext.userPreferences.enableDebugActivityLogs {
274276
results.delegate.checkDiagnostics([
275277
"Watchable WatchKit App rejected as an implicit dependency because its SUPPORTED_PLATFORMS (watchos watchsimulator) does not contain this target's platform (iphoneos). (in target 'iosApp' from project 'aProject')",
276278
"Watchable WatchKit App rejected as an implicit dependency because its SUPPORTED_PLATFORMS (watchos watchsimulator) does not contain this target's platform (iphonesimulator). (in target 'iosApp' from project 'aProject')"
@@ -755,6 +757,7 @@ import SWBUtil
755757
])])
756758

757759
let tester = try await BuildOperationTester(core, workspace, simulated: false)
760+
let workspaceContext = WorkspaceContext(core: core, workspace: tester.workspace, processExecutionCache: .sharedForTesting)
758761
try await tester.checkIndexBuildGraph(targets: [catalystAppTarget1, catalystAppTarget2, catalystAppTarget3, osxAppTarget, osxAppTarget_iosmac, fwkTarget, fwkTarget_osx], workspaceOperation: true) { results in
759762
#expect(results.targets().map { results.targetNameAndPlatform($0) } == [
760763
"FwkTarget-iphoneos", "catalystApp1-iphoneos", "FwkTarget-iphonesimulator", "catalystApp1-iphonesimulator", "FwkTarget-iosmac", "catalystApp1-iosmac", "catalystApp2-iphoneos", "catalystApp2-iphonesimulator", "catalystApp2-iosmac", "catalystApp3-iphoneos", "catalystApp3-iphonesimulator", "catalystApp3-iosmac", "FwkTarget_osx-macos", "catalystApp3-macos", "osxApp-macos", "osxApp_iosmac-iosmac", "FwkTarget_osx-iosmac",
@@ -773,7 +776,7 @@ import SWBUtil
773776
try results.checkDependencies(of: osxAppTarget, are: [.init(fwkTarget_osx, "macos")])
774777
try results.checkDependencies(of: osxAppTarget_iosmac, are: [.init(fwkTarget, "iosmac")])
775778

776-
if results.buildGraph.workspaceContext.userPreferences.enableDebugActivityLogs {
779+
if workspaceContext.userPreferences.enableDebugActivityLogs {
777780
results.delegate.checkDiagnostics([
778781
"FwkTarget rejected as an implicit dependency because its SUPPORTED_PLATFORMS (iphoneos iphonesimulator) does not contain this target's platform (macosx). (in target 'catalystApp3' from project 'aProject')",
779782
"FwkTarget rejected as an implicit dependency because its SUPPORTED_PLATFORMS (iphoneos iphonesimulator) does not contain this target's platform (macosx). (in target 'osxApp' from project 'aProject')",

0 commit comments

Comments
 (0)