Some checks failed
farmcontrol/farmcontrol-ui/pipeline/head There was a failure building this commit
90 lines
2.4 KiB
JavaScript
90 lines
2.4 KiB
JavaScript
import { existsSync } from "node:fs";
|
|
import { spawnSync } from "node:child_process";
|
|
import path from "node:path";
|
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
import { getReleaseArch, isBundleCefEnabled } from "./release-artifact-utils.mjs";
|
|
|
|
const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
const electrobunBin = path.join(
|
|
rootDir,
|
|
"node_modules/.bin",
|
|
process.platform === "win32" ? "electrobun.cmd" : "electrobun",
|
|
);
|
|
|
|
const buildEnv = process.env.ELECTROBUN_BUILD_ENV || "stable";
|
|
const hostArch = getReleaseArch(process.arch);
|
|
const targetArch = getReleaseArch(
|
|
process.env.ELECTROBUN_TARGET_ARCH ||
|
|
process.env.ELECTROBUN_FORCE_ARCH ||
|
|
process.arch,
|
|
);
|
|
const bundleCef = isBundleCefEnabled();
|
|
|
|
if (targetArch !== hostArch) {
|
|
console.error(
|
|
`run-electrobun-build: Electrobun 2 builds only for the current host (${hostArch}); cannot target ${targetArch}. Electrobun 2.0.1 does not publish macOS x64 cores.`,
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
if (!existsSync(electrobunBin)) {
|
|
console.error(
|
|
"run-electrobun-build: electrobun CLI not found. Run `bun install`.",
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
const macosEffectsResult = spawnSync(
|
|
"bun",
|
|
[path.join(rootDir, "scripts/build-macos-effects.mjs")],
|
|
{ cwd: rootDir, stdio: "inherit", env: process.env },
|
|
);
|
|
|
|
if (macosEffectsResult.status !== 0) {
|
|
process.exit(macosEffectsResult.status ?? 1);
|
|
}
|
|
|
|
if (process.platform === "darwin") {
|
|
const { validateMacosEffectsDylib, outFile } = await import(
|
|
pathToFileURL(
|
|
path.join(rootDir, "scripts/build-macos-effects.mjs"),
|
|
).href
|
|
);
|
|
|
|
if (!validateMacosEffectsDylib({ dylibPath: outFile })) {
|
|
console.error(
|
|
"run-electrobun-build: macOS window effects dylib is missing or invalid.",
|
|
);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
const env = {
|
|
...process.env,
|
|
ELECTROBUN_BUILD_ENV: buildEnv,
|
|
ELECTROBUN_OS: "macos",
|
|
ELECTROBUN_ARCH: targetArch,
|
|
ELECTROBUN_FORCE_ARCH: targetArch,
|
|
ELECTROBUN_TARGET_ARCH: targetArch,
|
|
NODE_ENV: process.env.NODE_ENV || "production",
|
|
};
|
|
|
|
console.log(
|
|
`run-electrobun-build: env=${buildEnv} os=macos arch=${targetArch} cef=${bundleCef} (host ${hostArch})`,
|
|
);
|
|
|
|
const result = spawnSync(
|
|
electrobunBin,
|
|
["build", `--env=${buildEnv}`],
|
|
{
|
|
cwd: rootDir,
|
|
stdio: "inherit",
|
|
env,
|
|
shell: process.platform === "win32",
|
|
},
|
|
);
|
|
|
|
if (result.status !== 0) {
|
|
process.exit(result.status ?? 1);
|
|
}
|