Skip to content

Commit 8e8016e

Browse files
authored
Merge pull request #2150 from bnbarham/relative-swiftpm-paths
Resolve paths passed in the SwiftPM configuration to the project root
2 parents 188e174 + 385f8ae commit 8e8016e

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

Sources/BuildSystemIntegration/SwiftPMBuildSystem.swift

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -203,18 +203,23 @@ package actor SwiftPMBuildSystem: BuiltInBuildSystem {
203203
throw Error.cannotDetermineHostToolchain
204204
}
205205

206+
var absProjectRoot = try AbsolutePath(validating: projectRoot.filePath)
206207
let hostSDK = try SwiftSDK.hostSwiftSDK(AbsolutePath(validating: destinationToolchainBinDir.filePath))
207208
let hostSwiftPMToolchain = try UserToolchain(swiftSDK: hostSDK)
208209

209210
let destinationSDK = try SwiftSDK.deriveTargetSwiftSDK(
210211
hostSwiftSDK: hostSDK,
211212
hostTriple: hostSwiftPMToolchain.targetTriple,
212-
customToolsets: options.swiftPMOrDefault.toolsets?.map { try AbsolutePath(validating: $0) } ?? [],
213+
customToolsets: options.swiftPMOrDefault.toolsets?.map {
214+
try AbsolutePath(validating: $0, relativeTo: absProjectRoot)
215+
} ?? [],
213216
customCompileTriple: options.swiftPMOrDefault.triple.map { try Triple($0) },
214217
swiftSDKSelector: options.swiftPMOrDefault.swiftSDK,
215218
store: SwiftSDKBundleStore(
216219
swiftSDKsDirectory: localFileSystem.getSharedSwiftSDKsDirectory(
217-
explicitDirectory: options.swiftPMOrDefault.swiftSDKsDirectory.map { try AbsolutePath(validating: $0) }
220+
explicitDirectory: options.swiftPMOrDefault.swiftSDKsDirectory.map {
221+
try AbsolutePath(validating: $0, relativeTo: absProjectRoot)
222+
}
218223
),
219224
fileSystem: localFileSystem,
220225
observabilityScope: observabilitySystem.topScope.makeChildScope(description: "SwiftPM Bundle Store"),
@@ -227,20 +232,14 @@ package actor SwiftPMBuildSystem: BuiltInBuildSystem {
227232
let destinationSwiftPMToolchain = try UserToolchain(swiftSDK: destinationSDK)
228233

229234
var location = try Workspace.Location(
230-
forRootPackage: try AbsolutePath(validating: projectRoot.filePath),
235+
forRootPackage: absProjectRoot,
231236
fileSystem: localFileSystem
232237
)
238+
233239
if options.backgroundIndexingOrDefault {
234-
location.scratchDirectory = try AbsolutePath(
235-
validating: projectRoot.appendingPathComponent(".build").appendingPathComponent("index-build").filePath
236-
)
237-
} else if let scratchDirectory = options.swiftPMOrDefault.scratchPath,
238-
let scratchDirectoryPath = try? AbsolutePath(
239-
validating: scratchDirectory,
240-
relativeTo: AbsolutePath(validating: projectRoot.filePath)
241-
)
242-
{
243-
location.scratchDirectory = scratchDirectoryPath
240+
location.scratchDirectory = absProjectRoot.appending(components: ".build", "index-build")
241+
} else if let scratchDirectory = options.swiftPMOrDefault.scratchPath {
242+
location.scratchDirectory = try AbsolutePath(validating: scratchDirectory, relativeTo: absProjectRoot)
244243
}
245244

246245
var configuration = WorkspaceConfiguration.default

0 commit comments

Comments
 (0)