Skip to content

Commit af38fe0

Browse files
owenvbkhouri
andauthored
[Swift Build] Wire up --jobs (#9367)
Adopt the new API on SWBBuildRequest Depends on #9417 Fixes: #9321 --------- Co-authored-by: Bassam Khouri <bkhouri@apple.com>
1 parent 757bfd3 commit af38fe0

File tree

3 files changed

+47
-3
lines changed

3 files changed

+47
-3
lines changed

Sources/SwiftBuildSupport/SwiftBuildSystem.swift

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -937,16 +937,27 @@ public final class SwiftBuildSystem: SPMBuildCore.BuildSystem {
937937
return params
938938
}
939939

940-
public func makeBuildRequest(session: SWBBuildServiceSession, configuredTargets: [SWBTargetGUID], derivedDataPath: Basics.AbsolutePath, symbolGraphOptions: BuildOutput.SymbolGraphOptions?) async throws -> SWBBuildRequest {
940+
public func makeBuildRequest(
941+
session: SWBBuildServiceSession,
942+
configuredTargets: [SWBTargetGUID],
943+
derivedDataPath: Basics.AbsolutePath,
944+
symbolGraphOptions: BuildOutput.SymbolGraphOptions?,
945+
setToolchainSetting: Bool = true,
946+
) async throws -> SWBBuildRequest {
941947
var request = SWBBuildRequest()
942-
request.parameters = try await makeBuildParameters(session: session, symbolGraphOptions: symbolGraphOptions)
948+
request.parameters = try await makeBuildParameters(
949+
session: session,
950+
symbolGraphOptions: symbolGraphOptions,
951+
setToolchainSetting: setToolchainSetting,
952+
)
943953
request.configuredTargets = configuredTargets.map { SWBConfiguredTarget(guid: $0.rawValue, parameters: request.parameters) }
944954
request.useParallelTargets = true
945955
request.useImplicitDependencies = false
946956
request.useDryRun = false
947957
request.hideShellScriptEnvironment = true
948958
request.showNonLoggedProgress = true
949959
request.recordBuildBacktraces = buildParameters.outputParameters.enableTaskBacktraces
960+
request.schedulerLaneWidthOverride = buildParameters.workers
950961

951962
// Override the arena. We need to apply the arena info to both the request-global build
952963
// parameters as well as the target-specific build parameters, since they may have been

Sources/_InternalTestSupport/MockBuildTestHelper.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public func mockBuildParameters(
9898
enableXCFrameworksOnLinux: Bool = false,
9999
prepareForIndexing: BuildParameters.PrepareForIndexingMode = .off,
100100
sanitizers: [Sanitizer] = [],
101+
numberOfWorkers: UInt32 = 3,
101102
) -> BuildParameters {
102103
try! BuildParameters(
103104
destination: destination,
@@ -108,7 +109,7 @@ public func mockBuildParameters(
108109
flags: flags,
109110
buildSystemKind: buildSystemKind,
110111
pkgConfigDirectories: [],
111-
workers: 3,
112+
workers: numberOfWorkers,
112113
sanitizers: EnabledSanitizers(Set(sanitizers)),
113114
indexStoreMode: indexStoreMode,
114115
prepareForIndexing: prepareForIndexing,

Tests/SwiftBuildSupportTests/SwiftBuildSystemTests.swift

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,4 +350,36 @@ struct SwiftBuildSystemTests {
350350
)
351351
}
352352
}
353+
354+
@Test(
355+
arguments: [
356+
0,
357+
1,
358+
2,
359+
10,
360+
],
361+
)
362+
func numberOfWorkersBuildParameterSetsTheExpectedSwiftBuildRequest(
363+
expectedNumberOfWorkers: UInt32,
364+
) async throws {
365+
try await withTemporaryDirectory { tempDir in
366+
try await withInstantiatedSwiftBuildSystem(
367+
fromFixture: "PIFBuilder/Simple",
368+
buildParameters: mockBuildParameters(
369+
destination: .host,
370+
numberOfWorkers: expectedNumberOfWorkers,
371+
),
372+
) { swiftBuild, session, observabilityScope, buildParameters in
373+
let buildRequest = try await swiftBuild.makeBuildRequest(
374+
session: session,
375+
configuredTargets: [],
376+
derivedDataPath: tempDir,
377+
symbolGraphOptions: nil,
378+
setToolchainSetting: false
379+
)
380+
381+
#expect(buildRequest.schedulerLaneWidthOverride == expectedNumberOfWorkers)
382+
}
383+
}
384+
}
353385
}

0 commit comments

Comments
 (0)