Skip to content

Commit 4c206fb

Browse files
authored
Add basic support for plugins in swift-bootstrap script (#8128)
Add basic support for plugins to swift-bootstrap so that any plugins added to dependencies aren't silently dropped from the build plan, which could cause confusing errors related to nonexistent targets.
1 parent cb829d8 commit 4c206fb

File tree

4 files changed

+15
-10
lines changed

4 files changed

+15
-10
lines changed

Sources/SPMBuildCore/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ add_library(SPMBuildCore
1818
BuildSystem/BuildSystemCommand.swift
1919
BuildSystem/BuildSystemDelegate.swift
2020
BuiltTestProduct.swift
21+
Plugins/DefaultPluginScriptRunner.swift
2122
Plugins/PluginContextSerializer.swift
2223
Plugins/PluginInvocation.swift
2324
Plugins/PluginMessages.swift

Sources/Workspace/DefaultPluginScriptRunner.swift renamed to Sources/SPMBuildCore/Plugins/DefaultPluginScriptRunner.swift

-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import Basics
1616
import Foundation
1717
import PackageGraph
1818
import PackageModel
19-
import SPMBuildCore
2019

2120
import struct TSCBasic.ByteString
2221
import struct Basics.AsyncProcessResult

Sources/Workspace/CMakeLists.txt

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
add_library(Workspace
1010
CheckoutState.swift
11-
DefaultPluginScriptRunner.swift
1211
Diagnostics.swift
1312
InitPackage.swift
1413
LoadableResult.swift

Sources/swift-bootstrap/main.swift

+14-8
Original file line numberDiff line numberDiff line change
@@ -314,12 +314,25 @@ struct SwiftBootstrapBuildTool: AsyncParsableCommand {
314314

315315
switch buildSystem {
316316
case .native:
317+
let pluginScriptRunner = DefaultPluginScriptRunner(
318+
fileSystem: self.fileSystem,
319+
cacheDir: scratchDirectory.appending("plugin-cache"),
320+
toolchain: self.hostToolchain,
321+
extraPluginSwiftCFlags: [],
322+
enableSandbox: true,
323+
verboseOutput: self.logLevel <= .info
324+
)
317325
return BuildOperation(
318326
// when building `swift-bootstrap`, host and target build parameters are the same
319327
productsBuildParameters: buildParameters,
320328
toolsBuildParameters: buildParameters,
321329
cacheBuildManifest: false,
322330
packageGraphLoader: asyncUnsafePackageGraphLoader,
331+
pluginConfiguration: .init(
332+
scriptRunner: pluginScriptRunner,
333+
workDirectory: scratchDirectory.appending(component: "plugin-working-directory"),
334+
disableSandbox: false
335+
),
323336
scratchDirectory: scratchDirectory,
324337
// When bootrapping no special trait build configuration is used
325338
traitConfiguration: nil,
@@ -390,14 +403,7 @@ struct SwiftBootstrapBuildTool: AsyncParsableCommand {
390403
},
391404
binaryArtifacts: [:],
392405
fileSystem: fileSystem,
393-
observabilityScope: observabilityScope,
394-
// Plugins can't be used in bootstrap builds, exclude those.
395-
productsFilter: {
396-
$0.type != .plugin
397-
},
398-
modulesFilter: {
399-
$0.type != .plugin
400-
}
406+
observabilityScope: observabilityScope
401407
)
402408
}
403409

0 commit comments

Comments
 (0)