Skip to content

Add Linux (Ubuntu) release artifacts: AppImage + .deb - #173

Open
AliRezaTaleghani wants to merge 1 commit into
andrewyng:mainfrom
OpScaleHub:linux-release-artifacts
Open

Add Linux (Ubuntu) release artifacts: AppImage + .deb#173
AliRezaTaleghani wants to merge 1 commit into
andrewyng:mainfrom
OpScaleHub:linux-release-artifacts

Conversation

@AliRezaTaleghani

Copy link
Copy Markdown

Summary

  • Adds packaging/build_linux.sh, mirroring the existing build_dmg.sh / build_windows.ps1 scripts: PyInstaller-bundles the server sidecar, then tauri build --bundles appimage,deb.
  • Wires an ubuntu-latest job into the release.yml build matrix (installs the standard Tauri Linux bundler deps, runs the new script, stages OpenWorker-linux-x64.AppImage / .deb with stable names + updater .sig, same convention as macOS/Windows).
  • Adds the linux-x86_64 updater platform key to packaging/make_update_manifest.py so a release with a signed AppImage gets picked up by the auto-updater.
  • Minor README mentions of the new script/output.

Closes #171.

Test plan

  • bash -n packaging/build_linux.sh
  • python3 -m py_compile packaging/make_update_manifest.py
  • python3 -c "import yaml; yaml.safe_load(open('.github/workflows/release.yml'))"
  • CI run on this PR (ubuntu-latest matrix leg) — the actual AppImage/.deb build, since I don't have a maintainer-signed TAURI_SIGNING_PRIVATE_KEY to test the updater-artifact path locally

Adds packaging/build_linux.sh, mirroring build_dmg.sh/build_windows.ps1
(PyInstaller sidecar bundle -> tauri build --bundles appimage,deb), wires an
ubuntu-latest job into the release matrix, and teaches
make_update_manifest.py the linux-x86_64 updater platform key.

Fixes andrewyng#171
@AliRezaTaleghani

Copy link
Copy Markdown
Author

@andrewyng would u mind to have quick review on this release extention to support Linux (Desktop) friendly artifacts?

@sham72942 sham72942 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR adds Linux release artifacts (AppImage + .deb), mirroring existing mac/windows packaging:
New packaging/build_linux.sh — PyInstaller bundle + tauri build --bundles appimage,deb.
release.yml: adds ubuntu-latest matrix leg, apt deps step, build step, staging block.
make_update_manifest.py: adds linux-x86_64 updater key for signed AppImage.
README mentions.

Clean, well-scoped, follows repo patterns tight.

@totheglory

Copy link
Copy Markdown

wait for linux version.

Nikish-codes added a commit to Nikish-codes/openworker that referenced this pull request Aug 7, 2026
…ce_dir fix

Add native Linux packaging to the release pipeline (currently macOS + Windows
only). Verified end-to-end: builds a working OpenWorker_0.1.7_amd64.deb (79M)
and OpenWorker_0.1.7_amd64.AppImage (157M); backend suite 1114 passed / 1
skipped, GUI unit 108 passed, cargo warning-clean.

