HelloSun commited on
Commit
7fa01c3
·
1 Parent(s): 6ed02d2

修正 bootstrap 路徑:HF Space 程式在 /app、HOME 為 /root;補 cmake/build-essential/git

Browse files
Files changed (3) hide show
  1. app.py +6 -3
  2. bootstrap.sh +5 -4
  3. packages.txt +5 -0
app.py CHANGED
@@ -42,6 +42,8 @@ except Exception as _relay_err: # pragma: no cover
42
 
43
  # ──────────────────────────── 全域設定 ────────────────────────────
44
  HOME = os.path.expanduser("~")
 
 
45
  # 檔案瀏覽/下載不設路徑白名單(此服務本身已提供完整終端機權限)。
46
 
47
  # 共用分頁:所有裝置/瀏覽器看到同一組分頁,而且每一頁都是「共用+長存」的 PTY。
@@ -1213,7 +1215,7 @@ BOOTSTRAP_LOG = "/tmp/webterm-bootstrap.log"
1213
  @app.get("/api/bootstrap/status")
1214
  async def api_bootstrap_status():
1215
  """回報環境 bootstrap(s5p / 甲)進度,方便測試與除錯。"""
1216
- s5p_dir = os.path.join(HOME, "app", "s5p")
1217
  pi_cfg = os.path.join(HOME, ".pi", "agent", "models.json")
1218
  log_tail = ""
1219
  try:
@@ -1432,7 +1434,7 @@ async def run_bootstrap_script():
1432
 
1433
  以背景子行程執行,不阻塞 Space 啟動;輸出寫入 /tmp/webterm-bootstrap.log。
1434
  """
1435
- path = os.path.join(HOME, "app", "bootstrap.sh")
1436
  if not os.path.isfile(path):
1437
  log.warning("⚠️ bootstrap.sh 不存在於 %s,跳過", path)
1438
  return False
@@ -2804,9 +2806,10 @@ def _reconcile_tmux():
2804
 
2805
  def _write_shell_launcher():
2806
  """建立 tmux 內 shell 的啟動腳本(保留 PWD 提示,讓上傳功能知道目前目錄)。"""
 
2807
  content = (
2808
  "#!/bin/bash\n"
2809
- "export PATH=\"$HOME/app/s5p:$HOME/app/s5p/oshopencode:$HOME/.local/bin:$PATH\"\n"
2810
  "export PROMPT_COMMAND='echo -ne \"\\033]0;PWD:$PWD\\007\"'\n"
2811
  "exec bash --login\n"
2812
  )
 
42
 
43
  # ──────────────────────────── 全域設定 ────────────────────────────
44
  HOME = os.path.expanduser("~")
45
+ # repo/工作目錄:HF Space 的程式在 /app,但 HOME 可能是 /root,不能假設 $HOME/app。
46
+ REPO_DIR = os.path.dirname(os.path.abspath(__file__))
47
  # 檔案瀏覽/下載不設路徑白名單(此服務本身已提供完整終端機權限)。
48
 
49
  # 共用分頁:所有裝置/瀏覽器看到同一組分頁,而且每一頁都是「共用+長存」的 PTY。
 
1215
  @app.get("/api/bootstrap/status")
1216
  async def api_bootstrap_status():
1217
  """回報環境 bootstrap(s5p / 甲)進度,方便測試與除錯。"""
1218
+ s5p_dir = os.path.join(REPO_DIR, "s5p")
1219
  pi_cfg = os.path.join(HOME, ".pi", "agent", "models.json")
1220
  log_tail = ""
1221
  try:
 
1434
 
1435
  以背景子行程執行,不阻塞 Space 啟動;輸出寫入 /tmp/webterm-bootstrap.log。
1436
  """
1437
+ path = os.path.join(REPO_DIR, "bootstrap.sh")
1438
  if not os.path.isfile(path):
1439
  log.warning("⚠️ bootstrap.sh 不存在於 %s,跳過", path)
1440
  return False
 
2806
 
2807
  def _write_shell_launcher():
2808
  """建立 tmux 內 shell 的啟動腳本(保留 PWD 提示,讓上傳功能知道目前目錄)。"""
