Skip to content

Commit d1948f5

Browse files
committed
Get search paths only in determineSwiftCompilers
1 parent de56a8f commit d1948f5

File tree

3 files changed

+15
-34
lines changed

3 files changed

+15
-34
lines changed

Sources/Commands/SwiftTool.swift

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -639,10 +639,6 @@ public class SwiftTool {
639639
} catch {
640640
return .failure(error)
641641
}
642-
// Get the search paths from PATH.
643-
let searchPaths = getEnvSearchPaths(
644-
pathString: ProcessEnv.vars["PATH"], currentWorkingDirectory: localFileSystem.currentWorkingDirectory)
645-
646642
// Apply any manual overrides.
647643
if let triple = self.options.customCompileTriple {
648644
destination.target = triple
@@ -656,7 +652,7 @@ public class SwiftTool {
656652
// Set default SDK path when target is WASI whose SDK is embeded
657653
// in Swift toolchain
658654
do {
659-
let compilers = try UserToolchain.determineSwiftCompilers(binDir: destination.binDir, envSearchPaths: searchPaths)
655+
let compilers = try UserToolchain.determineSwiftCompilers(binDir: destination.binDir)
660656
destination.sdk = compilers.compile
661657
.parentDirectory // bin
662658
.parentDirectory // usr
@@ -672,17 +668,13 @@ public class SwiftTool {
672668
return self._hostToolchain
673669
}
674670

675-
return Result(catching: { try UserToolchain(destination: destination, searchPaths: searchPaths) })
671+
return Result(catching: { try UserToolchain(destination: destination) })
676672
}()
677673

678674
/// Lazily compute the host toolchain used to compile the package description.
679675
private lazy var _hostToolchain: Result<UserToolchain, Swift.Error> = {
680-
// Get the search paths from PATH.
681-
let searchPaths = getEnvSearchPaths(
682-
pathString: ProcessEnv.vars["PATH"], currentWorkingDirectory: localFileSystem.currentWorkingDirectory)
683-
return Result(catching: {
684-
try UserToolchain(destination: Destination.hostDestination(
685-
originalWorkingDirectory: self.originalWorkingDirectory), searchPaths: searchPaths)
676+
Result(catching: {
677+
try UserToolchain(destination: .hostDestination(originalWorkingDirectory: self.originalWorkingDirectory))
686678
})
687679
}()
688680

Sources/SPMTestSupport/Resources.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,7 @@ public class Resources: ManifestResourceProvider {
5959
#else
6060
binDir = AbsolutePath(CommandLine.arguments[0], relativeTo: localFileSystem.currentWorkingDirectory!).parentDirectory
6161
#endif
62-
let searchPaths = getEnvSearchPaths(
63-
pathString: ProcessEnv.vars["PATH"], currentWorkingDirectory: localFileSystem.currentWorkingDirectory)
64-
toolchain = try! UserToolchain(destination: Destination.hostDestination(binDir), searchPaths: searchPaths)
62+
toolchain = try! UserToolchain(destination: Destination.hostDestination(binDir))
6563
}
6664

6765
/// True if SwiftPM has PackageDescription 4 runtime available.

Sources/Workspace/UserToolchain.swift

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,6 @@ public final class UserToolchain: Toolchain {
5757
/// The list of archs to build for.
5858
public let archs: [String]
5959

60-
/// Search paths from the PATH environment variable.
61-
let envSearchPaths: [AbsolutePath]
62-
6360
/// Returns the runtime library for the given sanitizer.
6461
public func runtimeLibrary(for sanitizer: Sanitizer) throws -> AbsolutePath {
6562
// FIXME: This is only for SwiftPM development time support. It is OK
@@ -105,14 +102,20 @@ public final class UserToolchain: Toolchain {
105102
public typealias SwiftCompilers = (compile: AbsolutePath, manifest: AbsolutePath)
106103

107104
/// Determines the Swift compiler paths for compilation and manifest parsing.
108-
public static func determineSwiftCompilers(binDir: AbsolutePath, envSearchPaths: [AbsolutePath]) throws -> SwiftCompilers {
105+
public static func determineSwiftCompilers(binDir: AbsolutePath) throws -> SwiftCompilers {
109106
func validateCompiler(at path: AbsolutePath?) throws {
110107
guard let path = path else { return }
111108
guard localFileSystem.isExecutableFile(path) else {
112109
throw InvalidToolchainDiagnostic("could not find the `swiftc\(hostExecutableSuffix)` at expected path \(path)")
113110
}
114111
}
115112

113+
// Get the search paths from PATH.
114+
let searchPaths = getEnvSearchPaths(
115+
pathString: ProcessEnv.path,
116+
currentWorkingDirectory: localFileSystem.currentWorkingDirectory
117+
)
118+
116119
let lookup = { UserToolchain.lookup(variable: $0, searchPaths: envSearchPaths) }
117120
// Get overrides.
118121
let SWIFT_EXEC_MANIFEST = lookup("SWIFT_EXEC_MANIFEST")
@@ -144,9 +147,6 @@ public final class UserToolchain: Toolchain {
144147
return lookupExecutablePath(filename: ProcessEnv.vars[variable], searchPaths: searchPaths)
145148
}
146149

147-
/// Environment to use when looking up tools.
148-
private let processEnvironment: [String: String]
149-
150150
/// Returns the path to clang compiler tool.
151151
public func getClangCompiler() throws -> AbsolutePath {
152152
// Check if we already computed.
@@ -267,25 +267,16 @@ public final class UserToolchain: Toolchain {
267267
+ destination.extraSwiftCFlags
268268
}
269269

270-
public init(destination: Destination, searchPaths: [AbsolutePath], environment: [String: String] = ProcessEnv.vars) throws {
270+
public init(destination: Destination) throws {
271271
self.destination = destination
272-
self.processEnvironment = environment
273-
274-
// Get the search paths from PATH.
275-
let searchPaths = getEnvSearchPaths(
276-
pathString: ProcessEnv.path,
277-
currentWorkingDirectory: localFileSystem.currentWorkingDirectory
278-
) + searchPaths
279-
280-
self.envSearchPaths = searchPaths
281272

282273
// Get the binDir from destination.
283274
let binDir = destination.binDir
284275

285-
let swiftCompilers = try UserToolchain.determineSwiftCompilers(binDir: binDir, envSearchPaths: searchPaths)
276+
let swiftCompilers = try UserToolchain.determineSwiftCompilers(binDir: binDir)
286277
self.swiftCompiler = swiftCompilers.compile
287278
self.archs = destination.archs
288-
279+
289280
// Use the triple from destination or compute the host triple using swiftc.
290281
var triple = destination.target ?? Triple.getHostTriple(usingSwiftCompiler: swiftCompilers.compile)
291282

0 commit comments

Comments
 (0)