aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--launcher/java/JavaUtils.cpp25
-rw-r--r--snap/snapcraft.yaml55
3 files changed, 75 insertions, 8 deletions
diff --git a/.gitignore b/.gitignore
index f5917a46..b9a793d2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -47,3 +47,6 @@ result/
# Flatpak
.flatpak-builder
flatbuild
+
+# Snap
+*.snap \ No newline at end of file
diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp
index 6c0c60cd..5efbc7a8 100644
--- a/launcher/java/JavaUtils.cpp
+++ b/launcher/java/JavaUtils.cpp
@@ -439,19 +439,28 @@ QList<QString> JavaUtils::FindJavaPaths()
javas.append(FS::PathCombine(prefix, "bin/java"));
}
};
+ // java installed in a snap is installed in the standard directory, but underneath $SNAP
+ auto snap = qEnvironmentVariable("SNAP");
+ auto scanJavaDirs = [&](const QString & dirPath)
+ {
+ scanJavaDir(dirPath);
+ if (!snap.isNull()) {
+ scanJavaDir(snap + dirPath);
+ }
+ };
// oracle RPMs
- scanJavaDir("/usr/java");
+ scanJavaDirs("/usr/java");
// general locations used by distro packaging
- scanJavaDir("/usr/lib/jvm");
- scanJavaDir("/usr/lib64/jvm");
- scanJavaDir("/usr/lib32/jvm");
+ scanJavaDirs("/usr/lib/jvm");
+ scanJavaDirs("/usr/lib64/jvm");
+ scanJavaDirs("/usr/lib32/jvm");
// javas stored in Prism Launcher's folder
- scanJavaDir("java");
+ scanJavaDirs("java");
// manually installed JDKs in /opt
- scanJavaDir("/opt/jdk");
- scanJavaDir("/opt/jdks");
+ scanJavaDirs("/opt/jdk");
+ scanJavaDirs("/opt/jdks");
// flatpak
- scanJavaDir("/app/jdk");
+ scanJavaDirs("/app/jdk");
javas = addJavasFromEnv(javas);
javas.removeDuplicates();
return javas;
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
new file mode 100644
index 00000000..f64e5b0a
--- /dev/null
+++ b/snap/snapcraft.yaml
@@ -0,0 +1,55 @@
+name: prismlauncher
+license: GPL-3.0-only
+base: core20
+website: https://prismlauncher.org/
+source-code: https://github.com/PrismLauncher/PrismLauncher
+issues: https://github.com/PrismLauncher/PrismLauncher/issues
+donation: https://opencollective.com/prismlauncher
+contact: https://discord.gg/prismlauncher
+summary: A custom Minecraft launcher with modpack support
+adopt-info: prismlauncher
+
+grade: devel
+confinement: strict
+
+architectures:
+ - build-on: amd64
+ - build-on: arm64
+
+parts:
+ prismlauncher:
+ parse-info:
+ - usr/share/metainfo/org.prismlauncher.PrismLauncher.metainfo.xml
+ plugin: cmake
+ build-packages:
+ - default-jdk-headless
+ stage-packages:
+ - openjdk-17-jre
+ - openjdk-8-jre
+ source: .
+ override-pull: |
+ snapcraftctl pull
+ # Fix the icon reference in the desktop file
+ sed -i.bak -e 's|Icon=org.prismlauncher.PrismLauncher|Icon=/usr/share/icons/hicolor/scalable/apps/org.prismlauncher.PrismLauncher.svg|g' program_info/org.prismlauncher.PrismLauncher.desktop.in
+ # Remove the build directory so that local development doesn't interfere with Snap compilation
+ rm -rf build
+ cmake-generator: Ninja
+ cmake-parameters:
+ - "-DCMAKE_INSTALL_PREFIX=/usr"
+ - "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
+ - "-DENABLE_LTO=ON"
+ - "-DLauncher_BUILD_PLATFORM=snap"
+
+apps:
+ prismlauncher:
+ common-id: org.prismlauncher.PrismLauncher
+ desktop: usr/share/applications/org.prismlauncher.PrismLauncher.desktop
+ command: usr/bin/prismlauncher
+ extensions:
+ - kde-neon
+ plugs:
+ - home
+ - opengl
+ - network
+ - network-bind
+ - audio-playback \ No newline at end of file