60 lines
1.8 KiB
Markdown
60 lines
1.8 KiB
Markdown
# Flatpak packaging
|
|
|
|
Builds a portable `sunstone.flatpak` bundle you can install on any distro with
|
|
Flatpak + the GNOME 49 runtime.
|
|
|
|
## Build a test bundle
|
|
|
|
Prereqs (one-time):
|
|
|
|
```sh
|
|
flatpak install --user flathub org.flatpak.Builder \
|
|
org.gnome.Platform//49 org.gnome.Sdk//49 \
|
|
org.freedesktop.Sdk.Extension.rust-stable//25.08
|
|
```
|
|
|
|
Commit your changes (the manifest builds from git HEAD), then from the repo root:
|
|
|
|
```sh
|
|
flatpak run org.flatpak.Builder --force-clean --user --install \
|
|
--install-deps-from=flathub \
|
|
build-dir packaging/dev.sunstone.Sunstone.yaml
|
|
```
|
|
|
|
Run it:
|
|
|
|
```sh
|
|
flatpak run dev.sunstone.Sunstone
|
|
```
|
|
|
|
## Make a single-file bundle to copy to another machine
|
|
|
|
```sh
|
|
flatpak build-bundle ~/.local/share/flatpak/repo \
|
|
sunstone.flatpak dev.sunstone.Sunstone --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo
|
|
```
|
|
|
|
On the target distro:
|
|
|
|
```sh
|
|
flatpak install --user sunstone.flatpak
|
|
flatpak run dev.sunstone.Sunstone
|
|
```
|
|
|
|
(The target needs the GNOME 49 runtime; `flatpak install` will pull it from
|
|
Flathub automatically if the repo is configured.)
|
|
|
|
## Notes / caveats
|
|
|
|
- **This is a dev bundle, not Flathub-ready.** The manifest uses
|
|
`--share=network` at build time so cargo can fetch crates. Flathub requires
|
|
fully-offline builds: generate `cargo-sources.json` with
|
|
[`flatpak-cargo-generator.py`](https://github.com/flatpak/flatpak-builder-tools/tree/master/cargo)
|
|
from `Cargo.lock`, add it as a source, drop the network build-arg, and run
|
|
`cargo build --offline`.
|
|
- The player requires GStreamer's `gtk4paintablesink`. If a stream/video fails
|
|
to open inside the sandbox, the GNOME runtime is missing that element and we
|
|
need to add `gst-plugin-gtk4` as a build module.
|
|
- Hardware video decode is intentionally disabled in-app on Intel GPUs
|
|
(`SUNSTONE_HW_DECODE=1` to opt back in); software decode runs everywhere.
|