Merge pull request #294 from piperswe/add-snapcraft-yml

This commit is contained in:
Sefa Eyeoglu 2022-11-05 11:09:51 +01:00 committed by GitHub
commit 695734636f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 97 additions and 10 deletions

View File

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

3
.gitignore vendored
View File

@ -47,3 +47,6 @@ result/
# Flatpak
.flatpak-builder
flatbuild
# Snap
*.snap

View File

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

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