#!/usr/bin/env bash # 컨테이너 진입점 — scripts/local_env.sh 가 로컬에서 거는 값을 컨테이너에 맞게 건다. set -euo pipefail # 이미지 안 저장소 경로 (Dockerfile WORKSPACE = 호스트와 같은 /home/mm/Downloads/vkgs-sim). 호스트 저장소를 같은 경로에 마운트해도 된다. export VKGS_WORKSPACE="${VKGS_WORKSPACE:-/workspace}" cd "$VKGS_WORKSPACE" 2>/dev/null || true export CCACHE_DIR="$VKGS_WORKSPACE/cache/ccache" mkdir -p "$CCACHE_DIR" "$VKGS_WORKSPACE/outputs" 2>/dev/null || true # nusim 은 이미지에서 editable 설치돼 있다. 없으면(다른 경로에 마운트) 소스에서 바로 쓴다. export PYTHONPATH="$VKGS_WORKSPACE/src/nusim${PYTHONPATH:+:$PYTHONPATH}" if ! command -v nusim >/dev/null && [[ -d "$VKGS_WORKSPACE/src/nusim" ]]; then mkdir -p "$HOME/.local/bin" printf '#!/bin/sh\nexec python -c "from nusim.cli.main import main; import sys; sys.exit(main())" "$@"\n' > "$HOME/.local/bin/nusim" printf '#!/bin/sh\nexec python -c "from nusim.cli.doctor import main; import sys; sys.exit(main())" "$@"\n' > "$HOME/.local/bin/vkgs-doctor" chmod +x "$HOME/.local/bin/nusim" "$HOME/.local/bin/vkgs-doctor" fi export PATH="$HOME/.local/bin:$PATH" # conda 의 Vulkan 로더는 자기 prefix 만 본다 — 컨테이너 툴킷이 넣은 NVIDIA ICD 를 지정한다. for f in /usr/share/vulkan/icd.d/nvidia_icd.json /etc/vulkan/icd.d/nvidia_icd.json; do if [[ -r "$f" ]]; then export VK_DRIVER_FILES="$f" VK_ICD_FILENAMES="$f"; break; fi done [[ -n "${VK_DRIVER_FILES:-}" ]] || echo "[entrypoint] NVIDIA Vulkan ICD 없음 — --gpus all 과 NVIDIA_DRIVER_CAPABILITIES=graphics 확인" >&2 if [[ -n "${DISPLAY:-}" && ! -d /tmp/.X11-unix ]]; then echo "[entrypoint] DISPLAY=${DISPLAY} 인데 /tmp/.X11-unix 가 없다 — 창 뷰어는 안 뜬다 (--offscreen 은 된다)" >&2 fi if [[ "${VKGS_QUIET:-0}" != "1" ]]; then printf '\033[1;36m vkgs-sim\033[0m dev container — %s\n' "$VKGS_WORKSPACE" printf ' 빌드: cmake -S src/vkgs -B build -GNinja && cmake --build build 진단: vkgs-doctor\n\n' fi exec "$@"