#!/usr/bin/env bash # scripts/install-sox.sh # # Mac/Linux에서 SoX 바이너리를 apps/desktop/resources/sox/로 복사한다. # electron-builder의 extraResources가 이 디렉토리를 번들 대상으로 잡는다. # # 사용법: # # 먼저 시스템에 SoX 설치 # brew install sox # macOS # sudo apt install sox # Ubuntu/Debian # # # 그 다음 이 스크립트 실행 (apps/desktop 기준) # ./scripts/install-sox.sh set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" DESKTOP_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" TARGET_DIR="${DESKTOP_DIR}/resources/sox" OS="$(uname -s)" case "$OS" in Darwin*) PLATFORM="macos" ;; Linux*) PLATFORM="linux" ;; *) echo "Unsupported OS: $OS — Windows는 scripts/download-sox.ps1를 사용하세요." exit 1 ;; esac echo "=== D3RO Voice: SoX 바이너리 번들 (${PLATFORM}) ===" # 시스템 sox/rec 경로 찾기 SOX_BIN="$(command -v sox || true)" REC_BIN="$(command -v rec || true)" if [ -z "$SOX_BIN" ]; then echo "ERROR: 시스템에 sox가 설치되어 있지 않습니다." if [ "$PLATFORM" = "macos" ]; then echo " macOS: brew install sox" else echo " Linux: sudo apt install sox 또는 sudo yum install sox" fi exit 1 fi echo "sox: $SOX_BIN" if [ -n "$REC_BIN" ]; then echo "rec: $REC_BIN" fi # 타겟 디렉토리 준비 mkdir -p "${TARGET_DIR}" echo "target: ${TARGET_DIR}" # 바이너리 복사 cp "$SOX_BIN" "${TARGET_DIR}/sox" chmod +x "${TARGET_DIR}/sox" echo "복사: sox → ${TARGET_DIR}/sox" if [ -n "$REC_BIN" ]; then cp "$REC_BIN" "${TARGET_DIR}/rec" chmod +x "${TARGET_DIR}/rec" echo "복사: rec → ${TARGET_DIR}/rec" fi # 동적 라이브러리 의존성 복사 (macOS만) if [ "$PLATFORM" = "macos" ]; then echo "동적 라이브러리 의존성 복사 중..." # otool로 의존성 확인 후 SoX와 함께 묶음 LIBS=$(otool -L "$SOX_BIN" | awk 'NR>1 && $1 !~ /^\/System\// && $1 !~ /^\/usr\/lib\// {print $1}') for lib in $LIBS; do if [ -f "$lib" ]; then lib_name="$(basename "$lib")" cp "$lib" "${TARGET_DIR}/${lib_name}" chmod +w "${TARGET_DIR}/${lib_name}" echo " lib: ${lib_name}" # rpath를 @loader_path로 변경 (앱 번들 내부에서도 동작하도록) install_name_tool -change "$lib" "@loader_path/${lib_name}" "${TARGET_DIR}/sox" 2>/dev/null || true if [ -n "$REC_BIN" ]; then install_name_tool -change "$lib" "@loader_path/${lib_name}" "${TARGET_DIR}/rec" 2>/dev/null || true fi fi done fi echo "" echo "완료. electron-builder가 이 디렉토리를 extraResources로 번들합니다." ls -lh "${TARGET_DIR}/"