Skip to content

Release Project Executables #12

@sjmf

Description

@sjmf

Currently, users must install from source using pip (or package manager of choice). Providng standalone executables would make for easier distribution and installation.

Requirements

  • Build platform-specific binaries
  • Select suitable executable bunder/generator for binary creation
  • Automate builds via GitHub Actions for CI/CD automation of build/release
    • Matrix builds for each platform
  • Use standard Python packaging tools (PyInstaller or similar)
  • Produce downloadable artifacts attached to GitHub releases

Platforms:

  • Windows (x64): .exe installer or standalone executable
  • macOS (x64/ARM64): .app bundle or .dmg
  • Linux (x64): AppImage or .tar.gz with executable

Potential issues

We need to select an installer tool that works with the dependencies of this project.

PyQt5 and system libraries (serial, OpenCV) must be properly bundled. May need platform-specific handling for camera/serial drivers.

There's potential difficulty in distributing with the libraries that have been chosen for this project. See: https://nuitka.net/info/pyqt5.html. We can try Nuitka but given that the app uses threading for video display, this may be problematic.

It looks like PyInstaller can work, though builds the largest and least optimised binaries:

This appears to be a good article regarding executable generator tool selection:
https://sparxeng.com/blog/software/python-standalone-executable-generators-pyinstaller-nuitka-cx-freeze

Build Workflow

  • Trigger on release tags (v*)
  • Matrix build across [windows-latest, macos-latest, ubuntu-latest]
  • Install dependencies including PyQt5
  • Run PyInstaller with spec file
  • Upload artifacts to release

Tasks

  • Create PyInstaller(/Nuitka/CXFreeze) spec file for kvm_serial
  • Test binary builds locally on each platform
  • Create .github/workflows/build-binaries.yml
  • Configure workflow to attach binaries to releases
  • Update README with download/installation instructions for binaries
  • Document build process

On completion of this issue, users should be able to download and run the serial-kvm application without Python installation. Binaries should work on clean systems without additional dependencies, and automated builds should be triggered on version tags by a workflow.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions