Skip to content

Commit e151c80

Browse files
authored
Merge pull request #657 from RuslanLa/main
SKCore: allow non python build servers
2 parents 2c89019 + c94c484 commit e151c80

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

Sources/SKCore/BuildServerBuildSystem.swift

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -117,14 +117,20 @@ public final class BuildServerBuildSystem {
117117
}
118118

119119
private func initializeBuildServer() throws {
120-
guard let interpreter =
121-
lookupExecutablePath(filename: executable("python3"),
122-
searchPaths: searchPaths) ??
123-
lookupExecutablePath(filename: executable("python"),
124-
searchPaths: searchPaths) else {
125-
throw BuildServerTestError.executableNotFound("python3")
120+
var serverPath = AbsolutePath(serverConfig.argv[0], relativeTo: projectRoot)
121+
var flags = Array(serverConfig.argv[1...])
122+
if serverPath.suffix == ".py" {
123+
flags = [serverPath.pathString] + flags
124+
guard let interpreterPath =
125+
lookupExecutablePath(filename: executable("python3"),
126+
searchPaths: searchPaths) ??
127+
lookupExecutablePath(filename: executable("python"),
128+
searchPaths: searchPaths) else {
129+
throw BuildServerTestError.executableNotFound("python3")
130+
}
131+
132+
serverPath = interpreterPath
126133
}
127-
let flags = [AbsolutePath(serverConfig.argv[0], relativeTo: projectRoot).pathString] + Array(serverConfig.argv[1...])
128134
let languages = [
129135
Language.c,
130136
Language.cpp,
@@ -141,7 +147,7 @@ public final class BuildServerBuildSystem {
141147
capabilities: BuildClientCapabilities(languageIds: languages))
142148

143149
let handler = BuildServerHandler()
144-
let buildServer = try makeJSONRPCBuildServer(client: handler, interpreter: interpreter, serverFlags: flags)
150+
let buildServer = try makeJSONRPCBuildServer(client: handler, serverPath: serverPath, serverFlags: flags)
145151
let response = try buildServer.sendSync(initializeRequest)
146152
buildServer.send(InitializedBuildNotification())
147153
log("initialized build server \(response.displayName)")
@@ -306,7 +312,7 @@ struct BuildServerConfig: Codable {
306312
let argv: [String]
307313
}
308314

309-
private func makeJSONRPCBuildServer(client: MessageHandler, interpreter: AbsolutePath, serverFlags: [String]?) throws -> JSONRPCConnection {
315+
private func makeJSONRPCBuildServer(client: MessageHandler, serverPath: AbsolutePath, serverFlags: [String]?) throws -> JSONRPCConnection {
310316
let clientToServer = Pipe()
311317
let serverToClient = Pipe()
312318

@@ -322,7 +328,7 @@ private func makeJSONRPCBuildServer(client: MessageHandler, interpreter: Absolut
322328
withExtendedLifetime((clientToServer, serverToClient)) {}
323329
}
324330
let process = Foundation.Process()
325-
process.executableURL = interpreter.asURL
331+
process.executableURL = serverPath.asURL
326332
process.arguments = serverFlags
327333
process.standardOutput = serverToClient
328334
process.standardInput = clientToServer

0 commit comments

Comments
 (0)