WIP: Build Doodle inside Flatpak SDK

master
Noah 2020-12-28 15:03:52 -08:00
parent e6ac0bb5bc
commit a0a7147624
3 changed files with 50 additions and 12 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
.flatpak-builder/
build/
source/

View File

@ -2,9 +2,31 @@
This repo contains Flatpak manifests to distribute Sketchy Maze to Linux users.
It's a work in progress and currently tries to bundle the binary distribution
from tarball; but the binary uses glibc-2.32 which is not yet available in
the freedesktop runtime.
It's a work in progress. It builds the game in the Flatpak SDK but doesn't yet
handle copying the runtime environment (SFX) and things in.
## Setup
The Doodle source directory should be at a folder named "source" relative
to this flatpak repo. A symlink can work. For best results, the Doodle source
folder should be "fully initialized" and ready to simply `go build` the app
and be done; this means `make doodads` has already been run, and `make bindata`
to embed them in the Go sources. Generally, if you had run a `make dist` in
Doodle recently you're good to go.
The `source/go.mod` file should have "replace" directives pointing to the
appropriate path as seen in the Flatpak build environment, like:
```
replace git.kirsle.net/go/render => /run/build/doodle/deps/render
replace git.kirsle.net/go/ui => /run/build/doodle/deps/ui
replace git.kirsle.net/go/audio => /run/build/doodle/deps/audio
```
It may be possible to skip the `replace` directives entirely and have `go get`
download the dependencies the usual way, but the `proxy.golang.org` server
sometimes caches stale versions of these if they were just recently changed and,
in case they had bugs, will prevent the app from building.
## Makefile

View File

@ -3,6 +3,9 @@
"runtime": "org.freedesktop.Platform",
"runtime-version": "20.08",
"sdk": "org.freedesktop.Sdk",
"sdk-extensions": [
"org.freedesktop.Sdk.Extension.golang"
],
"finish-args": [
"--device=all",
"--persist=.doodle",
@ -24,24 +27,29 @@
{
"name": "doodle",
"buildsystem": "simple",
"build-options": {},
"build-options": {
"build-args": [
"--share=network"
]
},
"build-commands": [
"find",
"install -Dm755 ./doodle /app/bin/doodle",
"install -Dm755 ./doodad /app/bin/doodad",
"mkdir -p /app/share/doodle /app/share/icons",
"cp -ra guidebook rtp *.md /app/share/doodle",
"pwd",
". /usr/lib/sdk/golang/enable.sh; env GOPATH=\"$(pwd)\"; make build",
"install -Dm755 ./bin/doodle /app/bin/doodle",
"install -Dm755 ./bin/doodad /app/bin/doodad",
"mkdir -p /app/share/doodle /app/share/icons /app/extra/export/share",
"cp -ra guidebook rtp *.md /app/extra/export/share/",
"cp -ra 256.png /app/share/icons/doodle.png",
"install -Dm644 com.sketchymaze.Doodle.desktop /app/share/applications/com.sketchymaze.Doodle.desktop",
"install -Dm644 com.sketchymaze.Doodle.appdata.xml /app/share/appdata/com.sketchymaze.Doodle.appdata.xml",
"for s in 16 32 64 128 256; do install -Dm644 ${s}.png /app/share/icons/hicolor/${s}x${s}/apps/doodle.png; done",
"find /app/share"
"find /app"
],
"sources": [
{
"type": "archive",
"url": "https://www.kirsle.net/projects/Doodle/v0.4.0/doodle-0.4.0-linux-64bit.tar.gz",
"sha256": "ee3755be22b953bbfe0e477bc40b7c0637e61b49ef5653b49974490cb3fa6d3b"
"type": "dir",
"path": "source"
},
{
"type": "dir",
@ -54,6 +62,13 @@
{
"type": "file",
"path": "com.sketchymaze.Doodle.appdata.xml"
},
{
"type": "extra-data",
"filename": "doodle",
"url": "https://download.sketchymaze.com/extra-data.tar.gz",
"sha256": "4ff48d57e6329f2638f3fcdca93a9b65a0fc9cbc057fe0446083a6a8a87088d1",
"size": 7159771
}
]
}