Conversation
…ata, workflow) Agent-Logs-Url: https://github.com/marthabo/iOpenPod/sessions/355db9ed-7b1c-4fef-a27c-56e599d967c6 Co-authored-by: marthabo <39622526+marthabo@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds a Flatpak packaging path for iOpenPod by wrapping the existing Linux PyInstaller one-folder bundle, plus a tag-triggered GitHub Actions workflow to build and attach a .flatpak artifact to Releases.
Changes:
- Add Flatpak manifest + desktop integration (icons,
.desktop, AppStream metadata). - Add a launcher wrapper script to set up runtime library/plugin paths for the bundled Qt.
- Add a
v*tag workflow to build the PyInstaller bundle, build a Flatpak bundle, and upload it to the GitHub Release.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
flatpak/iOpenPod-wrapper.sh |
Wrapper that sets environment variables then execs the bundled binary inside Flatpak. |
flatpak/io.github.marthabo.iOpenPod.yml |
Flatpak manifest that copies dist/iOpenPod/ into /app/lib/iOpenPod/ and installs desktop metadata. |
flatpak/io.github.marthabo.iOpenPod.metainfo.xml |
AppStream metadata for software centers. |
flatpak/io.github.marthabo.iOpenPod.desktop |
Desktop entry for launchers/software centers. |
.github/workflows/flatpak.yml |
CI workflow to build PyInstaller output, build .flatpak, checksum, and upload to release. |
| BUNDLE=/app/lib/iOpenPod | ||
| export LD_LIBRARY_PATH="$BUNDLE/_internal:$BUNDLE/_internal/Qt/lib:${LD_LIBRARY_PATH:-}" | ||
| export QT_PLUGIN_PATH="$BUNDLE/_internal/plugins:${QT_PLUGIN_PATH:-}" |
There was a problem hiding this comment.
The wrapper sets LD_LIBRARY_PATH/QT_PLUGIN_PATH but doesn’t mirror the environment setup used by the AppImage launcher in release.yml (which also prepends _internal/lib, sets QML2_IMPORT_PATH, and adds the bundle dir to PATH). This can cause missing-library or missing-QML-plugin runtime failures inside Flatpak even when the PyInstaller bundle works in AppImage. Align the wrapper’s exported vars with the AppImage AppRun to keep launch behavior consistent across packaging formats.
| runs-on: ubuntu-latest | ||
|
|
There was a problem hiding this comment.
This workflow builds the PyInstaller bundle on ubuntu-latest, while release.yml uses ubuntu-22.04. Since the Flatpak wraps that bundle verbatim, building on a different runner image can change the set of bundled shared libs and reduce reproducibility (and potentially compatibility). Consider pinning the runner to the same Ubuntu version as the release workflow to keep artifacts consistent.
| # ── Build the PyInstaller one-folder bundle ─────────────────────── | ||
| - name: Build with PyInstaller | ||
| run: uv run pyinstaller iOpenPod.spec --noconfirm | ||
|
|
There was a problem hiding this comment.
flatpak.yml duplicates the PyInstaller build steps from release.yml (“same steps as release.yml”), which creates an ongoing drift risk (one workflow will eventually be updated without the other). Consider factoring the shared build into a reusable workflow (workflow_call) or moving Flatpak bundling into the existing Release workflow so there’s a single source of truth for the Linux build.
| <releases> | ||
| <release version="1.0.41" date="2026-04-10"/> | ||
| </releases> |
There was a problem hiding this comment.
The AppStream <release> entry hard-codes both the version and date. Since the version is already sourced from pyproject.toml for builds, this metadata will become stale on the next release unless it’s manually updated as well. Consider either omitting the <releases> section or generating/updating it automatically as part of the release process to avoid mismatched store metadata.
Packages iOpenPod for Flatpak by wrapping the existing PyInstaller one-folder bundle, avoiding a full Python/Qt SDK build inside the Flatpak sandbox.
New files
flatpak/io.github.marthabo.iOpenPod.yml— manifest usingorg.freedesktop.Platform 24.08; copiesdist/iOpenPod/into/app/lib/iOpenPod/viatype: dirsource, installs icons, desktop entry, and AppStream metadataiOpenPod-wrapper.sh— installed at/app/bin/iOpenPod; prepends the bundled_internal/and_internal/Qt/libtoLD_LIBRARY_PATHandQT_PLUGIN_PATHbefore exec-ing the real binary (mirrors what the AppImageAppRunalready does)io.github.marthabo.iOpenPod.metainfo.xml— AppStream metadata (description, OARS rating, release list)io.github.marthabo.iOpenPod.desktop— desktop entry for software centres / launchers.github/workflows/flatpak.ymlNew workflow triggered on
v*tags. Builds the PyInstaller bundle first (same steps asrelease.yml), then hands it toflatpak/flatpak-github-actions/flatpak-builder@v6, and uploadsiOpenPod-Linux.flatpak+ its SHA-256 to the GitHub Release.Sandbox permissions
--device=all--filesystem=home,/media,/run/media--share=network--socket=x11+--socket=wayland+--share=ipc