diff --git a/apps/desktop/hak/matrix-seshat/check.ts b/apps/desktop/hak/matrix-seshat/check.ts index a62a239c80..99a107eb5a 100644 --- a/apps/desktop/hak/matrix-seshat/check.ts +++ b/apps/desktop/hak/matrix-seshat/check.ts @@ -14,10 +14,7 @@ import type { Tool } from "../../scripts/hak/hakEnv.ts"; import type { DependencyInfo } from "../../scripts/hak/dep.ts"; export default async function (hakEnv: HakEnv, moduleInfo: DependencyInfo): Promise { - const tools: Tool[] = [ - ["rustc", "--version"], - ["python", "--version"], // node-gyp uses python for reasons beyond comprehension - ]; + const tools: Tool[] = [["rustc", "--version"]]; if (hakEnv.isWin()) { tools.push(["perl", "--version"]); // for openssl configure tools.push(["nasm", "-v"]); // for openssl building @@ -28,6 +25,14 @@ export default async function (hakEnv: HakEnv, moduleInfo: DependencyInfo): Prom } await hakEnv.checkTools(tools); + try { + // node-gyp uses python for reasons beyond comprehension + // Try python3 first, to get a more sensible error if python is not found in the fallback + await hakEnv.checkTools([["python3", "--version"]]); + } catch { + await hakEnv.checkTools([["python", "--version"]]); + } + // Ensure Rust target exists (nb. we avoid depending on rustup) await new Promise((resolve, reject) => { const rustc = childProcess.execFile( diff --git a/apps/desktop/scripts/hak/hakEnv.ts b/apps/desktop/scripts/hak/hakEnv.ts index edab24419b..4ce382dc11 100644 --- a/apps/desktop/scripts/hak/hakEnv.ts +++ b/apps/desktop/scripts/hak/hakEnv.ts @@ -103,6 +103,9 @@ export default class HakEnv { shell: this.isWin(), ...options, }); + proc.on("error", (err) => { + reject(err); + }); proc.on("exit", (code) => { if (code) { reject(code);