From a0a7147624ef71247e7d5e201e48491d1a73f777 Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Mon, 28 Dec 2020 15:03:52 -0800 Subject: [PATCH] WIP: Build Doodle inside Flatpak SDK --- .gitignore | 1 + README.md | 28 +++++++++++++++++++++++++--- com.sketchymaze.Doodle.json | 33 ++++++++++++++++++++++++--------- 3 files changed, 50 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 7949add..b92ab16 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .flatpak-builder/ build/ +source/ diff --git a/README.md b/README.md index 1d77303..1bc81ce 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/com.sketchymaze.Doodle.json b/com.sketchymaze.Doodle.json index 8b0472e..d331909 100644 --- a/com.sketchymaze.Doodle.json +++ b/com.sketchymaze.Doodle.json @@ -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 } ] }