update
This commit is contained in:
69
build.sh
Normal file
69
build.sh
Normal 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
|
||||
Reference in New Issue
Block a user