aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorseth <getchoo@tuta.io>2023-07-18 20:12:39 +0000
committerGitHub <noreply@github.com>2023-07-18 20:12:39 +0000
commit5b54475d3e6c101f2bdd645350f3c81ad4fc12a3 (patch)
tree2bfac7b6f1c0b426b73af0a569177475691a84a0
parent01afa8957f477d347c5103305a038a30edd24ca2 (diff)
parent2eff1de560c9b4ac76316d2c6d812438b4488222 (diff)
downloadPrismLauncher-5b54475d3e6c101f2bdd645350f3c81ad4fc12a3.tar.gz
PrismLauncher-5b54475d3e6c101f2bdd645350f3c81ad4fc12a3.tar.bz2
PrismLauncher-5b54475d3e6c101f2bdd645350f3c81ad4fc12a3.zip
Merge pull request #1385 from orowith2os/flatpak-updates
Update Flatpak manifest
-rw-r--r--.gitmodules3
-rw-r--r--flatpak/libdecor.json22
-rw-r--r--flatpak/org.prismlauncher.PrismLauncher.yml115
-rw-r--r--flatpak/patches/0003-Don-t-crash-on-calls-to-focus-or-icon.patch24
-rw-r--r--flatpak/patches/0005-Add-warning-about-being-an-unofficial-patch.patch17
-rw-r--r--flatpak/patches/0007-Platform-Prefer-Wayland-over-X11.patch20
-rw-r--r--flatpak/patches/weird_libdecor.patch40
-rw-r--r--flatpak/prismlauncher4
m---------flatpak/shared-modules0
9 files changed, 221 insertions, 24 deletions
diff --git a/.gitmodules b/.gitmodules
index 87703fee..0f437d27 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -19,3 +19,6 @@
[submodule "libraries/cmark"]
path = libraries/cmark
url = https://github.com/commonmark/cmark.git
+[submodule "flatpak/shared-modules"]
+ path = flatpak/shared-modules
+ url = https://github.com/flathub/shared-modules.git
diff --git a/flatpak/libdecor.json b/flatpak/libdecor.json
new file mode 100644
index 00000000..12afad69
--- /dev/null
+++ b/flatpak/libdecor.json
@@ -0,0 +1,22 @@
+{
+ "name": "libdecor",
+ "buildsystem": "meson",
+ "config-opts": [
+ "-Ddemo=false"
+ ],
+ "sources": [
+ {
+ "type": "git",
+ "url": "https://gitlab.freedesktop.org/libdecor/libdecor.git",
+ "commit": "73260393a97291c887e1074ab7f318e031be0ac6"
+ },
+ {
+ "type": "patch",
+ "path": "patches/weird_libdecor.patch"
+ }
+ ],
+ "cleanup": [
+ "/include",
+ "/lib/pkgconfig"
+ ]
+}
diff --git a/flatpak/org.prismlauncher.PrismLauncher.yml b/flatpak/org.prismlauncher.PrismLauncher.yml
index 0524946f..a9b9762f 100644
--- a/flatpak/org.prismlauncher.PrismLauncher.yml
+++ b/flatpak/org.prismlauncher.PrismLauncher.yml
@@ -5,13 +5,6 @@ sdk: org.kde.Sdk
sdk-extensions:
- org.freedesktop.Sdk.Extension.openjdk17
- org.freedesktop.Sdk.Extension.openjdk8
-add-extensions:
- com.valvesoftware.Steam.Utility.gamescope:
- version: stable
- add-ld-path: lib
- no-autodownload: true
- autodelete: false
- directory: utils/gamescope
command: prismlauncher
finish-args:
@@ -26,21 +19,31 @@ finish-args:
# Mod drag&drop
- --filesystem=xdg-download:ro
+cleanup:
+ - /lib/libGLU*
+
modules:
+ # Might be needed by some Controller mods (see https://github.com/isXander/Controlify/issues/31)
+ - shared-modules/libusb/libusb.json
+
+ # Needed for proper Wayland support
+ - libdecor.json
+
- name: prismlauncher
buildsystem: cmake-ninja
+ builddir: true
config-opts:
- -DLauncher_BUILD_PLATFORM=flatpak
- - -DCMAKE_BUILD_TYPE=Debug
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
- -DLauncher_QT_VERSION_MAJOR=5
build-options:
env:
JAVA_HOME: /usr/lib/sdk/openjdk17/jvm/openjdk-17
JAVA_COMPILER: /usr/lib/sdk/openjdk17/jvm/openjdk-17/bin/javac
sources:
- - type: dir
- path: ../
- builddir: true
+ - type: dir
+ path: ../
+
- name: openjdk
buildsystem: simple
build-commands:
@@ -49,14 +52,45 @@ modules:
- mv /app/jre /app/jdk/17
- /usr/lib/sdk/openjdk8/install.sh
- mv /app/jre /app/jdk/8
- cleanup: [/jre]
+ cleanup:
+ - /jre
+
+ - name: glfw
+ buildsystem: cmake-ninja
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ - -DBUILD_SHARED_LIBS:BOOL=ON
+ - -DGLFW_USE_WAYLAND=ON
+ sources:
+ - type: git
+ url: https://github.com/glfw/glfw.git
+ commit: 3fa2360720eeba1964df3c0ecf4b5df8648a8e52
+ - type: patch
+ path: patches/0003-Don-t-crash-on-calls-to-focus-or-icon.patch
+ - type: patch
+ path: patches/0005-Add-warning-about-being-an-unofficial-patch.patch
+ - type: patch
+ path: patches/0007-Platform-Prefer-Wayland-over-X11.patch
+ cleanup:
+ - /include
+ - /lib/cmake
+ - /lib/pkgconfig
+
- name: xrandr
buildsystem: autotools
sources:
- type: archive
- url: https://xorg.freedesktop.org/archive/individual/app/xrandr-1.5.1.tar.xz
- sha256: 7bc76daf9d72f8aff885efad04ce06b90488a1a169d118dea8a2b661832e8762
- cleanup: [/share/man, /bin/xkeystone]
+ url: https://xorg.freedesktop.org/archive/individual/app/xrandr-1.5.2.tar.xz
+ sha256: c8bee4790d9058bacc4b6246456c58021db58a87ddda1a9d0139bf5f18f1f240
+ x-checker-data:
+ type: anitya
+ project-id: 14957
+ stable-only: true
+ url-template: https://xorg.freedesktop.org/archive/individual/app/xrandr-$version.tar.xz
+ cleanup:
+ - /share/man
+ - /bin/xkeystone
+
- name: gamemode
buildsystem: meson
config-opts:
@@ -67,19 +101,56 @@ modules:
# post-install is running inside the build dir, we need it from the source though
- install -Dm755 ../data/gamemoderun -t /app/bin
sources:
- - type: git
- url: https://github.com/FeralInteractive/gamemode
- tag: "1.7"
- commit: 4dc99dff76218718763a6b07fc1900fa6d1dafd9
+ - type: archive
+ archive-type: tar-gzip
+ url: https://api.github.com/repos/FeralInteractive/gamemode/tarball/1.7
+ sha256: 57ce73ba605d1cf12f8d13725006a895182308d93eba0f69f285648449641803
+ x-checker-data:
+ type: json
+ url: https://api.github.com/repos/FeralInteractive/gamemode/releases/latest
+ version-query: .tag_name
+ url-query: .tarball_url
+ timestamp-query: .published_at
+ cleanup:
+ - /include
+ - /lib/pkgconfig
+ - /lib/libgamemodeauto.a
+
+ - name: glxinfo
+ buildsystem: meson
+ config-opts:
+ - --bindir=/app/mesa-demos
+ - -Degl=disabled
+ - -Dglut=disabled
+ - -Dosmesa=disabled
+ - -Dvulkan=disabled
+ - -Dwayland=disabled
+ post-install:
+ - mv -v /app/mesa-demos/glxinfo /app/bin
+ sources:
+ - type: archive
+ url: https://archive.mesa3d.org/demos/mesa-demos-9.0.0.tar.xz
+ sha256: 3046a3d26a7b051af7ebdd257a5f23bfeb160cad6ed952329cdff1e9f1ed496b
+ x-checker-data:
+ type: anitya
+ project-id: 16781
+ stable-only: true
+ url-template: https://archive.mesa3d.org/demos/mesa-demos-$version.tar.xz
+ cleanup:
+ - /include
+ - /mesa-demos
+ - /share
+ modules:
+ - shared-modules/glu/glu-9.json
+
- name: enhance
buildsystem: simple
build-commands:
- - mkdir -p /app/utils/gamescope
- install -Dm755 prime-run /app/bin/prime-run
- mv /app/bin/prismlauncher /app/bin/prismrun
- install -Dm755 prismlauncher /app/bin/prismlauncher
sources:
- type: file
- path: ../flatpak/prime-run
+ path: prime-run
- type: file
- path: ../flatpak/prismlauncher
+ path: prismlauncher
diff --git a/flatpak/patches/0003-Don-t-crash-on-calls-to-focus-or-icon.patch b/flatpak/patches/0003-Don-t-crash-on-calls-to-focus-or-icon.patch
new file mode 100644
index 00000000..9130e856
--- /dev/null
+++ b/flatpak/patches/0003-Don-t-crash-on-calls-to-focus-or-icon.patch
@@ -0,0 +1,24 @@
+diff --git a/src/wl_window.c b/src/wl_window.c
+index 52d3b9eb..4ac4eb5d 100644
+--- a/src/wl_window.c
++++ b/src/wl_window.c
+@@ -2117,8 +2117,7 @@ void _glfwSetWindowTitleWayland(_GLFWwindow* window, const char* title)
+ void _glfwSetWindowIconWayland(_GLFWwindow* window,
+ int count, const GLFWimage* images)
+ {
+- _glfwInputError(GLFW_FEATURE_UNAVAILABLE,
+- "Wayland: The platform does not support setting the window icon");
++ fprintf(stderr, "!!! Ignoring Error: Wayland: The platform does not support setting the window icon\n");
+ }
+
+ void _glfwGetWindowPosWayland(_GLFWwindow* window, int* xpos, int* ypos)
+@@ -2361,8 +2360,7 @@ void _glfwRequestWindowAttentionWayland(_GLFWwindow* window)
+
+ void _glfwFocusWindowWayland(_GLFWwindow* window)
+ {
+- _glfwInputError(GLFW_FEATURE_UNAVAILABLE,
+- "Wayland: The platform does not support setting the input focus");
++ fprintf(stderr, "!!! Ignoring Error: Wayland: The platform does not support setting the input focus\n");
+ }
+
+ void _glfwSetWindowMonitorWayland(_GLFWwindow* window,
diff --git a/flatpak/patches/0005-Add-warning-about-being-an-unofficial-patch.patch b/flatpak/patches/0005-Add-warning-about-being-an-unofficial-patch.patch
new file mode 100644
index 00000000..b031d739
--- /dev/null
+++ b/flatpak/patches/0005-Add-warning-about-being-an-unofficial-patch.patch
@@ -0,0 +1,17 @@
+diff --git a/src/init.c b/src/init.c
+index 06dbb3f2..a7c6da86 100644
+--- a/src/init.c
++++ b/src/init.c
+@@ -449,6 +449,12 @@ GLFWAPI int glfwInit(void)
+ _glfw.initialized = GLFW_TRUE;
+
+ glfwDefaultWindowHints();
++
++ fprintf(stderr, "!!! Patched GLFW from https://github.com/Admicos/minecraft-wayland\n"
++ "!!! If any issues with the window, or some issues with rendering, occur, "
++ "first try with the built-in GLFW, and if that solves the issue, report there first.\n"
++ "!!! Use outside Minecraft is untested, and things might break.\n");
++
+ return GLFW_TRUE;
+ }
+
diff --git a/flatpak/patches/0007-Platform-Prefer-Wayland-over-X11.patch b/flatpak/patches/0007-Platform-Prefer-Wayland-over-X11.patch
new file mode 100644
index 00000000..4eeb8130
--- /dev/null
+++ b/flatpak/patches/0007-Platform-Prefer-Wayland-over-X11.patch
@@ -0,0 +1,20 @@
+diff --git a/src/platform.c b/src/platform.c
+index c5966ae7..3e7442f9 100644
+--- a/src/platform.c
++++ b/src/platform.c
+@@ -49,12 +49,12 @@ static const struct
+ #if defined(_GLFW_COCOA)
+ { GLFW_PLATFORM_COCOA, _glfwConnectCocoa },
+ #endif
+-#if defined(_GLFW_X11)
+- { GLFW_PLATFORM_X11, _glfwConnectX11 },
+-#endif
+ #if defined(_GLFW_WAYLAND)
+ { GLFW_PLATFORM_WAYLAND, _glfwConnectWayland },
+ #endif
++#if defined(_GLFW_X11)
++ { GLFW_PLATFORM_X11, _glfwConnectX11 },
++#endif
+ };
+
+ GLFWbool _glfwSelectPlatform(int desiredID, _GLFWplatform* platform)
diff --git a/flatpak/patches/weird_libdecor.patch b/flatpak/patches/weird_libdecor.patch
new file mode 100644
index 00000000..3a400b82
--- /dev/null
+++ b/flatpak/patches/weird_libdecor.patch
@@ -0,0 +1,40 @@
+diff --git a/src/libdecor.c b/src/libdecor.c
+index a9c1106..1aa38b3 100644
+--- a/src/libdecor.c
++++ b/src/libdecor.c
+@@ -1391,22 +1391,32 @@ calculate_priority(const struct libdecor_plugin_description *plugin_description)
+ static bool
+ check_symbol_conflicts(const struct libdecor_plugin_description *plugin_description)
+ {
++ bool ret = true;
+ char * const *symbol;
++ void* main_prog = dlopen(NULL, RTLD_LAZY);
++ if (!main_prog) {
++ fprintf(stderr, "Plugin \"%s\" couldn't check conflicting symbols: \"%s\".\n",
++ plugin_description->description, dlerror());
++ return false;
++ }
++
+
+ symbol = plugin_description->conflicting_symbols;
+ while (*symbol) {
+ dlerror();
+- dlsym (RTLD_DEFAULT, *symbol);
++ dlsym (main_prog, *symbol);
+ if (!dlerror()) {
+ fprintf(stderr, "Plugin \"%s\" uses conflicting symbol \"%s\".\n",
+ plugin_description->description, *symbol);
+- return false;
++ ret = false;
++ break;
+ }
+
+ symbol++;
+ }
+
+- return true;
++ dlclose(main_prog);
++ return ret;
+ }
+
+ static struct plugin_loader *
diff --git a/flatpak/prismlauncher b/flatpak/prismlauncher
index bb876711..039d890d 100644
--- a/flatpak/prismlauncher
+++ b/flatpak/prismlauncher
@@ -5,7 +5,7 @@ for i in {0..9}; do
test -S "$XDG_RUNTIME_DIR"/discord-ipc-"$i" || ln -sf {app/com.discordapp.Discord,"$XDG_RUNTIME_DIR"}/discord-ipc-"$i";
done
-export PATH="${PATH}${PATH:+:}/app/utils/gamescope/bin:/usr/lib/extensions/vulkan/MangoHud/bin"
-export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}/usr/lib/extensions/vulkan/MangoHud/\$LIB/"
+export PATH="${PATH}${PATH:+:}/usr/lib/extensions/vulkan/gamescope/bin:/usr/lib/extensions/vulkan/MangoHud/bin"
+export VK_LAYER_PATH="/usr/lib/extensions/vulkan/share/vulkan/implicit_layer.d/"
exec /app/bin/prismrun "$@"
diff --git a/flatpak/shared-modules b/flatpak/shared-modules
new file mode 160000
+Subproject 45094ca570be383d06df729b6972830ec63bd3d