Add a snapcraft.yml for building Snaps

The included snapcraft.yml can be used to build a Snap (the application
format used by Canonical's modern package manager) out of Prism. If the
project wants in the future, Prism can publish these Snaps to the Snap
Store so the Prism Launcher can be installed through the Ubuntu Software
app on vanilla Ubuntu.

I haven't registered the Snap name, so it's currently free for anyone to
reserve. I'd suggest that a Prism developer register the name
prismlauncher at https://snapcraft.io/register-snap to ensure the name
belongs to the project, even if there are no plans of setting up CI to
publish snaps in the short term.

I have also modified JavaUtils.cpp to be able to autodetect the Java
versions included in the Snap, and added "*.snap" to the .gitignore so
the compiled Snap isn't accidentally committed to the repository.

Signed-off-by: Piper McCorkle <contact@piperswe.me>
This commit is contained in:
Piper McCorkle
2022-10-24 13:19:30 -05:00
parent 610b971117
commit 2e0f818905
3 changed files with 75 additions and 8 deletions

55
snap/snapcraft.yaml Normal file
View File

@ -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