#!/usr/bin/env bash # Launch RefDiffNet demo (lightweight: skip reinstall if deps OK) set -euo pipefail cd "$(dirname "$0")" if [[ -f "${HOME}/anaconda3/etc/profile.d/conda.sh" ]]; then # shellcheck source=/dev/null source "${HOME}/anaconda3/etc/profile.d/conda.sh" conda activate pcb fi PY="${CONDA_PREFIX:-}/bin/python" PIP="${CONDA_PREFIX:-}/bin/pip" SITE="${CONDA_PREFIX:-}/lib/python3.10/site-packages" echo "==> Python: $(which python)" need_numpy_fix() { ! "${PY}" -c "import numpy; assert numpy.__version__.startswith('1.')" 2>/dev/null } fix_numpy() { echo "==> numpy 1.x (torch 2.2)" if ! "${PIP}" install --no-cache-dir --ignore-installed "numpy>=1.23.0,<2" 2>/dev/null; then rm -rf "${SITE}"/numpy "${SITE}"/numpy-*.dist-info 2>/dev/null || true "${PIP}" install --no-cache-dir "numpy>=1.23.0,<2" fi } need_gradio_fix() { ! "${PY}" -c "import gradio_patch; gradio_patch.apply(); import gradio" 2>/dev/null } fix_gradio() { echo "==> gradio 5.23.0 (match HF sdk_version)" "${PIP}" install --no-cache-dir "gradio==5.23.0" } free_port() { local p="$1" if lsof -i:"${p}" -sTCP:LISTEN -t >/dev/null 2>&1; then echo " Stopping process on port ${p}..." kill "$(lsof -t -i:"${p}" -sTCP:LISTEN 2>/dev/null)" 2>/dev/null || true sleep 1 fi } need_numpy_fix && fix_numpy need_gradio_fix && fix_gradio free_port 7860 export PYTHONNOUSERSITE=1 export PREBACKBONE_ONLY_WEIGHTS="${PREBACKBONE_ONLY_WEIGHTS:-weights/prebackbone_a11_ca.pt}" export PRELOAD_MODEL="${PRELOAD_MODEL:-0}" export GRADIO_SHARE="${GRADIO_SHARE:-0}" # Low RAM: PREBACKBONE_DEVICE=cpu bash run.sh echo "==> Starting app (PRELOAD_MODEL=${PRELOAD_MODEL} GRADIO_SHARE=${GRADIO_SHARE})" exec "${PY}" app.py