From a4fa17d84b7642f5e56d4c901036d107dacff5cc Mon Sep 17 00:00:00 2001
From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com>
Date: Sun, 7 Jul 2024 17:19:34 -0400
Subject: [PATCH] build(flatpak): sync dependencies with flathub

---
 .github/workflows/CI.yml                      |   4 +-
 .../flatpak/dev.lizardbyte.app.Sunshine.yml   | 234 +-----------------
 packaging/linux/flatpak/modules/avahi.json    |  53 ++++
 packaging/linux/flatpak/modules/cuda.json     |  74 ++++++
 packaging/linux/flatpak/modules/libevdev.json |  26 ++
 .../linux/flatpak/modules/libnotify.json      |  26 ++
 .../linux/flatpak/modules/miniupnpc.json      |  25 ++
 packaging/linux/flatpak/modules/numactl.json  |  22 ++
 8 files changed, 241 insertions(+), 223 deletions(-)
 create mode 100644 packaging/linux/flatpak/modules/avahi.json
 create mode 100644 packaging/linux/flatpak/modules/cuda.json
 create mode 100644 packaging/linux/flatpak/modules/libevdev.json
 create mode 100644 packaging/linux/flatpak/modules/libnotify.json
 create mode 100644 packaging/linux/flatpak/modules/miniupnpc.json
 create mode 100644 packaging/linux/flatpak/modules/numactl.json

diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index cd8cfc03f43..115e0ad85db 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -98,9 +98,9 @@ jobs:
           submodules: recursive
 
       - name: Setup Dependencies Linux Flatpak
+        env:
+          PLATFORM_VERSION: "23.08"
         run: |
-          PLATFORM_VERSION=22.08
-
           sudo apt-get update -y
           sudo apt-get install -y \
             cmake \
diff --git a/packaging/linux/flatpak/dev.lizardbyte.app.Sunshine.yml b/packaging/linux/flatpak/dev.lizardbyte.app.Sunshine.yml
index b4c7dbce98d..35e1baebf46 100644
--- a/packaging/linux/flatpak/dev.lizardbyte.app.Sunshine.yml
+++ b/packaging/linux/flatpak/dev.lizardbyte.app.Sunshine.yml
@@ -1,10 +1,10 @@
 ---
 app-id: "@PROJECT_FQDN@"
 runtime: org.freedesktop.Platform
-runtime-version: "22.08"
+runtime-version: "23.08"
 sdk: org.freedesktop.Sdk
 sdk-extensions:
-  - org.freedesktop.Sdk.Extension.node18
+  - org.freedesktop.Sdk.Extension.node20
   - org.freedesktop.Sdk.Extension.vala
 command: sunshine
 separate-locales: false
@@ -34,227 +34,19 @@ build-options:
   prepend-ld-library-path: /usr/lib/sdk/vala/lib
 
 modules:
+  # Test dependencies
   - "modules/xvfb/xvfb.json"
 
