aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSefa Eyeoglu <contact@scrumplex.net>2022-11-05 11:09:51 +0100
committerGitHub <noreply@github.com>2022-11-05 11:09:51 +0100
commit695734636f9c8668d447edce24dc1b0e3dd00214 (patch)
tree8c060602834034ad4c4a4a7f49f0820c62fc8beb
parent5e9b26dbef1c7cf917af17585c4282f58fc5eaef (diff)
parentbdac2a5f4d8b3a87a103fb008b9e790671c0b930 (diff)
downloadPrismLauncher-695734636f9c8668d447edce24dc1b0e3dd00214.tar.gz
PrismLauncher-695734636f9c8668d447edce24dc1b0e3dd00214.tar.bz2
PrismLauncher-695734636f9c8668d447edce24dc1b0e3dd00214.zip
Merge pull request #294 from piperswe/add-snapcraft-yml
-rw-r--r--.github/workflows/build.yml24
-rw-r--r--.gitignore3
-rw-r--r--launcher/java/JavaUtils.cpp25
-rw-r--r--snap/snapcraft.yaml55
4 files changed, 97 insertions, 10 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 3cf99760..3225cf1e 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -496,5 +496,25 @@ jobs:
with:
name: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage
path: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage
-
-
+ snap:
+ runs-on: ubuntu-20.04
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ submodules: 'true'
+ - name: Set short version
+ shell: bash
+ run: |
+ ver_short=`git rev-parse --short HEAD`
+ echo "VERSION=$ver_short" >> $GITHUB_ENV
+ - name: Package Snap (Linux)
+ id: snapcraft
+ if: runner.os == 'Linux' && matrix.qt_ver != 5
+ uses: snapcore/action-build@v1
+ - name: Upload Snap (Linux)
+ if: runner.os == 'Linux' && matrix.qt_ver != 5
+ uses: actions/upload-artifact@v3
+ with:
+ name: prismlauncher_${{ env.VERSION }}_amd64.snap
+ path: ${{ steps.snapcraft.outputs.snap }}
diff --git a/.gitignore b/.gitignore
index f5917a46..010bc323 100644
--- a/.gitignore
+++ b/.gitignore
@@ -47,3 +47,6 @@ result/
# Flatpak
.flatpak-builder
flatbuild
+
+# Snap
+*.snap
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..8e647eea
--- /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