Skip to content

Commit a52aeb3

Browse files
committed
[ModulesGraph] Avoid re-fetching and sorting packages multiple times
`load` builds a list of packages in topological order already and that's exactly what ModulesGraph wants, let's pass resolved packages to it directly instead of having to re-build the list.
1 parent b6fdae0 commit a52aeb3

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

Sources/PackageGraph/ModulesGraph+Loading.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,6 @@ extension ModulesGraph {
100100
flattenedManifests[node.identity] = node
101101
}
102102
}
103-
// sort by identity
104-
allNodes = flattenedManifests.keys.sorted().map { flattenedManifests[$0]! } // force unwrap fine since we are iterating on keys
105103

106104
// Create the packages.
107105
var manifestToPackage: [Manifest: Package] = [:]
@@ -169,6 +167,7 @@ extension ModulesGraph {
169167
return try ModulesGraph(
170168
rootPackages: rootPackages,
171169
rootDependencies: resolvedPackages.filter { rootDependencies.contains($0.manifest) },
170+
packages: resolvedPackages,
172171
dependencies: requiredDependencies,
173172
binaryArtifacts: binaryArtifacts
174173
)

Sources/PackageGraph/ModulesGraph.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,14 +162,15 @@ public struct ModulesGraph {
162162
public init(
163163
rootPackages: [ResolvedPackage],
164164
rootDependencies: [ResolvedPackage] = [],
165+
packages: [ResolvedPackage],
165166
dependencies requiredDependencies: [PackageReference],
166167
binaryArtifacts: [PackageIdentity: [String: BinaryArtifact]]
167168
) throws {
168169
let rootPackages = IdentifiableSet(rootPackages)
169170
self.requiredDependencies = requiredDependencies
170171
self.inputPackages = rootPackages + rootDependencies
171172
self.binaryArtifacts = binaryArtifacts
172-
self.packages = try topologicalSort(inputPackages, successors: { $0.dependencies })
173+
self.packages = packages
173174
let identitiesToPackages = self.packages.spm_createDictionary { ($0.identity, $0) }
174175

175176
// Create a mapping from targets to the packages that define them. Here

0 commit comments

Comments
 (0)