#!/bin/bash # 构建后端 sidecar 二进制文件 (PyInstaller) set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" BUILD_DIR="$SCRIPT_DIR/../dist" echo "=== 构建后端 sidecar (PyInstaller) ===" echo "项目根目录: $PROJECT_ROOT" echo "构建输出: $BUILD_DIR" # 清理旧构建 rm -rf "$BUILD_DIR/backend" mkdir -p "$BUILD_DIR/backend" # 获取当前平台 target triple TARGET_TRIPLE=$(rustc -vV 2>/dev/null | grep host | awk '{print $2}') if [ -z "$TARGET_TRIPLE" ]; then # 默认 Apple Silicon TARGET_TRIPLE="aarch64-apple-darwin" fi echo "目标平台: $TARGET_TRIPLE" # 使用 PyInstaller 打包 cd "$PROJECT_ROOT" pyinstaller \ --onefile \ --name "meeting-backend" \ --distpath "$BUILD_DIR/backend" \ --workpath "$BUILD_DIR/backend/build" \ --specpath "$BUILD_DIR/backend" \ --add-data "database.py:." \ --add-data "processor.py:." \ --add-data "audio_utils.py:." \ --hidden-import funasr \ --hidden-import funasr.auto \ --hidden-import soundfile \ --hidden-import pydub \ --hidden-import sqlalchemy \ --hidden-import openai \ --collect-all funasr \ --collect-all torch \ --collect-all torchaudio \ --noconfirm \ main.py # 复制到 Tauri sidecar 目录,加上 target triple 后缀 SIDECAR_DIR="$SCRIPT_DIR/../src-tauri/binaries" mkdir -p "$SIDECAR_DIR" cp "$BUILD_DIR/backend/meeting-backend" "$SIDECAR_DIR/meeting-backend-$TARGET_TRIPLE" chmod +x "$SIDECAR_DIR/meeting-backend-$TARGET_TRIPLE" echo "=== 后端构建完成 ===" echo "Sidecar 二进制: $SIDECAR_DIR/meeting-backend-$TARGET_TRIPLE"