Skip to content

Commit 2d5d41e

Browse files
committed
Remove dependency check from isTargetSuitableForPlatformForIndex
This gets applied pretty inconsistently, only 1 client actually passes the correct dependency information. We ought to be able to rely on the host platform being imposed for the workspace build description, so it shouldn't be necessary.
1 parent b08be46 commit 2d5d41e

File tree

3 files changed

+13
-16
lines changed

3 files changed

+13
-16
lines changed

Sources/SWBCore/DependencyResolution.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -630,11 +630,13 @@ extension SpecializationParameters {
630630
///
631631
/// Note there's an exception for this for host build tools, which are required for compilation
632632
/// and must therefore be configured (and registered as a dependency) regardless
633-
nonisolated func isTargetSuitableForPlatformForIndex(_ target: Target, parameters: BuildParameters, imposedParameters: SpecializationParameters?, dependencies: OrderedSet<ConfiguredTarget>? = nil) -> Bool {
633+
nonisolated func isTargetSuitableForPlatformForIndex(_ target: Target, parameters: BuildParameters, imposedParameters: SpecializationParameters?) -> Bool {
634634
guard buildRequest.buildsIndexWorkspaceDescription else { return true }
635635

636-
// Host tools case, always supported we'll override the parameters with that of the host regardless.
637-
if target.isHostBuildTool || dependencies?.contains(where: { $0.target.isHostBuildTool }) == true {
636+
// Host tools case, always supported since we'll override the parameters with that of the
637+
// host regardless. Any dependencies will have the host platform imposed on them through
638+
// `imposedParameters`.
639+
if target.isHostBuildTool {
638640
return true
639641
}
640642

Sources/SWBCore/LinkageDependencyResolver.swift

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,7 @@ actor LinkageDependencyResolver {
122122
if Task.isCancelled { return }
123123
let configuredTarget = topLevelTargetsToDiscover[i]
124124
let imposedParameters = resolver.specializationParameters(configuredTarget, workspaceContext: workspaceContext, buildRequest: buildRequest, buildRequestContext: buildRequestContext)
125-
let dependenciesOnPath = LinkageDependencies()
126-
await linkageDependencies(for: configuredTarget, imposedParameters: imposedParameters, dependenciesOnPath: dependenciesOnPath)
125+
await linkageDependencies(for: configuredTarget, imposedParameters: imposedParameters)
127126
}
128127
}
129128

@@ -141,7 +140,7 @@ actor LinkageDependencyResolver {
141140
private var dependenciesPerTarget = [ConfiguredTarget: [ResolvedTargetDependency]]()
142141
private var visitedDiscoveredTargets = Set<ConfiguredTarget>()
143142

144-
private func linkageDependencies(for configuredTarget: ConfiguredTarget, imposedParameters: SpecializationParameters?, dependenciesOnPath: LinkageDependencies) async {
143+
private func linkageDependencies(for configuredTarget: ConfiguredTarget, imposedParameters: SpecializationParameters?) async {
145144
// Track that we have visited this target.
146145
let visited = !visitedDiscoveredTargets.insert(configuredTarget).inserted
147146

@@ -167,7 +166,7 @@ actor LinkageDependencyResolver {
167166
return nil
168167
}
169168
let buildParameters = resolver.buildParametersByTarget[target] ?? configuredTarget.parameters
170-
if await !resolver.isTargetSuitableForPlatformForIndex(target, parameters: buildParameters, imposedParameters: imposedParameters, dependencies: dependenciesOnPath.path) {
169+
if await !resolver.isTargetSuitableForPlatformForIndex(target, parameters: buildParameters, imposedParameters: imposedParameters) {
171170
return nil
172171
}
173172
let effectiveImposedParameters = imposedParameters?.effectiveParameters(target: configuredTarget, dependency: ConfiguredTarget(parameters: buildParameters, target: target), dependencyResolver: resolver)
@@ -195,7 +194,7 @@ actor LinkageDependencyResolver {
195194
} else {
196195
imposedParametersForDependency = resolver.specializationParameters(dependency.target, workspaceContext: workspaceContext, buildRequest: buildRequest, buildRequestContext: buildRequestContext)
197196
}
198-
await self.linkageDependencies(for: dependency.target, imposedParameters: imposedParametersForDependency, dependenciesOnPath: dependenciesOnPath)
197+
await self.linkageDependencies(for: dependency.target, imposedParameters: imposedParametersForDependency)
199198
}
200199
}
201200

@@ -657,7 +656,3 @@ private extension Path {
657656
return basenameWithoutSuffix.nilIfEmpty
658657
}
659658
}
660-
661-
fileprivate actor LinkageDependencies {
662-
var path: OrderedSet<ConfiguredTarget> = []
663-
}

Sources/SWBCore/TargetDependencyResolver.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,7 @@ fileprivate extension TargetDependencyResolver {
680680
}
681681

682682
// Add the discovered info.
683-
let discoveredInfo = await computeDiscoveredTargetInfo(for: configuredTarget, imposedParameters: imposedParameters, dependencyPath: nil, resolver: resolver)
683+
let discoveredInfo = await computeDiscoveredTargetInfo(for: configuredTarget, imposedParameters: imposedParameters, resolver: resolver)
684684
discoveredTargets[configuredTarget] = discoveredInfo
685685

686686
// If we have no dependencies, we are done.
@@ -742,7 +742,7 @@ fileprivate extension TargetDependencyResolver {
742742
discoveredInfo = info
743743
} else {
744744
if resolver.makeAggregateTargetsTransparentForSpecialization {
745-
discoveredInfo = await computeDiscoveredTargetInfo(for: configuredTarget, imposedParameters: imposedParameters, dependencyPath: dependencyPath, resolver: resolver)
745+
discoveredInfo = await computeDiscoveredTargetInfo(for: configuredTarget, imposedParameters: imposedParameters, resolver: resolver)
746746
} else {
747747
var immediateDependencies = [ResolvedTargetDependency]()
748748
var packageProductDependencies = [PackageProductTarget]()
@@ -820,14 +820,14 @@ fileprivate extension TargetDependencyResolver {
820820
}
821821

822822
/// Discover the info for a configured target with the given imposed parameters.
823-
private func computeDiscoveredTargetInfo(for configuredTarget: ConfiguredTarget, imposedParameters: SpecializationParameters?, dependencyPath: OrderedSet<ConfiguredTarget>?, resolver: isolated DependencyResolver) async -> DiscoveredTargetInfo {
823+
private func computeDiscoveredTargetInfo(for configuredTarget: ConfiguredTarget, imposedParameters: SpecializationParameters?, resolver: isolated DependencyResolver) async -> DiscoveredTargetInfo {
824824
var immediateDependencies = [ResolvedTargetDependency]()
825825
var packageProductDependencies = [PackageProductTarget]()
826826
for dependency in resolver.explicitDependencies(for: configuredTarget) {
827827
if let asPackageProduct = dependency as? PackageProductTarget {
828828
packageProductDependencies.append(asPackageProduct)
829829
} else {
830-
if !resolver.isTargetSuitableForPlatformForIndex(dependency, parameters: configuredTarget.parameters, imposedParameters: imposedParameters, dependencies: dependencyPath) {
830+
if !resolver.isTargetSuitableForPlatformForIndex(dependency, parameters: configuredTarget.parameters, imposedParameters: imposedParameters) {
831831
continue
832832
}
833833

0 commit comments

Comments
 (0)