Skip to content

Commit df0c23f

Browse files
committed
Merge branch 'maxd/async-swift-build' of github.com:apple/swift-package-manager into maxd/async-build-operation
# Conflicts: # Sources/Commands/SwiftBuildCommand.swift # Sources/swift-build/Entrypoint.swift # Sources/swift-package-manager/SwiftPM.swift
2 parents ea9e940 + bd35a7a commit df0c23f

File tree

72 files changed

+709
-1533
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+709
-1533
lines changed

.swiftpm/xcode/xcshareddata/xcschemes/SwiftPM-Package.xcscheme

Lines changed: 0 additions & 911 deletions
This file was deleted.

Package.swift

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ let package = Package(
416416

417417
.target(
418418
/** Interacts with Swift SDKs used for cross-compilation */
419-
name: "SwiftSDKTool",
419+
name: "SwiftSDKCommand",
420420
dependencies: [
421421
.product(name: "ArgumentParser", package: "swift-argument-parser"),
422422
"Basics",
@@ -429,7 +429,7 @@ let package = Package(
429429

430430
.target(
431431
/** Interacts with package collections */
432-
name: "PackageCollectionsTool",
432+
name: "PackageCollectionsCommand",
433433
dependencies: [
434434
.product(name: "ArgumentParser", package: "swift-argument-parser"),
435435
"Basics",
@@ -442,7 +442,7 @@ let package = Package(
442442

443443
.target(
444444
/** Interact with package registry */
445-
name: "PackageRegistryTool",
445+
name: "PackageRegistryCommand",
446446
dependencies: [
447447
.product(name: "ArgumentParser", package: "swift-argument-parser"),
448448
"Basics",
@@ -488,7 +488,7 @@ let package = Package(
488488
.executableTarget(
489489
/** Interacts with Swift SDKs used for cross-compilation */
490490
name: "swift-experimental-sdk",
491-
dependencies: ["Commands", "SwiftSDKTool"],
491+
dependencies: ["Commands", "SwiftSDKCommand"],
492492
exclude: ["CMakeLists.txt"]
493493
),
494494
.executableTarget(
@@ -506,24 +506,24 @@ let package = Package(
506506
.executableTarget(
507507
/** Interacts with package collections */
508508
name: "swift-package-collection",
509-
dependencies: ["Commands", "PackageCollectionsTool"]
509+
dependencies: ["Commands", "PackageCollectionsCommand"]
510510
),
511511
.executableTarget(
512-
/** Multi-tool entry point for SwiftPM. */
512+
/** Multi-command entry point for SwiftPM. */
513513
name: "swift-package-manager",
514514
dependencies: [
515515
"Basics",
516516
"Commands",
517-
"SwiftSDKTool",
518-
"PackageCollectionsTool",
519-
"PackageRegistryTool"
517+
"SwiftSDKCommand",
518+
"PackageCollectionsCommand",
519+
"PackageRegistryCommand"
520520
],
521521
linkerSettings: swiftpmLinkSettings
522522
),
523523
.executableTarget(
524524
/** Interact with package registry */
525525
name: "swift-package-registry",
526-
dependencies: ["Commands", "PackageRegistryTool"]
526+
dependencies: ["Commands", "PackageRegistryCommand"]
527527
),
528528

529529
// MARK: Support for Swift macros, should eventually move to a plugin-based solution
@@ -681,9 +681,7 @@ package.targets.append(contentsOf: [
681681
.testTarget(
682682
name: "FunctionalPerformanceTests",
683683
dependencies: [
684-
"swift-build",
685-
"swift-package",
686-
"swift-test",
684+
"swift-package-manager",
687685
"SPMTestSupport"
688686
]
689687
),
@@ -695,9 +693,7 @@ if ProcessInfo.processInfo.environment["SWIFTCI_DISABLE_SDK_DEPENDENT_TESTS"] ==
695693
.testTarget(
696694
name: "FunctionalTests",
697695
dependencies: [
698-
"swift-build",
699-
"swift-package",
700-
"swift-test",
696+
"swift-package-manager",
701697
"PackageModel",
702698
"SPMTestSupport"
703699
]
@@ -713,15 +709,12 @@ if ProcessInfo.processInfo.environment["SWIFTCI_DISABLE_SDK_DEPENDENT_TESTS"] ==
713709
.testTarget(
714710
name: "CommandsTests",
715711
dependencies: [
716-
"swift-build",
717-
"swift-package",
718-
"swift-test",
719-
"swift-run",
712+
"swift-package-manager",
720713
"Basics",
721714
"Build",
722715
"Commands",
723716
"PackageModel",
724-
"PackageRegistryTool",
717+
"PackageRegistryCommand",
725718
"SourceControl",
726719
"SPMTestSupport",
727720
"Workspace",

Sources/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,11 @@
99
add_compile_definitions(SKIP_RESOURCE_SUPPORT)
1010
add_compile_definitions(USE_IMPL_ONLY_IMPORTS)
1111

12-
add_subdirectory(SPMSQLite3)
1312
add_subdirectory(Basics)
1413
add_subdirectory(Build)
1514
add_subdirectory(Commands)
1615
add_subdirectory(CompilerPluginSupport)
1716
add_subdirectory(CoreCommands)
18-
add_subdirectory(SwiftSDKTool)
1917
add_subdirectory(DriverSupport)
2018
add_subdirectory(LLBuildManifest)
2119
add_subdirectory(PackageDescription)
@@ -26,14 +24,16 @@ add_subdirectory(PackageModel)
2624
add_subdirectory(PackagePlugin)
2725
add_subdirectory(PackageRegistry)
2826
add_subdirectory(PackageSigning)
29-
add_subdirectory(SPMBuildCore)
30-
add_subdirectory(SPMLLBuild)
3127
add_subdirectory(SourceControl)
3228
add_subdirectory(SourceKitLSPAPI)
29+
add_subdirectory(SPMBuildCore)
30+
add_subdirectory(SPMLLBuild)
31+
add_subdirectory(SPMSQLite3)
3332
add_subdirectory(swift-bootstrap)
3433
add_subdirectory(swift-build)
3534
add_subdirectory(swift-experimental-sdk)
3635
add_subdirectory(swift-package)
3736
add_subdirectory(swift-run)
3837
add_subdirectory(swift-test)
38+
add_subdirectory(SwiftSDKCommand)
3939
add_subdirectory(Workspace)

Sources/Commands/CMakeLists.txt

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,36 @@
77
# See http://swift.org/CONTRIBUTORS.txt for Swift project authors
88

99
add_library(Commands
10-
PackageTools/APIDiff.swift
11-
PackageTools/ArchiveSource.swift
12-
PackageTools/CompletionTool.swift
13-
PackageTools/ComputeChecksum.swift
14-
PackageTools/Config.swift
15-
PackageTools/Describe.swift
16-
PackageTools/DumpCommands.swift
17-
PackageTools/EditCommands.swift
18-
PackageTools/Format.swift
19-
PackageTools/Init.swift
20-
PackageTools/InstalledPackages.swift
21-
PackageTools/Learn.swift
22-
PackageTools/PluginCommand.swift
23-
PackageTools/ResetCommands.swift
24-
PackageTools/Resolve.swift
25-
PackageTools/ShowDependencies.swift
26-
PackageTools/SwiftPackageTool.swift
27-
PackageTools/ToolsVersionCommand.swift
28-
PackageTools/Update.swift
10+
PackageCommands/APIDiff.swift
11+
PackageCommands/ArchiveSource.swift
12+
PackageCommands/CompletionCommand.swift
13+
PackageCommands/ComputeChecksum.swift
14+
PackageCommands/Config.swift
15+
PackageCommands/Describe.swift
16+
PackageCommands/DumpCommands.swift
17+
PackageCommands/EditCommands.swift
18+
PackageCommands/Format.swift
19+
PackageCommands/Init.swift
20+
PackageCommands/InstalledPackages.swift
21+
PackageCommands/Learn.swift
22+
PackageCommands/PluginCommand.swift
23+
PackageCommands/ResetCommands.swift
24+
PackageCommands/Resolve.swift
25+
PackageCommands/ShowDependencies.swift
26+
PackageCommands/SwiftPackageCommand.swift
27+
PackageCommands/ToolsVersionCommand.swift
28+
PackageCommands/Update.swift
2929
Snippets/CardEvent.swift
3030
Snippets/Cards/SnippetCard.swift
3131
Snippets/Cards/SnippetGroupCard.swift
3232
Snippets/Cards/TopCard.swift
3333
Snippets/CardStack.swift
3434
Snippets/Card.swift
3535
Snippets/Colorful.swift
36-
SwiftBuildTool.swift
37-
SwiftRunTool.swift
38-
SwiftTestTool.swift
39-
ToolWorkspaceDelegate.swift
36+
SwiftBuildCommand.swift
37+
SwiftRunCommand.swift
38+
SwiftTestCommand.swift
39+
CommandWorkspaceDelegate.swift
4040
Utilities/APIDigester.swift
4141
Utilities/DependenciesSerializer.swift
4242
Utilities/DescribedPackage.swift

Sources/Commands/ToolWorkspaceDelegate.swift renamed to Sources/Commands/CommandWorkspaceDelegate.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import Workspace
2424
import protocol TSCBasic.OutputByteStream
2525
import struct TSCUtility.Version
2626

27-
class ToolWorkspaceDelegate: WorkspaceDelegate {
27+
final class CommandWorkspaceDelegate: WorkspaceDelegate {
2828
private struct DownloadProgress {
2929
let bytesDownloaded: Int64
3030
let totalBytesToDownload: Int64
@@ -267,7 +267,7 @@ class ToolWorkspaceDelegate: WorkspaceDelegate {
267267
public extension _SwiftCommand {
268268
var workspaceDelegateProvider: WorkspaceDelegateProvider {
269269
return {
270-
ToolWorkspaceDelegate(
270+
CommandWorkspaceDelegate(
271271
observabilityScope: $0,
272272
outputHandler: $1,
273273
progressHandler: $2,

Sources/Commands/PackageTools/APIDiff.swift renamed to Sources/Commands/PackageCommands/APIDiff.swift

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -74,21 +74,21 @@ struct APIDiff: SwiftCommand {
7474
@Flag(help: "Regenerate the API baseline, even if an existing one is available.")
7575
var regenerateBaseline: Bool = false
7676

77-
func run(_ swiftTool: SwiftTool) throws {
78-
let apiDigesterPath = try swiftTool.getTargetToolchain().getSwiftAPIDigester()
79-
let apiDigesterTool = SwiftAPIDigester(fileSystem: swiftTool.fileSystem, tool: apiDigesterPath)
77+
func run(_ swiftCommandState: SwiftCommandState) throws {
78+
let apiDigesterPath = try swiftCommandState.getTargetToolchain().getSwiftAPIDigester()
79+
let apiDigesterTool = SwiftAPIDigester(fileSystem: swiftCommandState.fileSystem, tool: apiDigesterPath)
8080

81-
let packageRoot = try globalOptions.locations.packageDirectory ?? swiftTool.getPackageRoot()
81+
let packageRoot = try globalOptions.locations.packageDirectory ?? swiftCommandState.getPackageRoot()
8282
let repository = GitRepository(path: packageRoot)
8383
let baselineRevision = try repository.resolveRevision(identifier: treeish)
8484

8585
// We turn build manifest caching off because we need the build plan.
86-
let buildSystem = try swiftTool.createBuildSystem(explicitBuildSystem: .native, cacheBuildManifest: false)
86+
let buildSystem = try swiftCommandState.createBuildSystem(explicitBuildSystem: .native, cacheBuildManifest: false)
8787

8888
let packageGraph = try buildSystem.getPackageGraph()
8989
let modulesToDiff = try determineModulesToDiff(
9090
packageGraph: packageGraph,
91-
observabilityScope: swiftTool.observabilityScope
91+
observabilityScope: swiftCommandState.observabilityScope
9292
)
9393

9494
// Build the current package.
@@ -97,19 +97,19 @@ struct APIDiff: SwiftCommand {
9797
// Dump JSON for the baseline package.
9898
let baselineDumper = try APIDigesterBaselineDumper(
9999
baselineRevision: baselineRevision,
100-
packageRoot: swiftTool.getPackageRoot(),
100+
packageRoot: swiftCommandState.getPackageRoot(),
101101
productsBuildParameters: try buildSystem.buildPlan.destinationBuildParameters,
102102
toolsBuildParameters: try buildSystem.buildPlan.toolsBuildParameters,
103103
apiDigesterTool: apiDigesterTool,
104-
observabilityScope: swiftTool.observabilityScope
104+
observabilityScope: swiftCommandState.observabilityScope
105105
)
106106

107107
let baselineDir = try baselineDumper.emitAPIBaseline(
108108
for: modulesToDiff,
109109
at: overrideBaselineDir,
110110
force: regenerateBaseline,
111-
logLevel: swiftTool.logLevel,
112-
swiftTool: swiftTool
111+
logLevel: swiftCommandState.logLevel,
112+
swiftCommandState: swiftCommandState
113113
)
114114

115115
let results = ThreadSafeArrayStore<SwiftAPIDigester.ComparisonResult>()
@@ -119,7 +119,7 @@ struct APIDiff: SwiftCommand {
119119

120120
for module in modulesToDiff {
121121
let moduleBaselinePath = baselineDir.appending("\(module).json")
122-
guard swiftTool.fileSystem.exists(moduleBaselinePath) else {
122+
guard swiftCommandState.fileSystem.exists(moduleBaselinePath) else {
123123
print("\nSkipping \(module) because it does not exist in the baseline")
124124
skippedModules.insert(module)
125125
continue
@@ -136,7 +136,7 @@ struct APIDiff: SwiftCommand {
136136
results.append(comparisonResult)
137137
}
138138
} catch {
139-
swiftTool.observabilityScope.emit(error: "failed to compare API to baseline", underlyingError: error)
139+
swiftCommandState.observabilityScope.emit(error: "failed to compare API to baseline", underlyingError: error)
140140
}
141141
semaphore.signal()
142142
}
@@ -148,11 +148,11 @@ struct APIDiff: SwiftCommand {
148148
.subtracting(skippedModules)
149149
.subtracting(results.map(\.moduleName))
150150
for failedModule in failedModules {
151-
swiftTool.observabilityScope.emit(error: "failed to read API digester output for \(failedModule)")
151+
swiftCommandState.observabilityScope.emit(error: "failed to read API digester output for \(failedModule)")
152152
}
153153

154154
for result in results.get() {
155-
try self.printComparisonResult(result, observabilityScope: swiftTool.observabilityScope)
155+
try self.printComparisonResult(result, observabilityScope: swiftCommandState.observabilityScope)
156156
}
157157

158158
guard failedModules.isEmpty && results.get().allSatisfy(\.hasNoAPIBreakingChanges) else {

Sources/Commands/PackageTools/ArchiveSource.swift renamed to Sources/Commands/PackageCommands/ArchiveSource.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import Basics
1515
import CoreCommands
1616
import SourceControl
1717

18-
extension SwiftPackageTool {
18+
extension SwiftPackageCommand {
1919
struct ArchiveSource: SwiftCommand {
2020
static let configuration = CommandConfiguration(
2121
commandName: "archive-source",
@@ -31,23 +31,23 @@ extension SwiftPackageTool {
3131
)
3232
var output: AbsolutePath?
3333

34-
func run(_ swiftTool: SwiftTool) throws {
35-
let packageDirectory = try globalOptions.locations.packageDirectory ?? swiftTool.getPackageRoot()
34+
func run(_ swiftCommandState: SwiftCommandState) throws {
35+
let packageDirectory = try globalOptions.locations.packageDirectory ?? swiftCommandState.getPackageRoot()
3636

3737
let archivePath: AbsolutePath
3838
if let output {
3939
archivePath = output
4040
} else {
41-
let graph = try swiftTool.loadPackageGraph()
41+
let graph = try swiftCommandState.loadPackageGraph()
4242
let packageName = graph.rootPackages[graph.rootPackages.startIndex].manifest.displayName // TODO: use identity instead?
4343
archivePath = packageDirectory.appending("\(packageName).zip")
4444
}
4545

46-
try SwiftPackageTool.archiveSource(
46+
try SwiftPackageCommand.archiveSource(
4747
at: packageDirectory,
4848
to: archivePath,
4949
fileSystem: localFileSystem,
50-
cancellator: swiftTool.cancellator
50+
cancellator: swiftCommandState.cancellator
5151
)
5252

5353
if archivePath.isDescendantOfOrEqual(to: packageDirectory) {

0 commit comments

Comments
 (0)