build_qt_exe.sh 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
  4. cd "$ROOT_DIR"
  5. PYTHON_BIN="${PYTHON_BIN:-./.venv/bin/python}"
  6. PYINSTALLER_BIN="${PYINSTALLER_BIN:-./.venv/bin/pyinstaller}"
  7. if [[ ! -x "$PYTHON_BIN" ]]; then
  8. echo "Python executable not found: $PYTHON_BIN" >&2
  9. exit 1
  10. fi
  11. if [[ ! -x "$PYINSTALLER_BIN" ]]; then
  12. echo "PyInstaller executable not found: $PYINSTALLER_BIN" >&2
  13. echo "Install it with: uv pip install --python ./.venv/bin/python pyinstaller" >&2
  14. exit 1
  15. fi
  16. VERSION="$("$PYTHON_BIN" -c "from pathlib import Path; import tomllib; print(tomllib.loads(Path('pyproject.toml').read_text(encoding='utf-8'))['project']['version'])")"
  17. OS_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
  18. ARCH_NAME="$(uname -m)"
  19. VERSIONED_OUTPUT="dist/mlog-tool-qt-v${VERSION}-${OS_NAME}-${ARCH_NAME}"
  20. echo "Building Qt executable with $PYINSTALLER_BIN"
  21. QT_QPA_PLATFORM="${QT_QPA_PLATFORM:-offscreen}" "$PYINSTALLER_BIN" --noconfirm --clean mlog_tool_qt.spec
  22. cp dist/mlog-tool-qt "$VERSIONED_OUTPUT"
  23. echo
  24. echo "Build finished:"
  25. echo " dist/mlog-tool-qt"
  26. echo " $VERSIONED_OUTPUT"