Skip to content

Commit d7d4acf

Browse files
committed
[Build] NFC: Extract PluginConfiguration out from BuildOperation
`BuildPlan` is going to pass it down to `{Swift, Clang}ModuleBuildDescription`s which are going to be responsible for invoking the plugins.
1 parent 99c7332 commit d7d4acf

File tree

2 files changed

+20
-15
lines changed

2 files changed

+20
-15
lines changed

Sources/Build/BuildOperation.swift

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,7 @@ public final class BuildOperation: PackageStructureDelegate, SPMBuildCore.BuildS
737737
let buildToolPluginInvocationResults: [ResolvedModule.ID: (target: ResolvedModule, results: [BuildToolPluginInvocationResult])]
738738
let prebuildCommandResults: [ResolvedModule.ID: [PrebuildCommandResult]]
739739
// Invoke any build tool plugins in the graph to generate prebuild commands and build commands.
740-
if let pluginConfiguration, !self.config.shouldSkipBuilding(for: .target) {
740+
if let pluginConfiguration: PluginConfiguration, !self.config.shouldSkipBuilding(for: .target) {
741741
let pluginsPerModule = graph.pluginsPerModule(
742742
satisfying: self.config.buildEnvironment(for: .host)
743743
)
@@ -823,6 +823,7 @@ public final class BuildOperation: PackageStructureDelegate, SPMBuildCore.BuildS
823823
destinationBuildParameters: self.config.destinationBuildParameters,
824824
toolsBuildParameters: self.config.buildParameters(for: .host),
825825
graph: graph,
826+
pluginConfiguration: self.pluginConfiguration,
826827
additionalFileRules: additionalFileRules,
827828
buildToolPluginInvocationResults: buildToolPluginInvocationResults.mapValues(\.results),
828829
prebuildCommandResults: prebuildCommandResults,
@@ -1024,22 +1025,24 @@ public final class BuildOperation: PackageStructureDelegate, SPMBuildCore.BuildS
10241025
}
10251026
}
10261027

1027-
extension BuildOperation {
1028-
public struct PluginConfiguration {
1029-
/// Entity responsible for compiling and running plugin scripts.
1030-
let scriptRunner: PluginScriptRunner
1028+
public struct PluginConfiguration {
1029+
/// Entity responsible for compiling and running plugin scripts.
1030+
let scriptRunner: PluginScriptRunner
10311031

1032-
/// Directory where plugin intermediate files are stored.
1033-
let workDirectory: AbsolutePath
1032+
/// Directory where plugin intermediate files are stored.
1033+
let workDirectory: AbsolutePath
10341034

1035-
/// Whether to sandbox commands from build tool plugins.
1036-
let disableSandbox: Bool
1035+
/// Whether to sandbox commands from build tool plugins.
1036+
let disableSandbox: Bool
10371037

1038-
public init(scriptRunner: PluginScriptRunner, workDirectory: AbsolutePath, disableSandbox: Bool) {
1039-
self.scriptRunner = scriptRunner
1040-
self.workDirectory = workDirectory
1041-
self.disableSandbox = disableSandbox
1042-
}
1038+
public init(
1039+
scriptRunner: PluginScriptRunner,
1040+
workDirectory: AbsolutePath,
1041+
disableSandbox: Bool
1042+
) {
1043+
self.scriptRunner = scriptRunner
1044+
self.workDirectory = workDirectory
1045+
self.disableSandbox = disableSandbox
10431046
}
10441047
}
10451048

@@ -1070,10 +1073,10 @@ extension BuildOperation {
10701073
destinationBuildParameters: config.destinationBuildParameters,
10711074
toolsBuildParameters: config.toolsBuildParameters,
10721075
graph: graph,
1076+
pluginConfiguration: nil,
10731077
additionalFileRules: [],
10741078
buildToolPluginInvocationResults: [:],
10751079
prebuildCommandResults: [:],
1076-
disableSandbox: false,
10771080
fileSystem: config.fileSystem,
10781081
observabilityScope: config.observabilityScope
10791082
)

Sources/Build/BuildPlan/BuildPlan.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
255255
destinationBuildParameters: productsBuildParameters,
256256
toolsBuildParameters: toolsBuildParameters,
257257
graph: graph,
258+
pluginConfiguration: nil,
258259
fileSystem: fileSystem,
259260
observabilityScope: observabilityScope
260261
)
@@ -266,6 +267,7 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
266267
destinationBuildParameters: BuildParameters,
267268
toolsBuildParameters: BuildParameters,
268269
graph: ModulesGraph,
270+
pluginConfiguration: PluginConfiguration? = nil,
269271
additionalFileRules: [FileRuleDescription] = [],
270272
buildToolPluginInvocationResults: [ResolvedModule.ID: [BuildToolPluginInvocationResult]] = [:],
271273
prebuildCommandResults: [ResolvedModule.ID: [PrebuildCommandResult]] = [:],

0 commit comments

Comments
 (0)