Skip to content

Commit caa4fd1

Browse files
authored
dump-pif: Add support for the swift-build PIFBuilder (#9161)
Respect --build-system when dumping PIF, and error if invoked with the native build system
1 parent 7046c68 commit caa4fd1

File tree

5 files changed

+26
-11
lines changed

5 files changed

+26
-11
lines changed

Sources/Build/BuildOperation.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -929,6 +929,10 @@ public final class BuildOperation: PackageStructureDelegate, SPMBuildCore.BuildS
929929
}
930930
return true
931931
}
932+
933+
public func generatePIF(preserveStructure: Bool) async throws -> String {
934+
throw StringError("PIF generation is not applicable to the native build system.")
935+
}
932936
}
933937

934938
public struct PluginConfiguration {

Sources/Commands/PackageCommands/DumpCommands.swift

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -183,13 +183,8 @@ struct DumpPIF: AsyncSwiftCommand {
183183
var preserveStructure: Bool = false
184184

185185
func run(_ swiftCommandState: SwiftCommandState) async throws {
186-
let graph = try await swiftCommandState.loadPackageGraph()
187-
let pif = try PIFBuilder.generatePIF(
188-
buildParameters: swiftCommandState.productsBuildParameters,
189-
packageGraph: graph,
190-
fileSystem: swiftCommandState.fileSystem,
191-
observabilityScope: swiftCommandState.observabilityScope,
192-
preservePIFModelStructure: preserveStructure)
186+
let buildSystem = try await swiftCommandState.createBuildSystem()
187+
let pif = try await buildSystem.generatePIF(preserveStructure: preserveStructure)
193188
print(pif)
194189
}
195190

Sources/SPMBuildCore/BuildSystem/BuildSystem.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ public protocol BuildSystem: Cancellable {
9191
func build(subset: BuildSubset, buildOutputs: [BuildOutput]) async throws -> BuildResult
9292

9393
var hasIntegratedAPIDigesterSupport: Bool { get }
94+
95+
func generatePIF(preserveStructure: Bool) async throws -> String
9496
}
9597

9698
extension BuildSystem {

Sources/SwiftBuildSupport/SwiftBuildSystem.swift

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -991,13 +991,16 @@ public final class SwiftBuildSystem: SPMBuildCore.BuildSystem {
991991
}
992992
}
993993

994-
public func writePIF(buildParameters: BuildParameters) async throws {
995-
let pifBuilder = try await getPIFBuilder()
996-
let pif = try await pifBuilder.generatePIF(
994+
public func generatePIF(preserveStructure: Bool) async throws -> String {
995+
return try await getPIFBuilder().generatePIF(
996+
preservePIFModelStructure: preserveStructure,
997997
printPIFManifestGraphviz: buildParameters.printPIFManifestGraphviz,
998-
buildParameters: buildParameters,
998+
buildParameters: buildParameters
999999
)
1000+
}
10001001

1002+
public func writePIF(buildParameters: BuildParameters) async throws {
1003+
let pif = try await generatePIF(preserveStructure: false)
10011004
try self.fileSystem.writeIfChanged(path: buildParameters.pifManifest, string: pif)
10021005
}
10031006

Sources/XCBuildSupport/XcodeBuildSystem.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,17 @@ public final class XcodeBuildSystem: SPMBuildCore.BuildSystem {
357357
try await packageGraphLoader()
358358
}
359359
}
360+
361+
public func generatePIF(preserveStructure: Bool) async throws -> String {
362+
let graph = try await getPackageGraph()
363+
return try PIFBuilder.generatePIF(
364+
buildParameters: buildParameters,
365+
packageGraph: graph,
366+
fileSystem: fileSystem,
367+
observabilityScope: observabilityScope,
368+
preservePIFModelStructure: preserveStructure
369+
)
370+
}
360371
}
361372

362373
struct XCBBuildParameters: Encodable {

0 commit comments

Comments
 (0)