2809
+ s5p_dir = os.path.join(REPO_DIR, "s5p")
2810
  content = (
2811
  "#!/bin/bash\n"
2812
+ f"export PATH=\"{s5p_dir}:{s5p_dir}/oshopencode:$HOME/.local/bin:$PATH\"\n"
2813
  "export PROMPT_COMMAND='echo -ne \"\\033]0;PWD:$PWD\\007\"'\n"
2814
  "exec bash --login\n"
2815
  )
bootstrap.sh CHANGED
@@ -12,7 +12,8 @@ mkdir -p "$(dirname "$LOG")" 2>/dev/null || true
12
  exec >>"$LOG" 2>&1
13
 
14
  HOME_DIR="${HOME:-/home/user}"
15
- APP_DIR="$HOME_DIR/app"
 
16
  S5P_DIR="$APP_DIR/s5p"
17
  FLINT_DIR="$HOME_DIR/flint_cpu_opt"
18
  STORAGE_BASE="${S5P_STORAGE_BASE:-https://huggingface.co/spaces/HelloSun/storage/resolve/main}"
@@ -54,14 +55,14 @@ install_s5p() {
54
  chmod +x "$S5P_DIR/oshopencode"/*.sh "$S5P_DIR/oshopencode/oshopencode.py" 2>/dev/null || true
55
 
56
  # 讓 `oshopencode.py` 直接可用(不論 shell 有沒有讀到 rc)。
57
- cat >"$HOME_DIR/.local/bin/oshopencode.py" <<'EOS'
58
  #!/usr/bin/env bash
59
- exec python3 "$HOME/app/s5p/oshopencode.py" "$@"
60
  EOS
61
  chmod +x "$HOME_DIR/.local/bin/oshopencode.py"
62
  ln -sf "$HOME_DIR/.local/bin/oshopencode.py" /usr/local/bin/oshopencode.py 2>/dev/null || true
63
 
64
- local path_line='export PATH="$HOME/app/s5p:$HOME/app/s5p/oshopencode:$HOME/.local/bin:$PATH"'
65
  add_path_line "$HOME_DIR/.bashrc" "$path_line"
66
  add_path_line "$HOME_DIR/.profile" "$path_line"
67
  add_path_line "$HOME_DIR/.bash_profile" "$path_line"
 
12
  exec >>"$LOG" 2>&1
13
 
14
  HOME_DIR="${HOME:-/home/user}"
15
+ # repo/工作目錄 = 這支腳本所在目錄(HF Space 是 /app,不是 $HOME/app)
16
+ APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
17
  S5P_DIR="$APP_DIR/s5p"
18
  FLINT_DIR="$HOME_DIR/flint_cpu_opt"
19
  STORAGE_BASE="${S5P_STORAGE_BASE:-https://huggingface.co/spaces/HelloSun/storage/resolve/main}"
 
55
  chmod +x "$S5P_DIR/oshopencode"/*.sh "$S5P_DIR/oshopencode/oshopencode.py" 2>/dev/null || true
56
 
57
  # 讓 `oshopencode.py` 直接可用(不論 shell 有沒有讀到 rc)。
58
+ cat >"$HOME_DIR/.local/bin/oshopencode.py" <<EOS
59
  #!/usr/bin/env bash
60
+ exec python3 "$S5P_DIR/oshopencode.py" "\$@"
61
  EOS
62
  chmod +x "$HOME_DIR/.local/bin/oshopencode.py"
63
  ln -sf "$HOME_DIR/.local/bin/oshopencode.py" /usr/local/bin/oshopencode.py 2>/dev/null || true
64
 
65
+ local path_line="export PATH=\"$S5P_DIR:$S5P_DIR/oshopencode:$HOME_DIR/.local/bin:\$PATH\""
66
  add_path_line "$HOME_DIR/.bashrc" "$path_line"
67
  add_path_line "$HOME_DIR/.profile" "$path_line"
68
  add_path_line "$HOME_DIR/.bash_profile" "$path_line"
packages.txt CHANGED
@@ -37,3 +37,8 @@ fonts-wqy-zenhei
37
  fonts-tlwg-loma-otf
38
  fonts-freefont-ttf
39
  autocutsel
 
 
 
 
 
 
37
  fonts-tlwg-loma-otf
38
  fonts-freefont-ttf
39
  autocutsel
40
+ cmake
41
+ build-essential
42
+ git
43
+ pkg-config
44
+ libgomp1