This article is a draft and may contain incomplete or incorrect information.

Maintaining a HandBrake flatpak repository

These instructions do not currently work

The flatpak gnome runtime sdk does not currently include nasm. HandBrake requires nasm during the build process, so following these instructions will result in a build error. Hopefully the gnome runtime will get updated in the not too distant future to include nasm (and yasm as well). The freedesktop runtime has already been updated to include these.

See: NASM flatpak issue

Creating a new empty flatpak repository

This would be done once to set up the repo users update their HandBrake flatpaks from. This repo gets served via http to users.

Initialize a new repository

ostree init --mode=archive-z2 --repo=<repo-dir>

Add the new repository to your flatpak remotes

flatpak --user remote-add --gpg-import=<pub-gpg-key> <repo-name> <repo-dir>

Install dependencies

Install flatpak and flatpak-builder

sudo dnf install flatpak flatpak-builder

Install flathub repository.

flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

Install flatpak gnome SDK.

flatpak install flathub org.gnome.Sdk//3.26

Install flatpak gnome runtime platform.

flatpak install flathub org.gnome.Platform//3.26

Create a new HandBrake flatpak bundle

This may be done on a different machine than the repo.

From the HandBrake source tree, update build versions by running configure

./configure --prefix=/app --flatpak

Build flatpaks for GUI and CLI.
Results will be in build/pkg/flatpak/

cd build
make pkg.create.flatpak

Importing flatpak bundles into the repository

For each build, a GUI and CLI flatpak bundle is imported.

Import a bundle

flatpak build-import-bundle <repo-dir> <flatpak-bundle>

Update the flatpak repo index

flatpak build-update-repo --generate-static-deltas <repo-dir>

Regenerate and gpg-sign ostree summary

ostree summary --repo=<repo-dir> --gpg-sign=<key-id> -u

Check repo and application

List contents of the repo

flatpak --user remote-ls <repo-name>

Install the application (if you wish to test it)

flatpak --user install <repo-name> <app-name>