Skip to content

Commit

Permalink
set DYLD_LIBRARY_PATH if need
Browse files Browse the repository at this point in the history
  • Loading branch information
omochi committed Jun 10, 2024
1 parent f70a90c commit fb27658
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 13 deletions.
2 changes: 2 additions & 0 deletions Sources/CartonCore/FoundationProcessEx.swift
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,14 @@ extension Foundation.Process {
public static func checkRun(
_ executableURL: URL,
arguments: [String],
environment: [String: String]? = nil,
printsLoadingMessage: Bool = true,
forwardExit: Bool = false
) throws {
let process = Foundation.Process()
process.executableURL = executableURL
process.arguments = arguments
process.environment = environment
try process.checkRun(
printsLoadingMessage: printsLoadingMessage,
forwardExit: forwardExit
Expand Down
22 changes: 17 additions & 5 deletions Sources/CartonDriver/CartonDriverCommand.swift
Original file line number Diff line number Diff line change
Expand Up @@ -135,19 +135,30 @@ func pluginSubcommand(subcommand: String, argv0: String, arguments: [String]) as

let terminal = InteractiveWriter.stdout
let toolchainSystem = try ToolchainSystem(fileSystem: localFileSystem)
let (swiftPath, _) = try await toolchainSystem.inferSwiftPath(terminal)
let swiftPath = try await toolchainSystem.inferSwiftPath(terminal)
let extraArguments = arguments

let swiftExec = URL(fileURLWithPath: swiftPath.pathString)
let swiftExec = URL(fileURLWithPath: swiftPath.swift.pathString)
let pluginArguments = try derivePackageCommandArguments(
swiftExec: swiftExec,
subcommand: subcommand,
scratchPath: scratchPath.path,
extraArguments: extraArguments
)

var env: [String: String] = ProcessInfo.processInfo.environment
if ToolchainSystem.isSnapshotVersion(swiftPath.verison),
swiftPath.toolchain.extension == "xctoolchain"
{
env["DYLD_LIBRARY_PATH"] = swiftPath.toolchain.appending(
components: ["usr", "lib", "swift", "macosx"]
).pathString
}

try Foundation.Process.checkRun(
swiftExec, arguments: pluginArguments,
swiftExec,
arguments: pluginArguments,
environment: env,
forwardExit: true
)
}
Expand Down Expand Up @@ -175,9 +186,10 @@ public func main(arguments: [String]) async throws {
case "package":
let terminal = InteractiveWriter.stdout
let toolchainSystem = try ToolchainSystem(fileSystem: localFileSystem)
let (swiftPath, _) = try await toolchainSystem.inferSwiftPath(terminal)
let swiftPath = try await toolchainSystem.inferSwiftPath(terminal)

try Foundation.Process.checkRun(
URL(fileURLWithPath: swiftPath.pathString),
URL(fileURLWithPath: swiftPath.swift.pathString),
arguments: ["package"] + arguments.dropFirst(),
forwardExit: true
)
Expand Down
4 changes: 3 additions & 1 deletion Sources/CartonHelpers/DefaultToolchain.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#if compiler(>=5.10)
#if compiler(>=6.0)
public let defaultToolchainVersion = "wasm-6.0-SNAPSHOT-2024-06-08-a"
#elseif compiler(>=5.10)
public let defaultToolchainVersion = "wasm-6.0-SNAPSHOT-2024-06-08-a"
#else
public let defaultToolchainVersion = "wasm-5.9.2-RELEASE"
Expand Down
18 changes: 11 additions & 7 deletions Sources/SwiftToolchain/ToolchainManagement.swift
Original file line number Diff line number Diff line change
Expand Up @@ -235,13 +235,19 @@ public class ToolchainSystem {
}
}

public struct SwiftPath {
public var verison: String
public var swift: AbsolutePath
public var toolchain: AbsolutePath
}

/** Infer `swift` binary path matching a given version if any is present, or infer the
version from the `.swift-version` file. If neither version is installed, download it.
*/
public func inferSwiftPath(
from versionSpec: String? = nil,
_ terminal: InteractiveWriter
) async throws -> (AbsolutePath, String) {
) async throws -> SwiftPath {
let specURL = versionSpec.flatMap { (string: String) -> Foundation.URL? in
guard
let url = Foundation.URL(string: string),
Expand All @@ -254,11 +260,9 @@ public class ToolchainSystem {
let swiftVersion = try inferSwiftVersion(from: versionSpec, terminal)

for resolver in resolvers {
if let path = try checkAndLog(
installationPath: resolver.toolchain(for: swiftVersion),
terminal
) {
return (path, swiftVersion)
let toolchain = resolver.toolchain(for: swiftVersion)
if let path = try checkAndLog(installationPath: toolchain, terminal) {
return SwiftPath(verison: swiftVersion, swift: path, toolchain: toolchain)
}
}

Expand Down Expand Up @@ -291,7 +295,7 @@ public class ToolchainSystem {
throw ToolchainError.invalidInstallationArchive(installationPath)
}

return (path, swiftVersion)
return SwiftPath(verison: swiftVersion, swift: path, toolchain: installationPath)
}

public func fetchAllSwiftVersions() throws -> [String] {
Expand Down

0 comments on commit fb27658

Please sign in to comment.