[crossfire] flatpak

Jussi Eloranta eloranta at aa6kj.hopto.org
Tue Dec 13 19:32:10 CST 2022


Hi,

I was wondering if there would be interest to create flatpak of either 
the gtk2 or java crossfire clients and place it in flathub? Since there 
are many people now with steam decks (runs modified version of arch 
linux), this could potentially increase the number of players quite a 
bit. In the desktop mode (KDE plasma), it comes with package manager 
called discover, which pulls packages from flathub (flatpaks; all this 
is separate from the steam store). So, if crossfire client would be 
available as flatpak from this repository then it would be easily 
accessible to steam deck users.

I am running the gtk2 and java clients on my steam deck. I compiled the 
former (pulling compilers etc from brew) and the latter requires java 
runtime (from brew). So, this is technically possible.  I use external 
monitor, keyboard and mouse as the gamepad etc. are somewhat useless 
with crossfire.

So, I played with flatpak and the java client a bit and came up with the 
following *very crude* write up (not sure if gtk2 is still supported by 
flathub runtime). And, by the way, I have never done anything (except 
install) with flatpak, so take this with grain and salt...

0. Flatpak does not like the dash in the domain name 
crossfire.real-time.com ... so this is replaced with underscore?

1. Before starting org.freedesktop.Platform and org.freedesktop.Sdk must 
be installed.

2. The following files need to be in the current directory:

com.real_time.crossfire.yml:
app-id: com.real_time.crossfire
runtime: org.freedesktop.Platform
runtime-version: '22.08'
sdk: org.freedesktop.Sdk
sdk-extensions:
command: start.sh
modules:
   - name: openjdk
     buildsystem: simple
     build-commands:
       - /usr/lib/sdk/openjdk11/install.sh
   - name: Crossfire_client
     buildsystem: simple
     build-commands:
       - install -D download /app/bin/jxclient.jar
       - install -D start.sh /app/bin/start.sh
     sources:
       - type: file
         url: 
https://sourceforge.net/projects/crossfire/files/jxclient/jxclient.jar/download
         sha256: 
e6af744ea986da0991233787be6c9bc5535a7f3fe8ea682fe3284f1152e67b77
       - type: file
         path: start.sh
finish-args:
       - --share=ipc
       - --socket=x11
       - --socket=wayland
       - --share=network

start.sh (do chmod+x on this):
#!/bin/sh
/app/jre/bin/java -jar /app/bin/jxclient.jar
exit 0

3. Build the package:

flatpak-builder --force-clean build --disable-rofiles-fuse 
com.real_time.crossfire.yml

Add --disable-cache  to force downloading jxclient.jar again.

4. Test the build locally:

flatpak-builder --user --install --force-clean build 
--disable-rofiles-fuse com.real_time.crossfire.yml

5. GPG sign:

flatpak-builder --gpg-sign=<key> --repo=<repository> 
com.real_time.crossfire.yml

6. Run the flatpak:

flatpak run com.real_time.crossfire

7. Procedure for adding the flatpak to flathub:

https://github.com/flathub/flathub/wiki/App-Submission


Jussi Eloranta (eloranta at aa6kj.hopto.org)

ps. Crossfire is still the best multi-user RPG out there! Nothing comes 
close to it in terms of playability.



More information about the crossfire mailing list