This commit is contained in:
teasiu
2026-04-19 07:27:55 +08:00
parent 734c00f494
commit fe17ca686d
10 changed files with 1572 additions and 1624 deletions

69
build.sh Normal file
View File

@@ -0,0 +1,69 @@
#!/bin/bash
# build.sh - 一键打包脚本
# 在对应架构的机器上执行(或用 Docker 交叉编译,见下方说明)
set -euo pipefail
ARCH=$(uname -m)
OUTPUT_NAME="nas-media-player-${ARCH}"
RELEASES_DIR="./releases"
echo "========================================"
echo " NAS Media Player 打包脚本"
echo " 当前架构: ${ARCH}"
echo "========================================"
# 1. 检查 Python 版本(建议 3.9+
python3 --version
# 2. 创建并激活虚拟环境(隔离,避免污染系统)
echo "[1/5] 创建虚拟环境..."
python3 -m venv .venv-build
source .venv-build/bin/activate
# 3. 安装依赖
echo "[2/5] 安装依赖..."
pip install --upgrade pip -q
pip install \
pyinstaller \
fastapi \
uvicorn[standard] \
aiofiles \
pydantic \
python-multipart \
httptools \
-q
# 4. 执行打包
echo "[3/5] 开始打包 (PyInstaller)..."
pyinstaller nas-media-player.spec \
--clean \
--noconfirm
# 5. 检查产物
BINARY="./dist/nas-media-player"
if [ ! -f "${BINARY}" ]; then
echo "❌ 打包失败!未找到 ${BINARY}"
exit 1
fi
# 6. 重命名并归档
mkdir -p "${RELEASES_DIR}"
cp "${BINARY}" "${RELEASES_DIR}/${OUTPUT_NAME}"
chmod +x "${RELEASES_DIR}/${OUTPUT_NAME}"
# 显示文件大小
SIZE=$(du -sh "${RELEASES_DIR}/${OUTPUT_NAME}" | cut -f1)
echo ""
echo "========================================"
echo "✅ 打包成功!"
echo " 产物路径: ${RELEASES_DIR}/${OUTPUT_NAME}"
echo " 文件大小: ${SIZE}"
echo "========================================"
# 7. 快速验证(不启动服务,只检查 --help
echo "[5/5] 验证二进制可执行..."
"${RELEASES_DIR}/${OUTPUT_NAME}" --help 2>/dev/null || true
echo "验证完成(如无错误输出则正常)"
# 清理虚拟环境
deactivate