-  - name: avahi
-    disabled: false
-    cleanup:
-      - /bin
-      - /lib/avahi
-      - /share
-    config-opts:
-      - --with-distro=none
-      - --disable-gobject
-      - --disable-introspection
-      - --disable-qt3
-      - --disable-qt4
-      - --disable-qt5
-      - --disable-gtk
-      - --disable-core-docs
-      - --disable-manpages
-      - --disable-libdaemon
-      - --disable-python
-      - --disable-pygobject
-      - --disable-mono
-      - --disable-monodoc
-      - --disable-autoipd
-      - --disable-doxygen-doc
-      - --disable-doxygen-dot
-      - --disable-doxygen-xml
-      - --disable-doxygen-html
-      - --disable-manpages
-      - --disable-xmltoman
-      - --disable-libevent
-    sources:
-      - type: archive
-        url: http://archive.ubuntu.com/ubuntu/pool/main/a/avahi/avahi_0.8.orig.tar.gz
-        sha256: 060309d7a333d38d951bc27598c677af1796934dbd98e1024e7ad8de798fedda
-      - type: archive
-        url: http://archive.ubuntu.com/ubuntu/pool/main/a/avahi/avahi_0.8-6ubuntu1.debian.tar.xz
-        sha256: ebf1dfe5e853b6bc6843e3bd784cb6af632041f305abd0e5415114f80c1dcea4
-      - type: shell
-        commands:
-          - for n in $(cat patches/series); do if [[ $n != "#"* ]]; then patch -Np1 -i "patches/$n" -d .; fi; done
-          - autoreconf -ivf
-
-  # yamllint disable-line rule:line-length
-  # https://github.com/flathub/org.localsend.localsend_app/blob/7465669c22a2a4fc35e707e1e4e7e882772adc0e/org.localsend.localsend_app.yml#L27-L106
-  # https://github.com/flathub/app.vup.Vup/blob/8c5073c7c5b8f24805013abc85a0860ca2439396/app.vup.Vup.yaml#L30-L78
-  - name: libayatana-appindicator
-    buildsystem: cmake-ninja
-    config-opts:
-      - -DENABLE_BINDINGS_MONO=NO
-      - -DENABLE_BINDINGS_VALA=NO
-    modules:
-      - shared-modules/intltool/intltool-0.51.json
-      - name: libdbusmenu-gtk3  # Dependency of libayatana-appindicator
-        buildsystem: autotools
-        build-options:
-          cflags: -Wno-error
-          env:
-            HAVE_VALGRIND_FALSE: '#'
-            HAVE_VALGRIND_TRUE: ''
-        config-opts:
-          - --with-gtk=3
-          - --disable-dumper
-          - --disable-static
-          - --disable-tests
-          - --disable-gtk-doc
-          - --enable-introspection=no
-          - --disable-vala
-        sources:
-          - type: archive
-            url: https://launchpad.net/libdbusmenu/16.04/16.04.0/+download/libdbusmenu-16.04.0.tar.gz
-            sha256: b9cc4a2acd74509435892823607d966d424bd9ad5d0b00938f27240a1bfa878a
-        cleanup:
-          - /include
-          - /libexec
-          - /lib/pkgconfig
-          - /lib/*.la
-          - /share/doc
-          - /share/libdbusmenu
-          - /share/gtk-doc
-          - /share/gir-1.0
-      - name: ayatana-ido
-        buildsystem: cmake-ninja
-        sources:
-          - type: git
-            url: https://github.com/AyatanaIndicators/ayatana-ido.git
-            tag: 0.10.1
-            commit: 13402a2cc4616b4b5f4244413599e635fcfc1401
-            x-checker-data:
-              type: anitya
-              project-id: 18445
-              tag-template: $version
-              stable-only: true
-      - name: libayatana-indicator
-        buildsystem: cmake-ninja
-        sources:
-          - type: git
-            url: https://github.com/AyatanaIndicators/libayatana-indicator.git
-            tag: 0.9.3
-            commit: a62e8ca13040554a8fc2536ce7e6aa888c5729d9
-            x-checker-data:
-              type: anitya
-              project-id: 18447
-              tag-template: $version
-              stable-only: true
-    sources:
-      - type: git
-        url: https://github.com/AyatanaIndicators/libayatana-appindicator.git
-        tag: 0.5.92
-        commit: d214fe3e7a6b1ba8faea68d70586310b34dc643c
-        x-checker-data:
-          type: anitya
-          project-id: 18446
-          tag-template: $version
-          stable-only: true
-
-  - name: libevdev
-    disabled: false
-    buildsystem: meson
-    config-opts:
-      - -Ddocumentation=disabled
-      - -Dtests=disabled
-    cleanup:
-      - /bin
-    sources:
-      - type: archive
-        url: http://archive.ubuntu.com/ubuntu/pool/main/libe/libevdev/libevdev_1.13.0+dfsg.orig.tar.xz
-        sha256: a882e13ef1dd6bd227318080cabf60fe5af3c06471259d3acfc9dbfb202351a7
-      - type: archive
-        url: http://archive.ubuntu.com/ubuntu/pool/main/libe/libevdev/libevdev_1.13.0+dfsg-1.debian.tar.xz
-        sha256: d33c56acbbfff2dc540e45c57a38d92210b5e7fd0947ac47fbe48183468aad74
-      - type: shell
-        commands:
-          - for n in $(cat patches/series); do if [[ $n != "#"* ]]; then patch -Np1 -i "patches/$n" -d .; fi; done
+  # Runtime dependencies
+  - shared-modules/libappindicator/libappindicator-gtk3-12.10.json
+  - "modules/avahi.json"
+  - "modules/libevdev.json"
+  - "modules/libnotify.json"
+  - "modules/miniupnpc.json"
+  - "modules/numactl.json"  # TODO: is this still needed?
 
-  - name: libnotify
-    buildsystem: meson
-    config-opts:
-      - -Dtests=false
-      - -Dintrospection=disabled
-      - -Dman=false
-      - -Dgtk_doc=false
-      - -Ddocbook_docs=disabled
-    sources:
-      - type: archive
-        url: https://download.gnome.org/sources/libnotify/0.8/libnotify-0.8.2.tar.xz
-        sha256: c5f4ed3d1f86e5b118c76415aacb861873ed3e6f0c6b3181b828cf584fc5c616
-        x-checker-data:
-          type: gnome
-          name: libnotify
-          stable-only: true
-      - type: archive
-        url: https://download.gnome.org/sources/gnome-common/3.18/gnome-common-3.18.0.tar.xz
-        sha256: 22569e370ae755e04527b76328befc4c73b62bfd4a572499fde116b8318af8cf
-        x-checker-data:
-          type: gnome
-          name: gnome-common
-          stable-only: true
-
-  - name: miniupnpc
-    buildsystem: cmake-ninja
-    config-opts:
-      - -DUPNPC_BUILD_SAMPLE=OFF
-      - -DUPNPC_BUILD_SHARED=ON
-      - -DUPNPC_BUILD_TESTS=OFF
-    sources:
-      - type: archive
-        url: http://archive.ubuntu.com/ubuntu/pool/main/m/miniupnpc/miniupnpc_2.2.5.orig.tar.gz
-        sha256: 38acd5f4602f7cf8bcdc1ec30b2d58db2e9912e5d9f5350dd99b06bfdffb517c
-      - type: archive
-        url: http://archive.ubuntu.com/ubuntu/pool/main/m/miniupnpc/miniupnpc_2.2.5-1.debian.tar.xz
-        sha256: f6ab181f3c999ae0630508ea1e6c76ae302262414061acaab12bf8763431ffd1
-      - type: shell
-        commands:
-          - for n in $(cat patches/series); do if [[ $n != "#"* ]]; then patch -Np1 -i "patches/$n" -d .; fi; done
-
-  - name: numactl
-    buildsystem: autotools
-    make-args:
-      - install
-    sources:
-      - type: archive
-        url: http://archive.ubuntu.com/ubuntu/pool/main/n/numactl/numactl_2.0.14.orig.tar.gz
-        sha256: 1ee27abd07ff6ba140aaf9bc6379b37825e54496e01d6f7343330cf1a4487035
-      - type: archive
-        url: http://archive.ubuntu.com/ubuntu/pool/main/n/numactl/numactl_2.0.14-3ubuntu2.debian.tar.xz
-        sha256: 49089e5be5367f6367f8b0389d1d523944432607783b53f0605705792e1015ee
-      - type: shell
-        commands:
-          - for n in $(cat patches/series); do if [[ $n != "#"* ]]; then patch -Np1 -i "patches/$n" -d .; fi; done
-    cleanup:
-      - "/bin"
-
-  # Caching is configured until here, not including CUDA
-  - name: cuda
-    disabled: false
-    buildsystem: simple
-    only-arches:
-      - x86_64
-      - aarch64
-    cleanup:
-      - "*"
-    build-commands:
-      - chmod u+x ./cuda.run
-      - ./cuda.run --silent --toolkit --toolkitpath=$FLATPAK_DEST/cuda --no-opengl-libs --no-man-page --no-drm
-        --tmpdir=$FLATPAK_BUILDER_BUILDDIR
-      - rm -r $FLATPAK_DEST/cuda/nsight-systems-*
-      - rm ./cuda.run
-    sources:
-      - type: file
-        only-arches:
-          - x86_64
-        url: https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda_12.0.0_525.60.13_linux.run
-        sha256: 905e9b9516900839fb76064719db752439f38b8cb730b49335d8bd53ddfad392
-        dest-filename: cuda.run
-      - type: file
-        only-arches:
-          - aarch64
-        url: https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda_12.0.0_525.60.13_linux_sbsa.run  # yamllint disable-line rule:line-length
-        sha256: cd13e9c65d4c8f895a968706f46064d536be09f9706bce081cc864b7e4fa4544
-        dest-filename: cuda.run
+  # Caching is configured until here, not including CUDA, since it is too large for GitHub cache
+  - "modules/cuda.json"
 
   - name: sunshine
     disabled: false
@@ -262,7 +54,7 @@ modules:
     no-make-install: false
     builddir: true
     build-options:
-      append-path: /usr/lib/sdk/node18/bin
+      append-path: /usr/lib/sdk/node20/bin
       build-args:
         - --share=network
       test-args:
diff --git a/packaging/linux/flatpak/modules/avahi.json b/packaging/linux/flatpak/modules/avahi.json
new file mode 100644
index 00000000000..3e0998c7c4f
--- /dev/null
+++ b/packaging/linux/flatpak/modules/avahi.json
@@ -0,0 +1,53 @@
+{
+  "name": "avahi",
+  "cleanup": [
+    "/bin",
+    "/lib/avahi",
+    "/share"
+  ],
+  "config-opts": [
+    "--with-distro=none",
+    "--disable-gobject",
+    "--disable-introspection",
+    "--disable-qt3",
+    "--disable-qt4",
+    "--disable-qt5",
+    "--disable-gtk",
+    "--disable-core-docs",
+    "--disable-manpages",
+    "--disable-libdaemon",
+    "--disable-python",
+    "--disable-pygobject",
+    "--disable-mono",
+    "--disable-monodoc",
+    "--disable-autoipd",
+    "--disable-doxygen-doc",
+    "--disable-doxygen-dot",
+    "--disable-doxygen-xml",
+    "--disable-doxygen-html",
+    "--disable-manpages",
+    "--disable-xmltoman",
+    "--disable-libevent"
+  ],
+  "sources": [
+    {
+      "type": "git",
+      "url": "https://salsa.debian.org/utopia-team/avahi.git",
+      "commit": "1412c015d348166d58ea9c192239b00769eae24e",
+      "tag": "debian/0.8-13",
+      "x-checker-data": {
+        "type": "git",
+        "tag-pattern": "^debian\\/(\\d.+)$",
+        "versions": {
+          "<": "0.9"
+        }
+      }
+    },
+    {
+      "type": "shell",
+      "commands": [
+        "autoreconf -ivf"
+      ]
+    }
+  ]
+}
diff --git a/packaging/linux/flatpak/modules/cuda.json b/packaging/linux/flatpak/modules/cuda.json
new file mode 100644
index 00000000000..6bef3e1bd54
--- /dev/null
+++ b/packaging/linux/flatpak/modules/cuda.json
@@ -0,0 +1,74 @@
+{
+  "name": "cuda",
+  "build-options": {
+    "no_debuginfo": true
+  },
+  "buildsystem": "simple",
+  "cleanup": [
+    "*"
+  ],
+  "build-commands": [
+    "rm ./*/LICENSE",
+    "mkdir -p $FLATPAK_DEST/cuda",
+    "cp -r cuda_nvcc/* $FLATPAK_DEST/cuda",
+    "cp -r cuda_cudart/* $FLATPAK_DEST/cuda",
+    "cp -r libcurand/* $FLATPAK_DEST/cuda",
+    "mv $FLATPAK_DEST/cuda/lib $FLATPAK_DEST/cuda/lib64"
+  ],
+  "sources": [
+    {
+      "type": "archive",
+      "only-arches": [
+        "x86_64"
+      ],
+      "url": "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvcc/linux-x86_64/cuda_nvcc-linux-x86_64-11.8.89-archive.tar.xz",
+      "sha256": "7ee8450dbcc16e9fe5d2a7b567d6dec220c5894a94ac6640459e06231e3b39a5",
+      "dest": "cuda_nvcc"
+    },
+    {
+      "type": "archive",
+      "only-arches": [
+        "x86_64"
+      ],
+      "url": "https://developer.download.nvidia.com/compute/cuda/redist/cuda_cudart/linux-x86_64/cuda_cudart-linux-x86_64-11.8.89-archive.tar.xz",
+      "sha256": "56129e0c42df03ecb50a7bb23fc3285fa39af1a818f8826b183cf793529098bb",
+      "dest": "cuda_cudart"
+    },
+    {
+      "type": "archive",
+      "only-arches": [
+        "x86_64"
+      ],
+      "url": "https://developer.download.nvidia.com/compute/cuda/redist/libcurand/linux-x86_64/libcurand-linux-x86_64-10.3.0.86-archive.tar.xz",
+      "sha256": "9d30be251c1a0463b52203f6514dac5062844c606d13e234d1386e80c83db279",
+      "dest": "libcurand"
+    },
+    {
+      "type": "archive",
+      "only-arches": [
+        "aarch64"
+      ],
+      "url": "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvcc/linux-sbsa/cuda_nvcc-linux-sbsa-11.8.89-archive.tar.xz",
+      "sha256": "17d30d924a1d6ff5748a0b6a4e7c25fd39644250cef9184fba520362f70ff798",
+      "dest": "cuda_nvcc"
+    },
+    {
+      "type": "archive",
+      "only-arches": [
+        "aarch64"
+      ],
+      "url": "https://developer.download.nvidia.com/compute/cuda/redist/cuda_cudart/linux-sbsa/cuda_cudart-linux-sbsa-11.8.89-archive.tar.xz",
+      "sha256": "88f496a2f96f5bb2a9cb351e6704dfe6a45e713e571c958a3924b2a02e7adea0",
+      "dest": "cuda_cudart"
+    },
+    {
+      "type": "archive",
+      "only-arches": [
+        "aarch64"
+      ],
+      "url": "https://developer.download.nvidia.com/compute/cuda/redist/libcurand/linux-sbsa/libcurand-linux-sbsa-10.3.0.86-archive.tar.xz",
+      "sha256": "3df3571103b056ab354e616f1c0737b1b2a25a7875b98b1b9bf32dee94449699",
+      "dest": "libcurand"
+    }
+  ]
+}
diff --git a/packaging/linux/flatpak/modules/libevdev.json b/packaging/linux/flatpak/modules/libevdev.json
new file mode 100644
index 00000000000..e3cbb27eb1f
--- /dev/null
+++ b/packaging/linux/flatpak/modules/libevdev.json
@@ -0,0 +1,26 @@
+{
+  "name": "libevdev",
+  "buildsystem": "meson",
+  "config-opts": [
+    "-Ddocumentation=disabled",
+    "-Dtests=disabled"
+  ],
+  "cleanup": [
+    "/bin"
+  ],
+  "sources": [
+    {
+      "type": "git",
+      "url": "https://salsa.debian.org/debian/libevdev.git",
+      "commit": "1aa7baa233d6df4cee6a66fbc61bb5ffc8b6e88d",
+      "tag": "debian/1.13.0+dfsg-1",
+      "x-checker-data": {
+        "type": "git",
+        "tag-pattern": "^debian\\/(\\d.\\d+\\.\\d+)",
+        "versions": {
+          "<": "1.13.1"
+        }
+      }
+    }
+  ]
+}
diff --git a/packaging/linux/flatpak/modules/libnotify.json b/packaging/linux/flatpak/modules/libnotify.json
new file mode 100644
index 00000000000..8bede092529
--- /dev/null
+++ b/packaging/linux/flatpak/modules/libnotify.json
@@ -0,0 +1,26 @@
+{
+  "name": "libnotify",
+  "buildsystem": "meson",
+  "config-opts": [
+    "-Dtests=false",
+    "-Dintrospection=disabled",
+    "-Dman=false",
+    "-Dgtk_doc=false",
+    "-Ddocbook_docs=disabled"
+  ],
+  "sources": [
+    {
+      "type": "git",
+      "url": "https://salsa.debian.org/gnome-team/libnotify.git",
+      "commit": "ccf2f62ef0a4b264dd4eff32cab70a3e213ceb1a",
+      "tag": "debian/0.8.1-1",
+      "x-checker-data": {
+        "type": "git",
+        "tag-pattern": "^debian\\/(\\d.+)$",
+        "versions": {
+          "<": "0.8.2"
+        }
+      }
+    }
+  ]
+}
diff --git a/packaging/linux/flatpak/modules/miniupnpc.json b/packaging/linux/flatpak/modules/miniupnpc.json
new file mode 100644
index 00000000000..1a3ce99b484
--- /dev/null
+++ b/packaging/linux/flatpak/modules/miniupnpc.json
@@ -0,0 +1,25 @@
+{
+  "name": "miniupnpc",
+  "buildsystem": "cmake-ninja",
+  "config-opts": [
+    "-DCMAKE_BUILD_TYPE=Release",
+    "-DUPNPC_BUILD_SAMPLE=OFF",
+    "-DUPNPC_BUILD_SHARED=ON",
+    "-DUPNPC_BUILD_TESTS=OFF"
+  ],
+  "sources": [
+    {
+      "type": "git",
+      "url": "https://salsa.debian.org/miniupnp-team/miniupnpc.git",
+      "commit": "c5fe3aa794e92a503cecec6a4071eb6d310b4e42",
+      "tag": "debian/2.2.4-1",
+      "x-checker-data": {
+        "type": "git",
+        "tag-pattern": "^debian\\/(\\d.+)$",
+        "versions": {
+          "<": "2.2.5"
+        }
+      }
+    }
+  ]
+}
diff --git a/packaging/linux/flatpak/modules/numactl.json b/packaging/linux/flatpak/modules/numactl.json
new file mode 100644
index 00000000000..b03403be3a3
--- /dev/null
+++ b/packaging/linux/flatpak/modules/numactl.json
@@ -0,0 +1,22 @@
+{
+  "name": "numactl",
+  "buildsystem": "autotools",
+  "cleanup": [
+    "/bin"
+  ],
+  "sources": [
+    {
+      "type": "git",
+      "url": "https://salsa.debian.org/debian/numactl.git",
+      "commit": "640bb34497702f9aaeb8af1b491f32b91d03ec80",
+      "tag": "debian/2.0.16-1",
+      "x-checker-data": {
+        "type": "git",
+        "tag-pattern": "^debian\\/(\\d.+)$",
+        "versions": {
+          "<": "2.0.17"
+        }
+      }
+    }
+  ]
+}