opencode commited on
Commit
38b9550
·
1 Parent(s): 645251f

pi 可用性修正:bootstrap 狀態回報 pi 版本與 Node 版本(pi 1.x 需 Node>=22.19,build.sh 已依 Node 版本選擇 legacy-node20)

Browse files
Files changed (1) hide show
  1. app.py +15 -0
app.py CHANGED
@@ -1272,11 +1272,26 @@ async def api_bootstrap_status():
1272
  llama_ok = r.status_code == 200
1273
  except Exception:
1274
  llama_ok = False
 
 
 
 
 
 
 
 
 
 
 
 
 
1275
  return {
1276
  "s5p_dir": s5p_dir,
1277
  "s5p_installed": os.path.isfile(os.path.join(s5p_dir, "oshopencode.py")),
1278
  "oshopencode_wrapper": shutil.which("oshopencode.py"),
1279
  "pi_config": os.path.isfile(pi_cfg),
 
 
1280
  "llama_server_20000": llama_ok,
1281
  "disk_free_gib": disk_free_gib,
1282
  "bootstrap_log": BOOTSTRAP_LOG,
 
1272
  llama_ok = r.status_code == 200
1273
  except Exception:
1274
  llama_ok = False
1275
+ # pi 是否真的能執行(不只是檔案存在);舊版 Node 20 裝到 pi 1.x 會啟動即崩潰。
1276
+ pi_bin = shutil.which("pi") or os.path.join(HOME, ".local", "bin", "pi")
1277
+ pi_version = None
1278
+ try:
1279
+ proc = await asyncio.create_subprocess_exec(
1280
+ pi_bin, "--version",
1281
+ stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.STDOUT,
1282
+ )
1283
+ out, _ = await asyncio.wait_for(proc.communicate(), timeout=20)
1284
+ if proc.returncode == 0:
1285
+ pi_version = out.decode(errors="replace").strip().splitlines()[0]
1286
+ except Exception:
1287
+ pi_version = None
1288
  return {
1289
  "s5p_dir": s5p_dir,
1290
  "s5p_installed": os.path.isfile(os.path.join(s5p_dir, "oshopencode.py")),
1291
  "oshopencode_wrapper": shutil.which("oshopencode.py"),
1292
  "pi_config": os.path.isfile(pi_cfg),
1293
+ "pi_version": pi_version,
1294
+ "node_version": (await _run("node -v"))[1].strip() or None,
1295
  "llama_server_20000": llama_ok,
1296
  "disk_free_gib": disk_free_gib,
1297
  "bootstrap_log": BOOTSTRAP_LOG,