Skip to content

Commit 9167479

Browse files
committed
[APIDiff] Control paralellism of api-digester invocations with -j
1 parent e45725d commit 9167479

File tree

3 files changed

+7
-1
lines changed

3 files changed

+7
-1
lines changed

Sources/Commands/APIDigester.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,10 @@ struct APIDigesterBaselineDumper {
138138
// Dump the SDK JSON.
139139
try localFileSystem.createDirectory(baselineDir, recursive: true)
140140
let group = DispatchGroup()
141+
let semaphore = DispatchSemaphore(value: Int(buildParameters.jobs))
141142
let errors = ThreadSafeArrayStore<Swift.Error>()
142143
for module in modulesToDiff {
144+
semaphore.wait()
143145
DispatchQueue.sharedConcurrent.async(group: group) {
144146
do {
145147
try apiDigesterTool.emitAPIBaseline(
@@ -150,6 +152,7 @@ struct APIDigesterBaselineDumper {
150152
} catch {
151153
errors.append(error)
152154
}
155+
semaphore.signal()
153156
}
154157
}
155158
group.wait()

Sources/Commands/SwiftPackageTool.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,7 @@ extension SwiftPackageTool {
344344

345345
let results = ThreadSafeArrayStore<SwiftAPIDigester.ComparisonResult>()
346346
let group = DispatchGroup()
347+
let semaphore = DispatchSemaphore(value: Int(buildOp.buildParameters.jobs))
347348
var skippedModules: Set<String> = []
348349

349350
for module in modulesToDiff {
@@ -353,6 +354,7 @@ extension SwiftPackageTool {
353354
skippedModules.insert(module)
354355
continue
355356
}
357+
semaphore.wait()
356358
DispatchQueue.sharedConcurrent.async(group: group) {
357359
if let comparisonResult = apiDigesterTool.compareAPIToBaseline(
358360
at: moduleBaselinePath,
@@ -361,6 +363,7 @@ extension SwiftPackageTool {
361363
) {
362364
results.append(comparisonResult)
363365
}
366+
semaphore.signal()
364367
}
365368
}
366369

Tests/CommandsTests/APIDiffTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ final class APIDiffTests: XCTestCase {
6565
try localFileSystem.writeFileContents(packageRoot.appending(components: "Sources", "Qux", "Qux.swift")) {
6666
$0 <<< "public class Qux<T, U> { private let x = 1 }"
6767
}
68-
XCTAssertThrowsError(try execute(["experimental-api-diff", "1.2.3"], packagePath: packageRoot)) { error in
68+
XCTAssertThrowsError(try execute(["experimental-api-diff", "1.2.3", "-j", "2"], packagePath: packageRoot)) { error in
6969
guard case SwiftPMProductError.executionFailure(error: _, output: let output, stderr: _) = error else {
7070
XCTFail("Unexpected error")
7171
return

0 commit comments

Comments
 (0)