Skip to content

Ubuntu 22.04 AppImage - #13

Open
jpmartins98 wants to merge 2 commits into
sachk:mainfrom
jpmartins98:build-linux-legacy-appimage
Open

Ubuntu 22.04 AppImage#13
jpmartins98 wants to merge 2 commits into
sachk:mainfrom
jpmartins98:build-linux-legacy-appimage

Conversation

@jpmartins98

@jpmartins98 jpmartins98 commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Summary

Add a separately named x86_64 AppImage built and tested against Ubuntu 22.04 and GLIBC 2.35.

Problem

The regular AppImage is built on a newer Ubuntu runner. Native components bundled by PyInstaller can therefore require a GLIBC version unavailable on Ubuntu 22.04 and other still-supported older distributions. In that situation the AppImage fails before the GUI starts.

I encountered this problem personally on Ubuntu 22.04, but it is not device-specific and can affect any user whose distribution provides GLIBC 2.35 rather than the newer build baseline.

Changes

  • Add a dedicated Linux AppImage (x86_64 legacy) job using ubuntu-22.04.
  • Build the application with the same Python 3.11 project and committed uv.lock.
  • Add check_glibc.py to inspect every ELF file in the PyInstaller bundle using readelf --version-info.
  • Fail the build if no ELF files are found, GLIBC requirements cannot be determined, readelf fails, or any component requires a version newer than GLIBC 2.35.
  • Extend the AppImage build script with validated variant suffixes.
  • Publish versioned and stable -legacy.AppImage filenames.
  • Generate SHA-256 files for both names.
  • Run the packaged AppImage with --appimage-extract-and-run --smoke-test before upload.
  • Add artifact size reporting.
  • Document the legacy download, compatibility baseline, and AppImage permissions.
  • Recommend mode 700 for personal downloads and explain why browser downloads normally arrive as 644 or 664.

Why this PR is needed

The legacy artifact restores compatibility without lowering the build environment or dependency versions used by regular packages. Users of newer systems keep the normal AppImage, while older distributions receive an explicitly named and continuously tested artifact.

Relationship with the Node 24 workflow PR

This PR is compatible with, but does not technically depend on, the Node 24 workflow PR. Its new job independently declares the same Node 24-compatible action versions and uses the same committed pyproject.toml and uv.lock.

Merging the Node 24 workflow PR first is recommended because it updates the pre-existing jobs and replaces the deprecated release downloader. Without that PR, the legacy job still builds correctly, but unrelated existing jobs continue producing Node 20 warnings.

The PR is #12

Limitations

A legacy ARM64 AppImage is not included because the current ARM64 Qt dependency requires GLIBC 2.39. Claiming Ubuntu 22.04 compatibility for that artifact would therefore be incorrect.

Validation

  • Branch suite: 116 passed, 2 skipped.
  • GLIBC parser and rejection tests included.
  • The legacy AppImage passed GitHub Actions on Ubuntu 22.04.
  • The published artifact passed an offscreen smoke test on Ubuntu 22.04 with GLIBC 2.35.
  • Combined validation with all proposed PRs: 118 passed, 2 skipped.
  • No merge conflicts with the Node 24 workflow branch.

AI disclosure

This PR and all changes introduced by it, including implementation, tests, workflow code, documentation, investigation, and this description, were generated by OpenAI Codex under the user's direction. The resulting changes were reviewed through source inspection and real build and release validation

@sachk

sachk commented Aug 18, 2026

Copy link
Copy Markdown
Owner

Apologies for the delays in reviewing these PRs, I have been busy with exams, but next week I will have time.

@sachk

sachk commented Aug 18, 2026

Copy link
Copy Markdown
Owner

I will probably supersede this with an AppImage that includes glibc or musl instead so that it is truly platform independent fwiw. Leaving this open for now.

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.

2 participants