Skip to content

Commit b191fad

Browse files
MaxDesiatovfurby-tm
authored andcommitted
Include host triple test modules in ResolvedPackage (swiftlang#7493)
Modified `ResolvedModule` build triples were not reflected in `ResolvedPackage`, which excluded those modules from the build graph. Verified manually with `swift-foundation` and `swift-testing` packages. More comprehensive automated tests will be included in a future PR. Resolves swiftlang#7479.
1 parent 551ddeb commit b191fad

File tree

9 files changed

+23
-19
lines changed

9 files changed

+23
-19
lines changed

Sources/Basics/Errors.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ public struct InternalError: Error {
2121
private let description: String
2222
public init(_ description: String) {
2323
assertionFailure(description)
24-
self
25-
.description =
24+
self.description =
2625
"Internal error. Please file a bug at https://github.com/apple/swift-package-manager/issues with this info. \(description)"
2726
}
2827
}

Sources/Build/BuildDescription/SwiftTargetBuildDescription.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,10 @@ package final class SwiftTargetBuildDescription {
6565
/// Path to the bundle generated for this module (if any).
6666
var bundlePath: AbsolutePath? {
6767
if let bundleName = target.underlying.potentialBundleName, needsResourceBundle {
68-
return self.defaultBuildParameters.bundlePath(named: bundleName)
68+
let suffix = self.defaultBuildParameters.suffix(triple: self.target.buildTriple)
69+
return self.defaultBuildParameters.bundlePath(named: bundleName + suffix)
6970
} else {
70-
return .none
71+
return nil
7172
}
7273
}
7374

Sources/Build/BuildManifest/LLBuildManifestBuilder+Resources.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ extension LLBuildManifestBuilder {
4545
outputs.append(output)
4646
}
4747

48-
let cmdName = target.target.getLLBuildResourcesCmdName(config: target.buildParameters.buildConfig)
48+
let cmdName = target.target.getLLBuildResourcesCmdName(buildParameters: target.buildParameters)
4949
self.manifest.addPhonyCmd(name: cmdName, inputs: outputs, outputs: [.virtual(cmdName)])
5050

5151
return .virtual(cmdName)

Sources/Build/BuildManifest/LLBuildManifestBuilder.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -325,8 +325,8 @@ extension ResolvedModule {
325325
"\(self.name)-\(buildParameters.buildConfig)\(buildParameters.suffix(triple: self.buildTriple)).module"
326326
}
327327

328-
package func getLLBuildResourcesCmdName(config: String) -> String {
329-
"\(self.name)-\(config).module-resources"
328+
package func getLLBuildResourcesCmdName(buildParameters: BuildParameters) -> String {
329+
"\(self.name)-\(buildParameters.buildConfig)\(buildParameters.suffix(triple: self.buildTriple)).module-resources"
330330
}
331331
}
332332

Sources/Build/BuildPlan/BuildPlan.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -699,7 +699,7 @@ extension Basics.Diagnostic {
699699
extension BuildParameters {
700700
/// Returns a named bundle's path inside the build directory.
701701
func bundlePath(named name: String) -> AbsolutePath {
702-
buildPath.appending(component: name + self.triple.nsbundleExtension)
702+
self.buildPath.appending(component: name + self.triple.nsbundleExtension)
703703
}
704704
}
705705

Sources/PackageGraph/ModulesGraph+Loading.swift

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,13 +1066,17 @@ private final class ResolvedPackageBuilder: ResolvedBuilder<ResolvedPackage> {
10661066
}
10671067

10681068
override func constructImpl() throws -> ResolvedPackage {
1069-
return ResolvedPackage(
1069+
let products = try self.products.map { try $0.construct() }
1070+
var targets = products.reduce(into: IdentifiableSet()) { $0.formUnion($1.targets) }
1071+
try targets.formUnion(self.targets.map { try $0.construct() })
1072+
1073+
return try ResolvedPackage(
10701074
underlying: self.package,
10711075
defaultLocalization: self.defaultLocalization,
10721076
supportedPlatforms: self.supportedPlatforms,
1073-
dependencies: try self.dependencies.map{ try $0.construct() },
1074-
targets: try self.targets.map{ try $0.construct() },
1075-
products: try self.products.map{ try $0.construct() },
1077+
dependencies: self.dependencies.map{ try $0.construct() },
1078+
targets: targets,
1079+
products: products,
10761080
registryMetadata: self.registryMetadata,
10771081
platformVersionProvider: self.platformVersionProvider
10781082
)

Sources/PackageGraph/Resolution/ResolvedPackage.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public struct ResolvedPackage {
3434
public let underlying: Package
3535

3636
/// The targets contained in the package.
37-
public let targets: [ResolvedModule]
37+
public let targets: IdentifiableSet<ResolvedModule>
3838

3939
/// The products produced by the package.
4040
public let products: [ResolvedProduct]
@@ -58,7 +58,7 @@ public struct ResolvedPackage {
5858
defaultLocalization: String?,
5959
supportedPlatforms: [SupportedPlatform],
6060
dependencies: [ResolvedPackage],
61-
targets: [ResolvedModule],
61+
targets: IdentifiableSet<ResolvedModule>,
6262
products: [ResolvedProduct],
6363
registryMetadata: RegistryReleaseMetadata?,
6464
platformVersionProvider: PlatformVersionProvider

Tests/BuildTests/ClangTargetBuildDescriptionTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ final class ClangTargetBuildDescriptionTests: XCTestCase {
106106
defaultLocalization: nil,
107107
supportedPlatforms: [],
108108
dependencies: [],
109-
targets: [target],
109+
targets: .init([target]),
110110
products: [],
111111
registryMetadata: nil,
112112
platformVersionProvider: .init(implementation: .minimumDeploymentTargetDefault)),

Tests/CommandsTests/PackageCommandTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3054,9 +3054,9 @@ final class PackageCommandTests: CommandsTestCase {
30543054
let execProducts = context.package.products(ofType: ExecutableProduct.self)
30553055
print("execProducts: \\(execProducts.map{ $0.name })")
30563056
let swiftTargets = context.package.targets(ofType: SwiftSourceModuleTarget.self)
3057-
print("swiftTargets: \\(swiftTargets.map{ $0.name })")
3057+
print("swiftTargets: \\(swiftTargets.map{ $0.name }.sorted())")
30583058
let swiftSources = swiftTargets.flatMap{ $0.sourceFiles(withSuffix: ".swift") }
3059-
print("swiftSources: \\(swiftSources.map{ $0.path.lastComponent })")
3059+
print("swiftSources: \\(swiftSources.map{ $0.path.lastComponent }.sorted())")
30603060
30613061
if let target = target.sourceModule {
30623062
print("Module kind of '\\(target.name)': \\(target.kind)")
@@ -3120,8 +3120,8 @@ final class PackageCommandTests: CommandsTestCase {
31203120
do {
31213121
let (stdout, _) = try SwiftPM.Package.execute(["print-target-dependencies", "--target", "FifthTarget"], packagePath: packageDir)
31223122
XCTAssertMatch(stdout, .contains("execProducts: [\"FifthTarget\"]"))
3123-
XCTAssertMatch(stdout, .contains("swiftTargets: [\"ThirdTarget\", \"TestTarget\", \"SecondTarget\", \"FourthTarget\", \"FirstTarget\", \"FifthTarget\"]"))
3124-
XCTAssertMatch(stdout, .contains("swiftSources: [\"library.swift\", \"tests.swift\", \"library.swift\", \"library.swift\", \"library.swift\", \"main.swift\"]"))
3123+
XCTAssertMatch(stdout, .contains("swiftTargets: [\"FifthTarget\", \"FirstTarget\", \"FourthTarget\", \"SecondTarget\", \"TestTarget\", \"ThirdTarget\"]"))
3124+
XCTAssertMatch(stdout, .contains("swiftSources: [\"library.swift\", \"library.swift\", \"library.swift\", \"library.swift\", \"main.swift\", \"tests.swift\"]"))
31253125
XCTAssertMatch(stdout, .contains("Module kind of 'FifthTarget': executable"))
31263126
}
31273127

0 commit comments

Comments
 (0)