@@ -102,12 +102,6 @@ public final class BuildOperation: PackageStructureDelegate, SPMBuildCore.BuildS
102
102
/// Alternative path to search for pkg-config `.pc` files.
103
103
private let pkgConfigDirectories : [ AbsolutePath ]
104
104
105
- /// Map of dependency package identities by root packages that depend on them.
106
- private let dependenciesByRootPackageIdentity : [ PackageIdentity : [ PackageIdentity ] ]
107
-
108
- /// Map of root package identities by target names which are declared in them.
109
- private let rootPackageIdentityByTargetName : [ String : PackageIdentity ]
110
-
111
105
public init (
112
106
productsBuildParameters: BuildParameters ,
113
107
toolsBuildParameters: BuildParameters ,
@@ -117,8 +111,6 @@ public final class BuildOperation: PackageStructureDelegate, SPMBuildCore.BuildS
117
111
scratchDirectory: AbsolutePath ,
118
112
additionalFileRules: [ FileRuleDescription ] ,
119
113
pkgConfigDirectories: [ AbsolutePath ] ,
120
- dependenciesByRootPackageIdentity: [ PackageIdentity : [ PackageIdentity ] ] ,
121
- targetsByRootPackageIdentity: [ PackageIdentity : [ String ] ] ,
122
114
outputStream: OutputByteStream ,
123
115
logLevel: Basics . Diagnostic . Severity ,
124
116
fileSystem: Basics . FileSystem ,
@@ -139,8 +131,6 @@ public final class BuildOperation: PackageStructureDelegate, SPMBuildCore.BuildS
139
131
self . pluginConfiguration = pluginConfiguration
140
132
self . scratchDirectory = scratchDirectory
141
133
self . pkgConfigDirectories = pkgConfigDirectories
142
- self . dependenciesByRootPackageIdentity = dependenciesByRootPackageIdentity
143
- self . rootPackageIdentityByTargetName = ( try ? Dictionary < String , PackageIdentity > ( throwingUniqueKeysWithValues: targetsByRootPackageIdentity. lazy. flatMap { e in e. value. map { ( $0, e. key) } } ) ) ?? [ : ]
144
134
self . outputStream = outputStream
145
135
self . logLevel = logLevel
146
136
self . fileSystem = fileSystem
@@ -260,81 +250,6 @@ public final class BuildOperation: PackageStructureDelegate, SPMBuildCore.BuildS
260
250
}
261
251
}
262
252
263
- private static var didEmitUnexpressedDependencies = false
264
-
265
- private func detectUnexpressedDependencies( ) {
266
- return self . detectUnexpressedDependencies (
267
- // Note: once we switch from the toolchain global metadata, we will have to ensure we can match the right metadata used during the build.
268
- availableLibraries: self . productsBuildParameters. toolchain. providedLibraries,
269
- targetDependencyMap: self . buildDescription. targetDependencyMap
270
- )
271
- }
272
-
273
- // TODO: Currently this function will only match frameworks.
274
- func detectUnexpressedDependencies(
275
- availableLibraries: [ ProvidedLibrary ] ,
276
- targetDependencyMap: [ String : [ String ] ] ?
277
- ) {
278
- // Ensure we only emit these once, regardless of how many builds are being done.
279
- guard !Self. didEmitUnexpressedDependencies else {
280
- return
281
- }
282
- Self . didEmitUnexpressedDependencies = true
283
-
284
- let availableFrameworks = Dictionary < String , PackageIdentity > ( uniqueKeysWithValues: availableLibraries. compactMap {
285
- if let identity = Set ( $0. metadata. identities. map ( \. identity) ) . spm_only {
286
- return ( " \( $0. metadata. productName) .framework " , identity)
287
- } else {
288
- return nil
289
- }
290
- } )
291
-
292
- targetDependencyMap? . keys. forEach { targetName in
293
- let c99name = targetName. spm_mangledToC99ExtendedIdentifier ( )
294
- // Since we're analysing post-facto, we don't know which parameters are the correct ones.
295
- let possibleTempsPaths = [ productsBuildParameters, toolsBuildParameters] . map {
296
- $0. buildPath. appending ( component: " \( c99name) .build " )
297
- }
298
-
299
- let usedSDKDependencies : [ String ] = Set ( possibleTempsPaths) . flatMap { possibleTempsPath in
300
- guard let contents = try ? self . fileSystem. readFileContents (
301
- possibleTempsPath. appending ( component: " \( c99name) .d " )
302
- ) else {
303
- return [ String] ( )
304
- }
305
-
306
- // FIXME: We need a real makefile deps parser here...
307
- let deps = contents. description. split ( whereSeparator: { $0. isWhitespace } )
308
- return deps. filter {
309
- !$0. hasPrefix ( possibleTempsPath. parentDirectory. pathString)
310
- } . compactMap {
311
- try ? AbsolutePath ( validating: String ( $0) )
312
- } . compactMap {
313
- return $0. components. first ( where: { $0. hasSuffix ( " .framework " ) } )
314
- }
315
- }
316
-
317
- let dependencies : [ PackageIdentity ]
318
- if let rootPackageIdentity = self . rootPackageIdentityByTargetName [ targetName] {
319
- dependencies = self . dependenciesByRootPackageIdentity [ rootPackageIdentity] ?? [ ]
320
- } else {
321
- dependencies = [ ]
322
- }
323
-
324
- Set ( usedSDKDependencies) . forEach {
325
- if availableFrameworks. keys. contains ( $0) {
326
- if let availableFrameworkPackageIdentity = availableFrameworks [ $0] , !dependencies. contains (
327
- availableFrameworkPackageIdentity
328
- ) {
329
- observabilityScope. emit (
330
- warning: " target ' \( targetName) ' has an unexpressed depedency on ' \( availableFrameworkPackageIdentity) ' "
331
- )
332
- }
333
- }
334
- }
335
- }
336
- }
337
-
338
253
/// Perform a build using the given build description and subset.
339
254
public func build( subset: BuildSubset ) throws {
340
255
guard !self . productsBuildParameters. shouldSkipBuilding else {
@@ -373,8 +288,6 @@ public final class BuildOperation: PackageStructureDelegate, SPMBuildCore.BuildS
373
288
374
289
let duration = buildStartTime. distance ( to: . now( ) )
375
290
376
- self . detectUnexpressedDependencies ( )
377
-
378
291
let subsetDescriptor : String ?
379
292
switch subset {
380
293
case . product( let productName, _) :
@@ -615,8 +528,6 @@ public final class BuildOperation: PackageStructureDelegate, SPMBuildCore.BuildS
615
528
scratchDirectory: pluginsBuildParameters. dataPath,
616
529
additionalFileRules: self . additionalFileRules,
617
530
pkgConfigDirectories: self . pkgConfigDirectories,
618
- dependenciesByRootPackageIdentity: [ : ] ,
619
- targetsByRootPackageIdentity: [ : ] ,
620
531
outputStream: self . outputStream,
621
532
logLevel: self . logLevel,
622
533
fileSystem: self . fileSystem,
0 commit comments