39918-vm/build_linux.sh
2026-05-06 17:53:23 +00:00

66 lines
1.5 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$ROOT_DIR"
if [[ "$(uname -s)" != "Linux" ]]; then
echo "This script is for Linux only."
exit 1
fi
if ! command -v python3 >/dev/null 2>&1; then
echo "python3 is required"
exit 1
fi
VENV_DIR=".venv-linux-build"
PYTHON_BIN="$VENV_DIR/bin/python"
PYINSTALLER_BIN="$VENV_DIR/bin/pyinstaller"
if [[ ! -x "$PYTHON_BIN" ]]; then
rm -rf "$VENV_DIR"
python3 -m venv "$VENV_DIR"
fi
if [[ ! -x "$PYTHON_BIN" ]]; then
echo "Failed to create virtualenv python at $PYTHON_BIN"
echo "Install the venv package for your distro (example: sudo apt install python3-venv) and rerun."
exit 1
fi
"$PYTHON_BIN" -m ensurepip --upgrade >/dev/null 2>&1 || true
"$PYTHON_BIN" -m pip install --upgrade pip
"$PYTHON_BIN" -m pip install pyinstaller numpy pillow websocket-client
ADD_DATA_ARGS=()
if [[ -f src/icon.png ]]; then
ADD_DATA_ARGS+=(--add-data "src/icon.png:.")
fi
if [[ -f src/icon.ico ]]; then
ADD_DATA_ARGS+=(--add-data "src/icon.ico:.")
fi
if [[ -f src/msd ]]; then
chmod +x src/msd
ADD_DATA_ARGS+=(--add-data "src/msd:.")
else
echo "Warning: src/msd not found. Build will succeed, but MSD will require MSD_BIN_PATH at runtime."
fi
if [[ -f src/msd.exe ]]; then
ADD_DATA_ARGS+=(--add-data "src/msd.exe:.")
fi
"$PYINSTALLER_BIN" \
--noconfirm \
--clean \
--onefile \
--name Daniel-linux \
--collect-all numpy \
--collect-all PIL \
--hidden-import websocket \
"${ADD_DATA_ARGS[@]}" \
src/daniel.py
echo "Build complete: dist/Daniel-linux"