Supersedes andrewyng#173 (same goal, approved but stalled). Two correctness gaps in andrewyng#173
that this addresses:

  1. Runtime sidecar resolution — andrewyng#173 bundles but does NOT fix server_bin(),
     so on a .deb install the app cannot find its sidecar: macOS/Windows
     resolve it next to the binary, but a .deb puts the binary in /usr/bin and
     resources under /usr/lib/OpenWorker/ (Tauri's resource_dir()). Without the
     fix the build is green but the app hangs on "Starting coworker…".
     Fixed: server_bin(app) resolves via app.path().resource_dir() on Linux
     (#[cfg(target_os = "linux")]); macOS/Windows paths unchanged. Verified
     against the deb's contents (sidecar at usr/lib/OpenWorker/sidecar/).

  2. Build deps — andrewyng#173 omits libasound2-dev (cpal/ALSA) and libclang-dev
     (whisper-rs bindgen), so the STT sidecar crate fails to compile in CI,
     and uses the deprecated libappindicator3-dev. This uses the ayatana
     successor and includes the STT build deps.

Changes:
- packaging/build_linux.sh: PyInstaller sidecar -> stage at binaries/sidecar ->
  tauri build --bundles deb,appimage. Unsigned; BUNDLES= overrides targets.
- packaging/install_linux_deps.sh: distro-aware installer (Debian/Fedora/Arch)
  for the Tauri webkit GUI + ocw-stt (cpal/ALSA, whisper.cpp, libclang) libs.
- src-tauri/src/lib.rs: server_bin() takes AppHandle and resolves the sidecar
  via resource_dir() on Linux; silence an unused_mut on non-macOS (the window
  builder is mut only inside the macOS title-bar cfg block).
- .github/workflows/release.yml: ubuntu-22.04 matrix leg (stable glibc for
  broad compat), Linux deps step, build step, deb/AppImage staging, and a
  regression guard that fails CI if the deb ships without the sidecar at
  usr/lib/OpenWorker/sidecar/ (prevents the andrewyng#173 bug class recurring).
- packaging/make_update_manifest.py: register OpenWorker-linux-amd64.deb as
  the linux-x86_64 updater target.
- README: "Build a Linux package" section + packaging table entry.

Notes:
- Voice Input is marked unsupported on Linux for now (the STT crate compiles
  on Linux, but the shell's compatibility gate is conservative by design);
  wiring a Linux audio backend is a natural follow-up, kept out of scope here.
- Built on ubuntu-22.04 (glibc 2.35) so the artifacts run on 22.04+ and most
  derivatives. aarch64 is a follow-up (andrewyng#218 covers Linux arm64 test CI).
- Unsigned: Linux has no universal code-signing scheme; auto-update artifacts
  emit only when TAURI_SIGNING_PRIVATE_KEY is set, same as the other targets.

Refs: andrewyng#173 (supersedes), andrewyng#19, andrewyng#78, andrewyng#218. Demand: andrewyng#232 andrewyng#171 andrewyng#117 andrewyng#414 andrewyng#80.
@niutech

niutech commented Aug 20, 2026

Copy link
Copy Markdown

This PR has been superseded by PR #470.

niutech added a commit to niutech/openworker-next that referenced this pull request Aug 20, 2026
…ce_dir fix (#1)

Add native Linux packaging to the release pipeline (currently macOS + Windows
only). Verified end-to-end: builds a working OpenWorker_0.1.7_amd64.deb (79M)
and OpenWorker_0.1.7_amd64.AppImage (157M); backend suite 1114 passed / 1
skipped, GUI unit 108 passed, cargo warning-clean.

Supersedes andrewyng#173 (same goal, approved but stalled). Two correctness gaps in andrewyng#173
that this addresses:

  1. Runtime sidecar resolution — andrewyng#173 bundles but does NOT fix server_bin(),
     so on a .deb install the app cannot find its sidecar: macOS/Windows
     resolve it next to the binary, but a .deb puts the binary in /usr/bin and
     resources under /usr/lib/OpenWorker/ (Tauri's resource_dir()). Without the
     fix the build is green but the app hangs on "Starting coworker…".
     Fixed: server_bin(app) resolves via app.path().resource_dir() on Linux
     (#[cfg(target_os = "linux")]); macOS/Windows paths unchanged. Verified
     against the deb's contents (sidecar at usr/lib/OpenWorker/sidecar/).

  2. Build deps — andrewyng#173 omits libasound2-dev (cpal/ALSA) and libclang-dev
     (whisper-rs bindgen), so the STT sidecar crate fails to compile in CI,
     and uses the deprecated libappindicator3-dev. This uses the ayatana
     successor and includes the STT build deps.

Changes:
- packaging/build_linux.sh: PyInstaller sidecar -> stage at binaries/sidecar ->
  tauri build --bundles deb,appimage. Unsigned; BUNDLES= overrides targets.
- packaging/install_linux_deps.sh: distro-aware installer (Debian/Fedora/Arch)
  for the Tauri webkit GUI + ocw-stt (cpal/ALSA, whisper.cpp, libclang) libs.
- src-tauri/src/lib.rs: server_bin() takes AppHandle and resolves the sidecar
  via resource_dir() on Linux; silence an unused_mut on non-macOS (the window
  builder is mut only inside the macOS title-bar cfg block).
- .github/workflows/release.yml: ubuntu-22.04 matrix leg (stable glibc for
  broad compat), Linux deps step, build step, deb/AppImage staging, and a
  regression guard that fails CI if the deb ships without the sidecar at
  usr/lib/OpenWorker/sidecar/ (prevents the andrewyng#173 bug class recurring).
- packaging/make_update_manifest.py: register OpenWorker-linux-amd64.deb as
  the linux-x86_64 updater target.
- README: "Build a Linux package" section + packaging table entry.

Notes:
- Voice Input is marked unsupported on Linux for now (the STT crate compiles
  on Linux, but the shell's compatibility gate is conservative by design);
  wiring a Linux audio backend is a natural follow-up, kept out of scope here.
- Built on ubuntu-22.04 (glibc 2.35) so the artifacts run on 22.04+ and most
  derivatives. aarch64 is a follow-up (andrewyng#218 covers Linux arm64 test CI).
- Unsigned: Linux has no universal code-signing scheme; auto-update artifacts
  emit only when TAURI_SIGNING_PRIVATE_KEY is set, same as the other targets.

Refs: andrewyng#173 (supersedes), andrewyng#19, andrewyng#78, andrewyng#218. Demand: andrewyng#232 andrewyng#171 andrewyng#117 andrewyng#414 andrewyng#80.

Co-authored-by: Nikish <notnikish@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Linux x64 Build Support to Release Pipeline (Ubuntu 24.04/26.04)

4 participants