can1357/oh-my-pi · error · Error
source deps install failed (${runArgv[0]} exit ${r.status})
Error message
source deps install failed (${runArgv[0]} exit ${r.status}) What it means
The runner installs source dependencies into a cached deps dir via a shell script (the package manager command in runArgv). When the spawned process exits non-zero, the stamp file is removed so the install is retried next run, and this error is thrown naming the executable and its exit code. stdout/stderr are inherited, so the real failure reason appears directly above this message in the terminal.
Source
Thrown at packages/metaharness/src/runner.ts:1157
: [
"docker",
"run",
"--rm",
"--platform",
`linux/${arch === "x64" ? "amd64" : "arm64"}`,
"-e",
"HOME=/tmp",
"-v",
`${depsDir}:/deps`,
image,
"sh",
"-c",
script,
];
const r = spawnSync(runArgv[0], runArgv.slice(1), { stdio: ["ignore", "inherit", "inherit"] });
if (r.status !== 0) {
fs.rmSync(stampFile, { force: true });
throw new Error(`source deps install failed (${runArgv[0]} exit ${r.status})`);
}
fs.writeFileSync(stampFile, `${stamp}\n`);
}
if (!fs.existsSync(path.join(depsDir, "node_modules"))) {
throw new Error(`source deps tree has no node_modules (${depsDir}); delete it and retry`);
}
// Shadow-mount every node_modules visible in the host tree (they hold darwin
// binaries) with the skeleton's linux one; both sides of each mount must exist.
const nodeModules = ["node_modules"];
for (const dir of pkgDirs) {
const rel = path.join(dir, "node_modules");
const inHost = fs.existsSync(path.join(REPO_ROOT, rel));
const inDeps = fs.existsSync(path.join(depsDir, rel));
if (!inHost && !inDeps) continue;
if (!inDeps) fs.mkdirSync(path.join(depsDir, rel), { recursive: true });
if (!inHost) fs.mkdirSync(path.join(REPO_ROOT, rel), { recursive: true });
nodeModules.push(rel);
}View on GitHub (pinned to 9690622007)
Solutions
- Scroll up to the inherited output from the install command to see the underlying failure and fix it
- Re-run the install manually in the deps dir to reproduce interactively
- Check network/registry access (corporate proxy, NPM_TOKEN) and retry
- Clear the deps dir entirely so a fresh install is attempted
Example fix
// before: transient registry failure source deps install failed (bun exit 1) // after: retry with network healthy $ bun install --cwd <depsDir> # rerun the harness; stamp regenerates on success
Defensive patterns
Strategy: retry
Validate before calling
const probe = Bun.spawnSync(["bun", "install", "--dry-run"], { cwd: depsDir });
if (probe.exitCode !== 0) throw new Error("deps install would fail; check package.json/lockfile and network first"); Try / catch
try {
await runHarness();
} catch (err) {
if (err instanceof Error && err.message.startsWith("source deps install failed")) {
// stdout/stderr were inherited: inspect the real cause printed above, then retry
console.error("Install subprocess failed; fix the printed cause (network/lockfile) and rerun.");
} else throw err;
} Prevention
- Ensure registry access and auth tokens (NPM_TOKEN) are set in the environment
- Commit a consistent lockfile so installs are reproducible
- Retry once on transient network errors before surfacing failure
- Monitor disk space; full disks fail installs mid-way
When it happens
Trigger: `runArgv[0]` (e.g. bun/npm install script) exits non-zero while populating the source deps tree — network failure during install, unresolved dependency versions, or a broken lockfile/package.json in the skeleton.
Common situations: Offline or proxied network blocking registry access; a dependency added to package.json with no resolvable version; package-manager authentication failures for private registries; disk full during install.
Related errors
- Failed to install runtime at ${runtimeDir} with ${process.ex
- ${argv[0]} exited with code ${exitCode}: ${stderr.trim().sli
- ${argv[0]} printed no URL on stdout
- ${(result.stderr || result.stdout).replace(/\s+/g, " ").trim
- VHS failed to render the gallery screenshot${detail ? `: ${d
AI-assisted analysis of can1357/oh-my-pi@9690622007 (2026-08-31).
Data as JSON: /api/errors/17a0d3f6a193a446.
Report an issue: GitHub.