Update backend process spawning in Electron by adding error handling for failed process initiation and allow overriding the Python command in the build script for cross-platform compatibility.
Some checks failed
CI / test-backend (push) Successful in 4s
OSV-Scanner Scheduled Scan / scan-scheduled (push) Successful in 10s
CI / lint (push) Successful in 9m42s
CI / build-frontend (push) Successful in 9m49s
CI / test-lang (push) Successful in 9m45s
Tests / test (push) Successful in 13m18s
Build Test / Build and Test (push) Failing after 32m38s
Some checks failed
CI / test-backend (push) Successful in 4s
OSV-Scanner Scheduled Scan / scan-scheduled (push) Successful in 10s
CI / lint (push) Successful in 9m42s
CI / build-frontend (push) Successful in 9m49s
CI / test-lang (push) Successful in 9m45s
Tests / test (push) Successful in 13m18s
Build Test / Build and Test (push) Failing after 32m38s
This commit is contained in:
@@ -539,11 +539,15 @@ app.whenReady().then(async () => {
|
||||
}
|
||||
|
||||
// spawn executable
|
||||
exeChildProcess = await spawn(exe, [
|
||||
exeChildProcess = spawn(exe, [
|
||||
...requiredArguments, // always provide required arguments
|
||||
...userProvidedArguments, // also include any user provided arguments
|
||||
]);
|
||||
|
||||
if (!exeChildProcess || !exeChildProcess.pid) {
|
||||
throw new Error("Failed to start backend process (no PID).");
|
||||
}
|
||||
|
||||
// log stdout
|
||||
var stdoutLines = [];
|
||||
exeChildProcess.stdout.setEncoding("utf8");
|
||||
|
||||
@@ -49,8 +49,11 @@ try {
|
||||
const buildDirRelative = isWin ? "build/exe/win32" : "build/exe/linux";
|
||||
const buildDir = path.join(__dirname, "..", buildDirRelative);
|
||||
|
||||
// Allow overriding the python command (e.g., to use wine python for cross-builds)
|
||||
const pythonCmd = process.env.PYTHON_CMD || "poetry run python";
|
||||
|
||||
console.log(
|
||||
`Building backend for ${platform} (target: ${targetName}, output: ${buildDirRelative}) with cx_Freeze...`
|
||||
`Building backend for ${platform} (target: ${targetName}, output: ${buildDirRelative}) using: ${pythonCmd}`
|
||||
);
|
||||
|
||||
const env = {
|
||||
@@ -58,7 +61,13 @@ try {
|
||||
CX_FREEZE_TARGET_NAME: targetName,
|
||||
CX_FREEZE_BUILD_EXE: buildDirRelative,
|
||||
};
|
||||
const result = spawnSync("poetry", ["run", "python", "cx_setup.py", "build"], {
|
||||
|
||||
// Split pythonCmd to handle arguments like "wine python"
|
||||
const cmdParts = pythonCmd.split(" ");
|
||||
const cmd = cmdParts[0];
|
||||
const args = [...cmdParts.slice(1), "cx_setup.py", "build"];
|
||||
|
||||
const result = spawnSync(cmd, args, {
|
||||
stdio: "inherit",
|
||||
shell: false,
|
||||
env: env,
|
||||
|
||||
Reference in New Issue
Block a user