Skip to content

AppImage revival - #827

Draft
soredake wants to merge 43 commits into
Syncplay:masterfrom
soredake:modern-appimage
Draft

soredake wants to merge 43 commits into
Syncplay:masterfrom
soredake:modern-appimage

Conversation

@soredake

@soredake soredake commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

mindstormjak and others added 30 commits October 30, 2026 15:08
- Use uv for package management during development
- Update the qt.py bindings
- Replace packaging with pyinstaller
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use the Windows Vista style with PySide6 on Windows.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
soredake and others added 3 commits November 6, 2026 12:23
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@soredake
soredake marked this pull request as draft November 6, 2026 10:52
ci/appimage-script.sh now builds two AppImage variants using the
official linuxdeploy:
- appimage-2.0 (fuse2) for Ubuntu 22.04 and older
- appimage-3.0 (fuse3) for Ubuntu 24.04 and newer

New .github/workflows/appimage.yml builds and validates both variants
with appimagelint on every push and pull request, uploading each as a
separate artifact.
The --appimage-type flag belongs to appimagetool, not linuxdeploy core.
The linuxdeploy-plugin-appimage is just a wrapper around appimagetool and
does not expose that flag. Now downloads appimagetool directly from
AppImageKit and uses it with --appimage-type to build both fuse2
(appimage-2.0) and fuse3 (appimage-3.0) variants from the same AppDir.
Remove the --appimage-type flag from the linuxdeploy command (that flag
belongs to appimagetool, not linuxdeploy, and caused 'Flag could not be
matched'). Per the linuxdeploy user guide, linuxdeploy builds the AppDir;
--appimage-type is selected via appimagetool (which linuxdeploy's appimage
plugin wraps). Build the AppDir with linuxdeploy, then use appimagetool
with --appimage-type=appimage-2.0 (fuse2, Ubuntu 22.04 and older) and
--appimage-type=appimage-3.0 (fuse3, Ubuntu 24.04 and newer) to produce
both variants from the same AppDir.
Hardcoded /usr/lib/x86_64-linux-gnu/ paths failed when a library was not
present at that exact location on the CI runner (e.g. libxkbcommon-x11.so.0).
Add a resolve_lib() helper that checks common multiarch paths then falls back
to ldconfig, and use it for all -l flags passed to linuxdeploy. Also install
libxkbcommon-x11-0, libxcb1 and libglib2.0-0 in CI so the libraries exist.
… appimagetool

Remove --appimage-type (not implemented in the available appimagetool,
'--appimage-type=appimage-3.0 is not yet implemented'). Build the AppDir
with linuxdeploy per its user guide, then create both AppImages with
plain appimagetool (no type flag) from the same AppDir, named per target
Ubuntu version:
  - Syncplay-<ver>-x86_64.AppImage      (fuse2, Ubuntu 22.04 and older)
  - Syncplay-<ver>-fuse3-x86_64.AppImage (fuse3, Ubuntu 24.04 and newer)
Download appimagetool from the new AppImage/appimagetool repo (the old
AppImage/AppImageKit continuous release is marked obsolete).
The appdata.xml screenshot element had mismatched tags (img vs screenshot),
causing appstreamcli to fail validation and the fuse3 build to fail. Fix the
opening/ending tag mismatch so AppStream metadata parses cleanly.
appstreamcli fails with screenshot-no-media because it cannot fetch or
validate media from the syncplay.pl screenshot URL. Remove the screenshots
block so AppStream metadata passes validation (content-rating-missing and
developer-info-missing are only informational, not errors).
…r variant

The script previously produced identical AppImages for both variants (no fuse
library was bundled at all, and --appimage-type is unimplemented). Now each
variant runs linuxdeploy separately with FUSE_LIB set so the matching shared
library is bundled into the AppDir:
  - fuse2 variant bundles libfuse.so.2   (Ubuntu 22.04 and older)
  - fuse3 variant bundles libfuse3.so.3  (Ubuntu 24.04 and newer)
Each CI job still installs both libfuse2 and libfuse3 so appimagetool can run
on either runner, but the resulting AppImages now differ in their fuse
dependency.
appimage-fuse2 job installs only libfuse2 (Ubuntu 22.04 runner).
appimage-fuse3 job installs only libfuse3-3 (Ubuntu 24.04 runner).
The matching fuse shared library is bundled into each AppImage by
linuxdeploy via FUSE_LIB.
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