mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-28 05:12:33 +00:00
## Summary - Bundles the glibc dynamic linker that `sharun` needs inside the Linux AppImage when the post-build AppImage cleanup runs. - Repackages and re-signs AppImage artifacts when the only mutation is adding the missing loader, not just when graphics libraries were stripped. - Keeps the existing Mesa/libdrm/libva stripping behavior intact and adds a release smoke item for the Ubuntu 24.04 `Interpreter not found!` regression. ## Problem - `OpenHuman_0.54.0_amd64.AppImage` can exit immediately on Ubuntu 24.04 with `Interpreter not found!` because the AppImage contains a `sharun` launcher but no `lib/ld-linux-x86-64.so.2`. - The existing post-processing script only repacked when graphics libraries were removed, so it had no guard for a missing `sharun` interpreter. ## Solution - Detect `sharun`-style launchers by checking the extracted AppDir launcher binaries for the `Interpreter not found!` marker. - Resolve the expected loader from the build target architecture and copy it into `squashfs-root/lib/` when missing. - Fail the post-processing step if the AppImage uses `sharun` but the build host cannot provide the required loader. - Track all modified AppImages, whether modified by stripping graphics libs or by adding the loader, so updater tarballs and signatures stay in sync. ## Submission Checklist - [x] Tests added or updated (happy path + at least one failure / edge case) per [Testing Strategy](../gitbooks/developing/testing-strategy.md#failure-path-requirement) — release smoke checklist updated; local function smoke covers loader injection path. - [x] **Diff coverage >= 80%** — N/A: shell release packaging script and docs are not covered by Vitest/cargo diff coverage. - [x] Coverage matrix updated — N/A: release packaging behavior, not a product feature row. - [x] All affected feature IDs from the matrix are listed in the PR description under `## Related` — N/A: no feature matrix row. - [x] No new external network dependencies introduced (mock backend used per [Testing Strategy](../gitbooks/developing/testing-strategy.md#mock-policy)) - [x] Manual smoke checklist updated if this touches release-cut surfaces ([`docs/RELEASE-MANUAL-SMOKE.md`](../docs/RELEASE-MANUAL-SMOKE.md)) - [x] Linked issue closed via `Closes #NNN` in the `## Related` section ## Impact - Linux AppImage release artifacts should launch on clean Ubuntu 24.04 hosts without requiring users to extract the AppImage and manually copy `ld-linux-x86-64.so.2`. - Packaging fails earlier if a future build cannot locate the required loader, preventing a known-broken AppImage from shipping. ## Related - Closes #2297 - Follow-up PR(s)/TODOs: N/A --- ## AI Authored PR Metadata (required for Codex/Linear PRs) ### Linear Issue - Key: N/A - URL: N/A ### Commit & Branch - Branch: `codex/2297-appimage-sharun-loader` - Commit SHA: `4260df24f5355a63df02e748e276586ebed0c53a` ### Validation Run - [x] `pnpm --filter openhuman-app format:check` — N/A: no frontend files changed. - [x] `pnpm typecheck` — N/A: no TypeScript files changed. - [x] Focused tests: Git Bash smoke test for `ensure_sharun_interpreter` copies `ld-linux-x86-64.so.2` into a synthetic sharun AppDir. - [x] Rust fmt/check (if changed): N/A: no Rust files changed. - [x] Tauri fmt/check (if changed): N/A: no Tauri Rust files changed. - [x] Shell syntax/check: `C:\Program Files\Git\bin\bash.exe -n scripts/release/strip-appimage-graphics-libs.sh`; `git diff --check`. ### Validation Blocked - `command:` Full AppImage rebuild and launch on Ubuntu 24.04. - `error:` No produced Linux AppImage artifact is available in this local Windows workspace. - `impact:` CI release packaging will exercise the changed script; manual release smoke checklist now covers the Ubuntu 24.04 launch regression. ### Behavior Changes - Intended behavior change: AppImage post-processing now bundles the missing `sharun` dynamic linker when needed. - User-visible effect: Linux users should no longer hit `Interpreter not found!` on affected AppImages. ### Parity Contract - Legacy behavior preserved: existing graphics-library stripping, re-signing, and updater tarball rebuild behavior remain intact. - Guard/fallback/dispatch parity checks: AppImages unchanged by stripping or loader injection are still left untouched; missing host loader now fails packaging instead of shipping a broken artifact. ### Duplicate / Superseded PR Handling - Duplicate PR(s): N/A - Canonical PR: this PR - Resolution (closed/superseded/updated): N/A <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * AppImages now remove incompatible host graphics libraries and auto-include a missing bundled dynamic loader when needed, preventing "Interpreter not found" failures on clean Ubuntu 24.04 hosts. * **Chores** * Added a smoke-test checklist item to validate AppImage launches on Ubuntu 24.04. * Release tooling now only repacks and re-signs AppImages that were actually modified. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/tinyhumansai/openhuman/pull/2307?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: aqilaziz <gonzes7@gmail.com> Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>