Flathub staff is taking their time to update the package, and my request mail is stuck in moderation limbo. It's probably the time of the year, I'll give them a week or so, then pester them directly
Flathub isn't going to fulfill all our needs anyway; on the main hub, they only want stable releases, and even on the beta, they don't want nighties, only things that got some testing already. So I extended our build system. It's a bit of a different setup than all the rest. All the other builds are done in docker containers controlled by the main source module and only that. That does not work here: For one, Flatpak build definitions should contain direct references to source tarballs with sha checksums, and of course we only know those after the tarball is made. So they can't be checked in to the main source. Like the download site and the Zero Install streams, the Flatpak definitions need to be in a separate git repository. The second difficulty is that Flatpak builds don't work inside rootless docker. I experimented a bit and ended up with another user on my build server with another github runner, this time a shell runner, attached to yet another project that contains the Flatpak build scripts. Flatpak builds themselves are also sandboxed, so having a shell runner for this one small purpose is not much of a security risk. And the SDK is super easy to set up.
So the process is now this: Main builds run. In the deployment stage, the
corresponding branch of the Flatpak definition project is updated. That update sends a message to the
build project that has a very small CI process that fetches the definitions and builds them.
The result is our very own little Flatpak repository with all of our builds (except for the occasional one that will turn out to break the Flatpak build).
I have to say... I kind of like Flatpak now. I was a little scared; see, you have to add all libraries that your project needs, and that's best done by compiling them from source. The ones 0.2.9 uses are all either in the runtime or covered by common installation instructions one can use. For 0.4, ftgl, protobuf and boost are not. I was very worried about boost. And indeed, it is the most complicated one of the three. Look at this
monstrous build definition!
Wait... 666 bytes? 25 lines? Half of them copy/pasted instructions on what to clean up?
Yeah. Turns out you just tell it what file to download and in this case, which commands to execute inside the unpacked archive. For the other two, you just point it to the download. Flatpak knows on its own how to handle the configure/make/make install dance. Adapting the definition for 0.4 took just two hours. The liberating thing here is that you're building directly against an up-to-date runtime. What the configure scripts find is safe to use. The Steam runtime, for comparison, is outdated; we need to pull in libraries from later Ubuntu versions and include them in the package. For Zero Install, AppImage and Itch.io, we need to very carefully build some things from source with very carefully disabled configuration options so we don't have to include a ton of extra libraries we're not even using. Luckily, it's the same process for all three. And Debian... I admit, I don't understand the first thing about how that works.
So yeah, if I had to restrict myself to ONE binary distribution system per platform with total disregard for the users, they'd be Itch for Windows, Flatpak for Linux clients and... blast. I guess docker for the servers. Is that allowed? Right, I make the hypothetical rules, so yes, it is.
Now that the entry hard drive space fee is paid, I'm switching some programs from AUR to Flatpak. Zoom, Discord and Godot go first.