Skip to content

Commit fb7e96c

Browse files
authored
motivation: API cleanup towards identity changes (#3234)
chamges: * reorder and rename the parameters of ManifestLoader and make them explicit * reorder and rename the parameters of test utilities related to ManifestLoader * deprecate abstract ManifestBuild and refactor it as ManifestJSONParser which is more true to what it actually does * rename manifest::url to manifest::pacakgeLocation which is more true to its real meaning * adjust call sites note: no funcitonal changes here, API refactoring to make the next step easaier and follow on PRs more focused
1 parent 78e84a9 commit fb7e96c

35 files changed

+662
-610
lines changed

Examples/package-info/Sources/package-info/main.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ let swiftCompiler: AbsolutePath = {
1919

2020
// We need a package to work with.
2121
// This assumes there is one in the current working directory:
22-
let package = localFileSystem.currentWorkingDirectory!
22+
let packagePath = localFileSystem.currentWorkingDirectory!
2323

2424
// LOADING
2525
// =======
@@ -31,9 +31,9 @@ let package = localFileSystem.currentWorkingDirectory!
3131
// There are several levels of information available.
3232
// Each takes longer to load than the level above it, but provides more detail.
3333
let diagnostics = DiagnosticsEngine()
34-
let manifest = try ManifestLoader.loadManifest(packagePath: package, swiftCompiler: swiftCompiler, swiftCompilerFlags: [], packageKind: .local)
35-
let loadedPackage = try PackageBuilder.loadPackage(packagePath: package, swiftCompiler: swiftCompiler, swiftCompilerFlags: [], diagnostics: diagnostics)
36-
let graph = try Workspace.loadGraph(packagePath: package, swiftCompiler: swiftCompiler, swiftCompilerFlags: [], diagnostics: diagnostics)
34+
let manifest = try tsc_await { ManifestLoader.loadManifest(at: packagePath, kind: .local, swiftCompiler: swiftCompiler, swiftCompilerFlags: [], on: .global(), completion: $0) }
35+
let loadedPackage = try tsc_await { PackageBuilder.loadPackage(at: packagePath, swiftCompiler: swiftCompiler, swiftCompilerFlags: [], diagnostics: diagnostics, on: .global(), completion: $0) }
36+
let graph = try Workspace.loadGraph(packagePath: packagePath, swiftCompiler: swiftCompiler, swiftCompilerFlags: [], diagnostics: diagnostics)
3737

3838
// EXAMPLES
3939
// ========

Sources/Commands/show-dependencies.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ private final class PlainTextDumper: DependenciesDumper {
4444

4545
let pkgVersion = package.manifest.version?.description ?? "unspecified"
4646

47-
stream <<< "\(hanger)\(package.name)<\(package.manifest.url)@\(pkgVersion)>\n"
47+
stream <<< "\(hanger)\(package.name)<\(package.manifest.packageLocation)@\(pkgVersion)>\n"
4848

4949
if !package.dependencies.isEmpty {
5050
let replacement = (index == packages.count - 1) ? " " : ""
@@ -85,7 +85,7 @@ private final class DotDumper: DependenciesDumper {
8585
func dump(dependenciesOf rootpkg: ResolvedPackage, on stream: OutputByteStream) {
8686
var nodesAlreadyPrinted: Set<String> = []
8787
func printNode(_ package: ResolvedPackage) {
88-
let url = package.manifest.url
88+
let url = package.manifest.packageLocation
8989
if nodesAlreadyPrinted.contains(url) { return }
9090
let pkgVersion = package.manifest.version?.description ?? "unspecified"
9191
stream <<< #""\#(url)" [label="\#(package.name)\n\#(url)\n\#(pkgVersion)"]"# <<< "\n"
@@ -100,8 +100,8 @@ private final class DotDumper: DependenciesDumper {
100100
func recursiveWalk(rootpkg: ResolvedPackage) {
101101
printNode(rootpkg)
102102
for dependency in rootpkg.dependencies {
103-
let rootURL = rootpkg.manifest.url
104-
let dependencyURL = dependency.manifest.url
103+
let rootURL = rootpkg.manifest.packageLocation
104+
let dependencyURL = dependency.manifest.packageLocation
105105
let urlPair = DependencyURLs(root: rootURL, dependency: dependencyURL)
106106
if dependenciesAlreadyPrinted.contains(urlPair) { continue }
107107

@@ -131,7 +131,7 @@ private final class JSONDumper: DependenciesDumper {
131131
func convert(_ package: ResolvedPackage) -> JSON {
132132
return .orderedDictionary([
133133
"name": .string(package.name),
134-
"url": .string(package.manifest.url),
134+
"url": .string(package.manifest.packageLocation),
135135
"version": .string(package.manifest.version?.description ?? "unspecified"),
136136
"path": .string(package.path.pathString),
137137
"dependencies": .array(package.dependencies.map(convert)),

Sources/PackageGraph/LocalPackageContainer.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,14 @@ public final class LocalPackageContainer: PackageContainer {
4747
// Load the manifest.
4848
// FIXME: this should not block
4949
return try temp_await {
50-
manifestLoader.load(package: AbsolutePath(package.location),
51-
baseURL: package.location,
50+
manifestLoader.load(at: AbsolutePath(package.location),
51+
packageKind: package.kind,
52+
packageLocation: package.location,
5253
version: nil,
54+
revision: nil,
5355
toolsVersion: toolsVersion,
54-
packageKind: package.kind,
5556
fileSystem: fileSystem,
57+
diagnostics: nil,
5658
on: .global(),
5759
completion: $0)
5860
}

Sources/PackageGraph/PackageGraph+Loading.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ extension PackageGraph {
3939
// the URL but that shouldn't be needed after <rdar://problem/33693433>
4040
// Ensure that identity and package name are the same once we have an
4141
// API to specify identity in the manifest file
42-
let manifestMapSequence = (root.manifests + externalManifests).map({ (PackageIdentity(url: $0.url), $0) })
42+
let manifestMapSequence = (root.manifests + externalManifests).map({ (PackageIdentity(url: $0.packageLocation), $0) })
4343
let manifestMap = Dictionary(uniqueKeysWithValues: manifestMapSequence)
4444
let successors: (GraphLoadingNode) -> [GraphLoadingNode] = { node in
4545
node.requiredDependencies().compactMap({ dependency in
@@ -201,7 +201,7 @@ private func createResolvedPackages(
201201
guard let package = manifestToPackage[node.manifest] else {
202202
return nil
203203
}
204-
let isAllowedToVendUnsafeProducts = unsafeAllowedPackages.contains{ $0.location == package.manifest.url }
204+
let isAllowedToVendUnsafeProducts = unsafeAllowedPackages.contains{ $0.location == package.manifest.packageLocation }
205205
return ResolvedPackageBuilder(
206206
package,
207207
productFilter: node.productFilter,
@@ -211,7 +211,7 @@ private func createResolvedPackages(
211211

212212
// Create a map of package builders keyed by the package identity.
213213
let packageMapByIdentity: [PackageIdentity: ResolvedPackageBuilder] = packageBuilders.spm_createDictionary{
214-
let identity = PackageIdentity(url: $0.package.manifest.url)
214+
let identity = PackageIdentity(url: $0.package.manifest.packageLocation)
215215
return (identity, $0)
216216
}
217217
let packageMapByName: [String: ResolvedPackageBuilder] = packageBuilders.spm_createDictionary{ ($0.package.name, $0) }
@@ -235,7 +235,7 @@ private func createResolvedPackages(
235235
let error = PackageGraphError.dependencyAlreadySatisfiedByName(
236236
dependencyPackageName: package.name,
237237
dependencyURL: dependencyURL,
238-
otherDependencyURL: resolvedPackage.package.manifest.url,
238+
otherDependencyURL: resolvedPackage.package.manifest.packageLocation,
239239
name: explicitDependencyName)
240240
let diagnosticLocation = PackageLocation.Local(name: package.name, packagePath: package.path)
241241
return diagnostics.emit(error, location: diagnosticLocation)
@@ -252,7 +252,7 @@ private func createResolvedPackages(
252252
let error = PackageGraphError.dependencyAlreadySatisfiedByIdentifier(
253253
dependencyPackageName: package.name,
254254
dependencyURL: dependencyURL,
255-
otherDependencyURL: resolvedPackage.package.manifest.url,
255+
otherDependencyURL: resolvedPackage.package.manifest.packageLocation,
256256
identity: dependencyIdentity)
257257
let diagnosticLocation = PackageLocation.Local(name: package.name, packagePath: package.path)
258258
return diagnostics.emit(error, location: diagnosticLocation)
@@ -262,11 +262,11 @@ private func createResolvedPackages(
262262
// check if this resolvedPackage url is the same as the dependency one
263263
// if not, this means that the dependencies share the same identity
264264
// FIXME: this works but the way we find out about this is based on a side effect, need to improve it when working on identity
265-
if resolvedPackage.package.manifest.url != dependencyURL {
265+
if resolvedPackage.package.manifest.packageLocation != dependencyURL {
266266
let error = PackageGraphError.dependencyAlreadySatisfiedByIdentifier(
267267
dependencyPackageName: package.name,
268268
dependencyURL: dependencyURL,
269-
otherDependencyURL: resolvedPackage.package.manifest.url,
269+
otherDependencyURL: resolvedPackage.package.manifest.packageLocation,
270270
identity: dependencyIdentity)
271271
let diagnosticLocation = PackageLocation.Local(name: package.name, packagePath: package.path)
272272
return diagnostics.emit(error, location: diagnosticLocation)
@@ -276,7 +276,7 @@ private func createResolvedPackages(
276276
dependencyName: explicitDependencyName,
277277
dependencyURL: dependencyURL,
278278
resolvedPackageName: resolvedPackage.package.name,
279-
resolvedPackageURL: resolvedPackage.package.manifest.url)
279+
resolvedPackageURL: resolvedPackage.package.manifest.packageLocation)
280280
let diagnosticLocation = PackageLocation.Local(name: package.name, packagePath: package.path)
281281
return diagnostics.emit(error, location: diagnosticLocation)
282282
}
@@ -414,7 +414,7 @@ private func createResolvedPackages(
414414
// explicitly reference the package containing the product, or for the product, package and
415415
// dependency to share the same name. We don't check this in manifest loading for root-packages so
416416
// we can provide a more detailed diagnostic here.
417-
let referencedPackageURL = mirrors.effectiveURL(forURL: product.packageBuilder.package.manifest.url)
417+
let referencedPackageURL = mirrors.effectiveURL(forURL: product.packageBuilder.package.manifest.packageLocation)
418418
let referencedPackageIdentity = PackageIdentity(url: referencedPackageURL)
419419
guard let packageDependency = (packageBuilder.package.manifest.dependencies.first { package in
420420
let packageURL = mirrors.effectiveURL(forURL: package.url)

Sources/PackageGraph/PackageGraphRoot.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public struct PackageGraphRoot {
4848
/// Create a package graph root.
4949
public init(input: PackageGraphRootInput, manifests: [Manifest], explicitProduct: String? = nil) {
5050
self.packageRefs = zip(input.packages, manifests).map { (path, manifest) in
51-
let identity = PackageIdentity(url: manifest.url)
51+
let identity = PackageIdentity(url: manifest.packageLocation)
5252
return .root(identity: identity, path: path)
5353
}
5454
self.manifests = manifests

Sources/PackageGraph/RepositoryPackageContainer.swift

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -269,24 +269,26 @@ public class RepositoryPackageContainer: PackageContainer, CustomStringConvertib
269269
private func loadManifest(at revision: Revision, version: Version?) throws -> Manifest {
270270
try self.manifestsCache.memoize(revision) {
271271
let fs = try repository.openFileView(revision: revision)
272-
let packageURL = package.repository.url
272+
let packageLocation = package.repository.url
273273

274274
// Load the tools version.
275275
let toolsVersion = try toolsVersionLoader.load(at: .root, fileSystem: fs)
276276

277277
// Validate the tools version.
278278
try toolsVersion.validateToolsVersion(
279-
self.currentToolsVersion, version: revision.identifier, packagePath: packageURL)
279+
self.currentToolsVersion, version: revision.identifier, packagePath: packageLocation)
280280

281281
// Load the manifest.
282282
// FIXME: this should not block
283283
return try temp_await {
284-
manifestLoader.load(package: AbsolutePath.root,
285-
baseURL: packageURL,
284+
manifestLoader.load(at: AbsolutePath.root,
285+
packageKind: package.kind,
286+
packageLocation: packageLocation,
286287
version: version,
288+
revision: nil,
287289
toolsVersion: toolsVersion,
288-
packageKind: package.kind,
289290
fileSystem: fs,
291+
diagnostics: nil,
290292
on: .global(),
291293
completion: $0)
292294
}

Sources/PackageLoading/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
add_library(PackageLoading
1010
Diagnostics.swift
11-
ManifestBuilder.swift
1211
ManifestLoader.swift
1312
MinimumDeploymentTarget.swift
1413
ModuleMapGenerator.swift

Sources/PackageLoading/ManifestBuilder.swift

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

0 commit comments

Comments
 (0)