From 70fda247eca313a48d5e64de33510b71fd3a33f6 Mon Sep 17 00:00:00 2001 From: Paulo Mattos Date: Tue, 2 Dec 2025 12:11:17 -0800 Subject: [PATCH] Store the correct package name in PackagePIFBuilder.LinkedPackageBinary --- .../SwiftBuildSupport/PackagePIFBuilder.swift | 31 +++++++++++-------- .../PackagePIFProjectBuilder+Modules.swift | 2 +- .../PackagePIFProjectBuilder+Products.swift | 4 +-- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/Sources/SwiftBuildSupport/PackagePIFBuilder.swift b/Sources/SwiftBuildSupport/PackagePIFBuilder.swift index 53c7a428be8..cf398c2ddfa 100644 --- a/Sources/SwiftBuildSupport/PackagePIFBuilder.swift +++ b/Sources/SwiftBuildSupport/PackagePIFBuilder.swift @@ -26,6 +26,7 @@ import class PackageModel.Product import struct PackageModel.Platform import struct PackageModel.PlatformVersion import struct PackageModel.Resource +import struct PackageModel.PackageIdentity import enum PackageModel.ProductType import struct PackageGraph.ModulesGraph @@ -347,8 +348,8 @@ public final class PackagePIFBuilder { public struct LinkedPackageBinary { public let name: String - public let packageName: String public let type: BinaryType + public let packageIdentity: PackageIdentity @frozen public enum BinaryType { @@ -356,10 +357,16 @@ public final class PackagePIFBuilder { case target } - public init(name: String, packageName: String, type: BinaryType) { - self.name = name - self.packageName = packageName - self.type = type + public init(product: String, packageIdentity: PackageIdentity) { + self.name = product + self.type = .product + self.packageIdentity = packageIdentity + } + + public init(module: String, packageIdentity: PackageIdentity) { + self.name = module + self.type = .target + self.packageIdentity = packageIdentity } } @@ -695,29 +702,27 @@ enum PIFBuildingError: Error { } extension PackagePIFBuilder.LinkedPackageBinary { - init?(module: ResolvedModule, package: ResolvedPackage) { - let packageName = package.manifest.displayName - + init?(module: ResolvedModule) { switch module.type { case .executable, .snippet, .test: - self.init(name: module.name, packageName: packageName, type: .product) + self.init(product: module.name, packageIdentity: module.packageIdentity) case .library, .binary, .macro: - self.init(name: module.name, packageName: packageName, type: .target) + self.init(module: module.name, packageIdentity: module.packageIdentity) case .systemModule, .plugin: return nil } } - init?(dependency: ResolvedModule.Dependency, package: ResolvedPackage) { + init?(dependency: ResolvedModule.Dependency) { switch dependency { case .product(let productDependency, _): guard productDependency.hasSourceTargets else { return nil } - self.init(name: productDependency.name, packageName: package.name, type: .product) + self.init(product: productDependency.name, packageIdentity: productDependency.packageIdentity) case .module(let moduleDependency, _): - self.init(module: moduleDependency, package: package) + self.init(module: moduleDependency) } } } diff --git a/Sources/SwiftBuildSupport/PackagePIFProjectBuilder+Modules.swift b/Sources/SwiftBuildSupport/PackagePIFProjectBuilder+Modules.swift index a36ea1b48f2..acde62e2a2c 100644 --- a/Sources/SwiftBuildSupport/PackagePIFProjectBuilder+Modules.swift +++ b/Sources/SwiftBuildSupport/PackagePIFProjectBuilder+Modules.swift @@ -785,7 +785,7 @@ extension PackagePIFProjectBuilder { // Collect linked binaries. let linkedPackageBinaries: [PackagePIFBuilder.LinkedPackageBinary] = sourceModule.dependencies.compactMap { - PackagePIFBuilder.LinkedPackageBinary(dependency: $0, package: self.package) + PackagePIFBuilder.LinkedPackageBinary(dependency: $0) } let productOrModuleType: PackagePIFBuilder.ModuleOrProductType = if desiredModuleType == .dynamicLibrary { diff --git a/Sources/SwiftBuildSupport/PackagePIFProjectBuilder+Products.swift b/Sources/SwiftBuildSupport/PackagePIFProjectBuilder+Products.swift index e7c75b928d6..ba35884771e 100644 --- a/Sources/SwiftBuildSupport/PackagePIFProjectBuilder+Products.swift +++ b/Sources/SwiftBuildSupport/PackagePIFProjectBuilder+Products.swift @@ -490,7 +490,7 @@ extension PackagePIFProjectBuilder { // Collect linked binaries. let linkedPackageBinaries: [PackagePIFBuilder.LinkedPackageBinary] = mainModule.dependencies.compactMap { - PackagePIFBuilder.LinkedPackageBinary(dependency: $0, package: self.package) + PackagePIFBuilder.LinkedPackageBinary(dependency: $0) } let moduleOrProduct = PackagePIFBuilder.ModuleOrProduct( @@ -844,7 +844,7 @@ extension PackagePIFProjectBuilder { // Collect linked binaries. let linkedPackageBinaries = product.modules.compactMap { - PackagePIFBuilder.LinkedPackageBinary(module: $0, package: self.package) + PackagePIFBuilder.LinkedPackageBinary(module: $0) } let moduleOrProductType: PackagePIFBuilder.ModuleOrProductType = switch product.libraryType {