Skip to content

Commit 5d299d3

Browse files
authored
Flatpak prototype (#676)
* Improve GH Actions CI build * Only build CI on changes in the Quelea/ (Java app) directory * Use other GH Actions to simplify the script and remove static linking to JDK downloads * Use a Windows Github Actions Runner to compile and package the Windows standalone * Change the release GH Action to a more actively maintained one, and use newlines to make it more readible. * Test GH Actions build * Re-do trigger to do CI changes on Quelea/ only * pinning runner versions and change eval to deal with changing runner version expressions * fix contains * Create archive for Flatpak * Prototype Flatpak created from archive * gitignore for local builds * Create archive for Flatpak * Prototype Flatpak created from archive * gitignore for local builds * adding tar gradle build task to CI * Create Flatpak bundle (.flatpak file) * flatpak packages * Add remote for Freedesktop SDK * Add Flathub as dep source to flatpak-builder cmd * Remove flatpak branch from CI build * Add MetaInfo for submission to Flathub and change urls to local paths * IPC permission required when using x11 * Fix small mistakes * split metadata files up into separate PR
1 parent c682c7d commit 5d299d3

4 files changed

Lines changed: 115 additions & 5 deletions

File tree

.github/workflows/build.yml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ jobs:
2828
- name: Setup Gradle
2929
uses: gradle/actions/setup-gradle@v4
3030

31-
- name: Setup Wine
31+
- name: Install Wine and Flatpak
3232
run: |
3333
sudo dpkg --add-architecture i386
3434
sudo apt update
35-
sudo apt install wine wine32 wine64
35+
sudo apt install wine wine32 wine64 flatpak flatpak-builder
3636
3737
- name: Setup Inno Setup cache
3838
id: cache-innosetup
@@ -57,6 +57,21 @@ jobs:
5757
cd Quelea
5858
gradle -Dnightly=true -Dversionsuffix=CI-UNSTABLE clean dist
5959
60+
- name: Cache Flatpak
61+
uses: actions/cache@v4
62+
with:
63+
path: |
64+
flatpak/repo
65+
flatpak/builddir
66+
key: flatpak
67+
68+
- name: Build Flatpak
69+
run: |
70+
flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo
71+
cd flatpak
72+
flatpak-builder --force-clean --user --install-deps-from=flathub --repo=repo builddir org.quelea.Quelea.yml
73+
flatpak build-bundle repo/ ../Quelea/dist/standalone/quelea-CI-UNSTABLE.flatpak org.quelea.Quelea --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo
74+
6075
- name: Upload binaries to release
6176
if: ${{ github.event_name == 'push' }}
6277
uses: softprops/action-gh-release@v2

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,9 @@ Quelea/.nb-gradle/*
2727
Quelea/bin/*
2828
Quelea/private/*
2929

30+
flatpak/**/builddir
31+
flatpak/**/.flatpak-builder
32+
flatpak/**/repo
33+
3034
Thumbs.db
3135
gs.msi

Quelea/build.gradle

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,9 @@ ext {
4646
WindowsInstallerName="quelea-" + versionsuffix + "-x86-windows-install.exe"
4747
WindowsInstaller64Name="quelea-" + versionsuffix + "-x64-windows-install.exe"
4848
MacInstallerName="quelea-" + versionsuffix + "-mac.zip"
49-
DebInstallerName ="quelea-" + versionsuffix + "-deb-install.deb"
49+
JavaAppName="quelea-" + versionsuffix + "-java-app.tar.gz"
5050

5151
CPInstaller ="dist/standalone/" + CPInstallerName
52-
DebInstaller ="dist/standalone/" + DebInstallerName
5352
WindowsInstaller="dist/standalone/" + ext.WindowsInstallerName
5453
WindowsInstaller64="dist/standalone/" + ext.WindowsInstaller64Name
5554
}
@@ -207,7 +206,7 @@ task zipMacPackr(type: Zip) {
207206
runPackr.finalizedBy(zipMacPackr);
208207

209208
task dist(type: GradleBuild) {
210-
tasks = ['labelcheck', 'downloadJres', 'downloadGStreamer', 'createQueleaExe64', 'copyToDist', 'runPackr', 'izpack', 'innosetup', 'releaseSummary']
209+
tasks = ['labelcheck', 'downloadJres', 'downloadGStreamer', 'createQueleaExe64', 'copyToDist', 'tar', 'runPackr', 'izpack', 'innosetup', 'releaseSummary']
211210
}
212211

213212
dependencies {
@@ -288,11 +287,36 @@ jar {
288287
}
289288
}
290289

290+
task tar(type: Tar) {
291+
archiveFileName = JavaAppName
292+
destinationDirectory = file("dist/standalone/")
293+
compression = Compression.GZIP
294+
295+
from 'dist/'
296+
into "Quelea-${versionsuffix}-java-app"
297+
include "lib/",
298+
"bibles/",
299+
"dictionaries/",
300+
"icons/",
301+
"img/",
302+
"languages/",
303+
"licenses/",
304+
"server/",
305+
"themes/",
306+
"vid/",
307+
"fopcfg.xml",
308+
"quelea.properties",
309+
"scheduleformat.xsl",
310+
"songformat.xsl",
311+
"Quelea.jar"
312+
}
313+
291314
task releaseSummary(type:JavaExec) {
292315
mainClass = 'org.quelea.services.utils.ReleaseSummaryGenerator'
293316
classpath = sourceSets.main.runtimeClasspath
294317
}
295318

296319
tasks.named("izPackCreateInstaller") {
297320
dependsOn(tasks.named("zipMacPackr"))
321+
dependsOn(tasks.named('tar'))
298322
}

flatpak/org.quelea.Quelea.yml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
id: org.quelea.Quelea
2+
3+
runtime: org.freedesktop.Platform
4+
runtime-version: '24.08'
5+
6+
sdk: org.freedesktop.Sdk
7+
8+
command: quelea
9+
10+
finish-args:
11+
# X11
12+
- --socket=x11
13+
- --share=ipc
14+
# GPU acceleration if needed
15+
- --device=dri
16+
# Needs to talk to the network:
17+
- --share=network
18+
# Needs to save files locally
19+
- --filesystem=home
20+
# Environment variables for running Java apps
21+
- --env=PATH=/app/jre/bin:/app/bin:/usr/bin
22+
- --env=JAVA_HOME=/app/jre
23+
24+
modules:
25+
- name: openjdk-jre24
26+
buildsystem: simple
27+
build-commands:
28+
- cp -a . /app/jre
29+
sources:
30+
- type: archive
31+
url: https://cdn.azul.com/zulu/bin/zulu24.28.85-ca-fx-jre24.0.0-linux_x64.tar.gz
32+
sha256: 74fd6b44281319ca228a194122acf0ed1d7cc6f3b64d6293ba9ee69795174913
33+
strip-components: 1
34+
35+
- name: quelea
36+
buildsystem: simple
37+
build-commands:
38+
- install -Dm755 -t /app/bin quelea
39+
- install -Dm644 org.quelea.Quelea.desktop /app/share/applications/org.quelea.Quelea.desktop
40+
- install -Dm644 icons/logo64.png /app/share/icons/hicolor/64x64/apps/org.quelea.Quelea.png
41+
- cp -a ./ /app/
42+
sources:
43+
- type: archive
44+
path: ../Quelea/dist/standalone/quelea-CI-UNSTABLE-java-app.tar.gz
45+
strip-components: 1
46+
47+
- type: file
48+
path: org.quelea.Quelea.desktop
49+
50+
- type: script
51+
dest-filename: quelea
52+
commands:
53+
- cd /app
54+
- java
55+
--add-opens java.base/java.nio=ALL-UNNAMED
56+
--add-opens java.base/java.lang=ALL-UNNAMED
57+
--add-exports=javafx.graphics/com.sun.javafx.scene.traversal=ALL-UNNAMED
58+
--add-exports=javafx.graphics/com.sun.javafx.scene=ALL-UNNAMED
59+
--add-exports=javafx.graphics/com.sun.javafx.css=ALL-UNNAMED
60+
--add-exports=javafx.base/com.sun.javafx.runtime=ALL-UNNAMED
61+
--add-exports=javafx.base/com.sun.javafx.event=ALL-UNNAMED
62+
--add-opens javafx.controls/javafx.scene.control=ALL-UNNAMED
63+
-Djdk.gtk.verbose=true
64+
-DVLCJ_INITX=no
65+
-Dfile.encoding=UTF-8
66+
-Dprism.dirtyopts=false
67+
-jar Quelea.jar

0 commit comments

Comments
 (0)