diff --git a/.github/workflows/cooker.yml b/.github/workflows/cooker.yml index b15b8d70..ecc12226 100644 --- a/.github/workflows/cooker.yml +++ b/.github/workflows/cooker.yml @@ -39,8 +39,8 @@ jobs: - name: Building flatpak run: | - sudo flatpak-builder --user --install --force-clean --repo=local retrodeck-flatpak com.xargon.retrodeck.yml - sudo flatpak build-bundle local RetroDECK.flatpak com.xargon.retrodeck + sudo flatpak-builder --user --install --force-clean --repo=local retrodeck-flatpak net.retrodeck.retrodeck.yml + sudo flatpak build-bundle local RetroDECK.flatpak net.retrodeck.retrodeck - name: Get date for artifacts id: date diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3d48a51a..1b8a8bdc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,9 +40,9 @@ jobs: # Runs a set of commands using the runners shell - name: Building flatpak run: | - sudo flatpak-builder --user --install --force-clean retrodeck-flatpak com.xargon.retrodeck.yml - sudo flatpak-builder --repo=local --force-clean localrepo com.xargon.retrodeck.yml - sudo flatpak build-bundle local RetroDECK.flatpak com.xargon.retrodeck + sudo flatpak-builder --user --install --force-clean retrodeck-flatpak net.retrodeck.retrodeck.yml + sudo flatpak-builder --repo=local --force-clean localrepo net.retrodeck.retrodeck.yml + sudo flatpak build-bundle local RetroDECK.flatpak net.retrodeck.retrodeck - name: Get date for artifacts id: date diff --git a/emu-configs/qt-config.ini b/emu-configs/qt-config.ini index 52a4121f..e743acdd 100644 --- a/emu-configs/qt-config.ini +++ b/emu-configs/qt-config.ini @@ -789,7 +789,7 @@ cpuopt_unsafe_unfuse_fma=true cpuopt_unsafe_unfuse_fma\default=true [Data%20Storage] -dump_directory=/home/steamos/.var/app/com.xargon.retrodeck/data/yuzu/dump +dump_directory=/home/steamos/.var/app/net.retrodeck.retrodeck/data/yuzu/dump dump_directory\default=true gamecard_current_game=false gamecard_current_game\default=true @@ -797,13 +797,13 @@ gamecard_inserted=false gamecard_inserted\default=true gamecard_path= gamecard_path\default=true -load_directory=/home/steamos/.var/app/com.xargon.retrodeck/data/yuzu/load +load_directory=/home/steamos/.var/app/net.retrodeck.retrodeck/data/yuzu/load load_directory\default=true -nand_directory=/home/steamos/.var/app/com.xargon.retrodeck/data/yuzu/nand +nand_directory=/home/steamos/.var/app/net.retrodeck.retrodeck/data/yuzu/nand nand_directory\default=true -sdmc_directory=/home/steamos/.var/app/com.xargon.retrodeck/data/yuzu/sdmc +sdmc_directory=/home/steamos/.var/app/net.retrodeck.retrodeck/data/yuzu/sdmc sdmc_directory\default=true -tas_directory=/home/steamos/.var/app/com.xargon.retrodeck/data/yuzu/tas +tas_directory=/home/steamos/.var/app/net.retrodeck.retrodeck/data/yuzu/tas tas_directory\default=true use_virtual_sd=true use_virtual_sd\default=true diff --git a/net.retrodeck.retrodeck.desktop b/net.retrodeck.retrodeck.desktop new file mode 100644 index 00000000..30abc6e3 --- /dev/null +++ b/net.retrodeck.retrodeck.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=RetroDECK +GenericName=Emulation bundle for Steam Deck +Type=Application +Comment=All you need for emulation on Steam Deck +Icon=net.retrodeck.retrodeck +Exec= +Terminal=false +StartupNotify=false +Keywords=multi;engine;emulator;standalone;steam;deck +Categories=Game;Emulator; \ No newline at end of file diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml new file mode 100644 index 00000000..c5543811 --- /dev/null +++ b/net.retrodeck.retrodeck.yml @@ -0,0 +1,800 @@ +app-id: net.retrodeck.retrodeck +runtime: org.kde.Platform +runtime-version: '5.15-21.08' +sdk: org.kde.Sdk +# Needed for rpcs3 +sdk-extensions: +- org.freedesktop.Sdk.Extension.llvm13 +# /Needed for rpcs3 +# Needed for Yuzu +base: io.qt.qtwebengine.BaseApp +base-version: 5.15-21.08 +# /Needed for Yuzu +command: retrodeck.sh + +finish-args: + - --socket=x11 + - --socket=wayland + - --socket=pulseaudio + - --share=ipc + - --share=network + - --device=all + - --filesystem=~/retrodeck:create + - --filesystem=/run/media + - --allow=multiarch + - --talk-name=org.freedesktop.ScreenSaver + - --talk-name=org.freedesktop.PowerManagement.Inhibit + - --talk-name=org.freedesktop.login1 + #- --filesystem=host + - --filesystem=xdg-run/app/com.discordapp.Discord:create + # Yuzu + - --filesystem=home:ro + # - --filesystem=/run/media:ro + # Dolphin + - --allow=bluetooth + #- --env=QT_QPA_PLATFORM=xcb not sure if this will break something + +cleanup: + # ES-DE + - /include + - /share/ffmpeg + - /lib/cmake + #- /lib/debug + - /lib/pkgconfig + # Yuzu + - /include + - /bin/glslangValidator + - /bin/zip* + - /bin/zstd* + - /lib/pkg-config + - /share/doc + - /share/man + - /src + - '*.a' + - '*.la' +cleanup-commands: + # Yuzu + - /app/cleanup-BaseApp.sh + +modules: + + - name: xmlstarlet + config-opts: + - --disable-static-libs + - --with-libxml-libs-prefix=/usr/lib + - --with-libxml-include-prefix=/usr/include/libxml2 + sources: + - type: archive + url: https://downloads.sourceforge.net/xmlstar/xmlstarlet-1.6.1.tar.gz + sha256: 15d838c4f3375332fd95554619179b69e4ec91418a3a5296e7c631b7ed19e7ca + - type: shell + commands: + - cp -p /usr/share/automake-*/config.{sub,guess} . + - autoreconf -vfi + post-install: + - ln -s "xml" "${FLATPAK_DEST}/bin/xmlstarlet" ||: + cleanup: ["*"] + + - name: kdialog + buildsystem: cmake-ninja + sources: + - type: git + url: https://github.com/KDE/kdialog.git + tag: v22.03.80 + + # ES-DE + + - name: ffmpeg + config-opts: + - --disable-static + - --disable-programs + - --disable-doc + - --enable-gpl + - --enable-shared + - --enable-libvorbis + - --enable-libopus + - --enable-libvpx + - --enable-postproc + sources: + - type: git + url: https://github.com/FFmpeg/FFmpeg.git + tag: n5.0 + + - name: freeimage + no-autogen: true + build-options: + cxxflags: -std=c++14 + make-args: + - DESTDIR=/app + sources: + - type: archive + url: http://downloads.sourceforge.net/freeimage/FreeImage3180.zip + sha256: f41379682f9ada94ea7b34fe86bf9ee00935a3147be41b6569c9605a53e438fd + - type: shell + commands: + - sed -i 's|-o root -g root ||' ./Makefile.gnu + - sed -i 's|/usr|/app|' ./Makefile.gnu + + - name: pugixml + buildsystem: cmake-ninja + config-opts: + - -DBUILD_SHARED_LIBS=on . + sources: + - type: archive + url: https://github.com/zeux/pugixml/releases/download/v1.11.4/pugixml-1.11.4.tar.gz + sha256: 8ddf57b65fb860416979a3f0640c2ad45ddddbbafa82508ef0a0af3ce7061716 + + - name: emulationstation-de + buildsystem: cmake-ninja + cleanup: + - es-app + - es-core + sources: + - type: git + url: https://gitlab.com/leonstyhre/emulationstation-de.git + branch: 5861455f1fad4f56f3310094bf0c66e1a1446784 + + # ES-DE - END + + - name: art-book-next + buildsystem: simple + build-commands: + - mkdir -p ${FLATPAK_DEST}/share/emulationstation/themes/art-book-next-de/ + - mv -f * ${FLATPAK_DEST}/share/emulationstation/themes/art-book-next-de/ + sources: + - type: git + url: https://github.com/anthonycaccese/art-book-next-de.git + branch: 8084ef17f05e68789ed83636de3a1b15f920d701 + + + # External manifests start + + # RetroArch - https://github.com/flathub/org.libretro.RetroArch + + - name: retroarch + config-opts: + - '--enable-dbus' + make-args: + - GLOBAL_CONFIG_DIR=${FLATPAK_DEST}/etc + sources: + - type: git + url: https://github.com/libretro/RetroArch.git + branch: de4e56ecf28a09057734f8624af6d62f3088734f + - type: file + path: rd-submodules/retroarch/org.libretro.RetroArch.appdata.xml + - type: file + path: rd-submodules/retroarch/retroarch.cfg + post-install: + - mkdir -p ${FLATPAK_DEST}/share/icons/hicolor/scalable/apps/ + - >- + mv ${FLATPAK_DEST}/share/pixmaps/retroarch.svg + ${FLATPAK_DEST}/share/icons/hicolor/scalable/apps/ + - rmdir --ignore-fail-on-non-empty ${FLATPAK_DEST}/share/pixmaps/ + - mkdir -p ${FLATPAK_DEST}/etc + - >- + sed s:@prefix@:${FLATPAK_DEST}:g retroarch.cfg > + ${FLATPAK_DEST}/etc/retroarch.cfg + - mkdir -p ${FLATPAK_DEST}/share/appdata + - cp org.libretro.RetroArch.appdata.xml ${FLATPAK_DEST}/share/appdata + modules: + - nvidia-cg-toolkit/nvidia-cg-toolkit-3.1.0013.json + - shared-modules/SDL/SDL-1.2.15.json + - shared-modules/SDL/SDL_image-1.2.12.json + - shared-modules/SDL/SDL_mixer-1.2.12.json + - shared-modules/SDL/SDL_net-1.2.8.json + - shared-modules/libusb/libusb.json + - shared-modules/gudev/gudev.json + - libbz2/libbz2-1.0.8.json + - libaio/libaio-0.3.112.json + - shared-modules/glu/glu-9.json + - libdecor/libdecor-0.1.0.json + - name: retroarch-filers-video + subdir: gfx/video_filters + make-install-args: + - PREFIX=${FLATPAK_DEST} + sources: + - type: git + url: https://github.com/libretro/RetroArch.git + commit: de4e56ecf28a09057734f8624af6d62f3088734f + - name: retroarch-filers-audio + subdir: libretro-common/audio/dsp_filters + make-install-args: + - PREFIX=${FLATPAK_DEST} + sources: + - type: git + url: https://github.com/libretro/RetroArch.git + commit: de4e56ecf28a09057734f8624af6d62f3088734f + - name: retroarch-assets + make-install-args: + - PREFIX=${FLATPAK_DEST} + sources: + - type: git + url: https://github.com/libretro/retroarch-assets.git + commit: f45dd1351e6bfb9f01e12bee8d358ad22a2bb8f9 + - name: libretro-database + make-install-args: + - PREFIX=${FLATPAK_DEST} + sources: + - type: git + url: https://github.com/libretro/libretro-database.git + commit: 1754130f72d8c00a512797bf85442576258279e8 + - name: libretro-core-info + make-install-args: + - PREFIX=${FLATPAK_DEST} + sources: + - type: git + url: https://github.com/libretro/libretro-core-info.git + commit: 1b2472eca14a5a187ff298ace1b614fd3d47bc7c + - name: retroarch-joypad-autoconfig + make-install-args: + - PREFIX=${FLATPAK_DEST} + sources: + - type: git + url: https://github.com/libretro/retroarch-joypad-autoconfig.git + commit: 0eb3ad2666e6bdc2de2cde4c5d4af29b8c7f2c67 + - name: common-shaders + make-install-args: + - PREFIX=${FLATPAK_DEST} + sources: + - type: git + url: https://github.com/libretro/common-shaders.git + commit: 55e401834b732e62c34411321c4ffd82524345d4 + - name: slang-shaders + make-install-args: + - PREFIX=${FLATPAK_DEST} + sources: + - type: git + url: https://github.com/libretro/slang-shaders.git + commit: 77558d5f2ac807b27201fb888cbf2caee8e289fa + - name: glsl-shaders + make-install-args: + - PREFIX=${FLATPAK_DEST} + sources: + - type: git + url: https://github.com/libretro/glsl-shaders.git + commit: 20801b38aa2c89a2beb9f57ffbbbcea7256e2523 + - name: common-overlays + make-install-args: + - PREFIX=${FLATPAK_DEST} + sources: + - type: git + url: https://github.com/libretro/common-overlays.git + commit: db9744f4e58a740f0f10b04b62af347cd6f01928 + + # RetroArch - END + + # Not part of the offical RetroArch manifest + - name: retroarch-cores + buildsystem: simple + build-commands: + - mkdir -p /app/share/libretro/cores/ + - mv ./RetroArch-Linux-x86_64.AppImage.home/.config/retroarch/cores/* /app/share/libretro/cores/ + cleanup: + - RetroArch_cores.7z + sources: + - type: archive + url: https://buildbot.libretro.com/stable/1.10.2/linux/x86_64/RetroArch_cores.7z + sha256: 0c59f99534a1ae3a2d34b1747c40398325e53db69acfab35b99c8fa8d76430e5 + + # Yuzu - https://github.com/flathub/org.yuzu_emu.yuzu + + - name: libzip + buildsystem: cmake-ninja + config-opts: + - '-DCMAKE_BUILD_TYPE=RelWithDebInfo' + sources: + - type: archive + url: https://github.com/nih-at/libzip/archive/v1.8.0.tar.gz + sha256: 83e5d6d5dbe8f9df80aad388fa523ca3558398ed440a5afda6ef9b36b0ffdc1f + x-checker-data: + type: anitya + project-id: 10649 + url-template: https://github.com/nih-at/libzip/archive/v$version.tar.gz + - name: zstd + buildsystem: simple + build-commands: + - make -j $FLATPAK_BUILDER_N_JOBS + - make PREFIX=/ DESTDIR="${FLATPAK_DEST}" install + sources: + - type: archive + url: >- + https://github.com/facebook/zstd/releases/download/v1.5.2/zstd-1.5.2.tar.gz + sha256: 7c42d56fac126929a6a85dbc73ff1db2411d04f104fae9bdea51305663a83fd0 + x-checker-data: + type: anitya + project-id: 12083 + url-template: >- + https://github.com/facebook/zstd/releases/download/v$version/zstd-$version.tar.gz + - name: fmt + buildsystem: cmake-ninja + config-opts: + - '-DFMT_TEST=OFF' + sources: + - type: archive + url: https://github.com/fmtlib/fmt/releases/download/8.1.1/fmt-8.1.1.zip + sha256: 23778bad8edba12d76e4075da06db591f3b0e3c6c04928ced4a7282ca3400e5d + x-checker-data: + type: anitya + project-id: 11526 + url-template: >- + https://github.com/fmtlib/fmt/releases/download/$version/fmt-$version.zip + - name: glslang + buildsystem: cmake-ninja + config-opts: + - '-DCMAKE_BUILD_TYPE=Release' + sources: + - type: archive + url: https://github.com/KhronosGroup/glslang/archive/11.8.0.tar.gz + sha256: 9e5fbe5b844d203da5e61bcd84eda76326e0ff5dc696cb862147bbe01d2febb0 + x-checker-data: + type: anitya + stable-only: true + project-id: 205796 + url-template: https://github.com/KhronosGroup/glslang/archive/$version.tar.gz + - name: catch2 + buildsystem: cmake-ninja + config-opts: + - '-DCMAKE_BUILD_TYPE=Release' + - '-DCATCH_BUILD_TESTING=OFF' + builddir: true + sources: + - type: archive + url: https://github.com/catchorg/Catch2/archive/v2.13.8.tar.gz + sha256: b9b592bd743c09f13ee4bf35fc30eeee2748963184f6bea836b146e6cc2a585a + x-checker-data: + type: anitya + stable-only: true + project-id: 7680 + url-template: https://github.com/catchorg/Catch2/archive/v$version.tar.gz + - name: nlohmann-json + buildsystem: cmake-ninja + config-opts: + - '-DCMAKE_BUILD_TYPE=Release' + - '-DJSON_BuildTests=OFF' + sources: + - type: archive + url: https://github.com/nlohmann/json/archive/v3.10.5.tar.gz + sha256: 5daca6ca216495edf89d167f808d1d03c4a4d929cef7da5e10f135ae1540c7e4 + x-checker-data: + type: anitya + project-id: 141453 + url-template: https://github.com/nlohmann/json/archive/v$version.tar.gz + - name: boost + buildsystem: simple + build-commands: + - ./bootstrap.sh --with-libraries=context,container,system,headers + - ./b2 -j $FLATPAK_BUILDER_N_JOBS install --prefix=/app + sources: + - type: archive + url: >- + https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.tar.bz2 + sha256: 8681f175d4bdb26c52222665793eef08490d7758529330f98d3b29dd0735bccc + x-checker-data: + type: anitya + project-id: 6845 + url-template: >- + https://boostorg.jfrog.io/artifactory/main/release/$version/source/boost_1_78_0.tar.bz2 + - name: nv-codec-headers + make-install-args: + - PREFIX=/app + no-autogen: true + cleanup: + - '*' + sources: + - type: git + url: https://git.videolan.org/git/ffmpeg/nv-codec-headers.git + tag: n11.1.5.1 + commit: 84483da70d903239d4536763fde8c7e6c4e80784 + x-checker-data: + type: git + tag-pattern: ^n([\d.]+)$ + - name: yuzu + buildsystem: cmake-ninja + builddir: true + config-opts: + - '-DCMAKE_BUILD_TYPE=RelWithDebInfo' + - '-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON' + - '-DENABLE_QT_TRANSLATION=ON' + - '-DYUZU_ENABLE_COMPATIBILITY_REPORTING=ON' + - '-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON' + - '-DYUZU_USE_QT_WEB_ENGINE=ON' + - '-DYUZU_USE_BUNDLED_FFMPEG=ON' + - '-DDISPLAY_VERSION=969' + - '-DBUILD_TAG=mainline-969' + - '-DBUILD_REPOSITORY=yuzu-emu/yuzu-mainline' + build-options: + env: + TITLEBARFORMATIDLE: yuzu {} + TITLEBARFORMATRUNNING: yuzu {} | {} + LDFLAGS: '-L/app/lib -Wl,-z,relro,-z,now -Wl,--as-needed' + cleanup: + - /share/man + - /share/pixmaps + post-install: + - install -Dm755 ../yuzu-launcher.sh /app/bin/yuzu-launcher + - >- + install -Dm644 ../org.yuzu_emu.yuzu.metainfo.xml + /app/share/appdata/org.yuzu_emu.yuzu.metainfo.xml + - desktop-file-install --dir=/app/share/applications ../dist/yuzu.desktop + - >- + desktop-file-edit --set-key StartupWMClass --set-value yuzu --set-key + Exec --set-value yuzu-launcher /app/share/applications/yuzu.desktop + - >- + install -Dm644 ../dist/yuzu.svg + /app/share/icons/hicolor/scalable/apps/yuzu.svg + - >- + mv /app/share/mime/packages/yuzu.xml + /app/share/mime/packages/org.yuzu_emu.yuzu.xml + - >- + sed 's/yuzu/org.yuzu_emu.yuzu/g' -i + /app/share/mime/packages/org.yuzu_emu.yuzu.xml + sources: + - type: git + url: https://github.com/yuzu-emu/yuzu-mainline.git + tag: mainline-0-969 + commit: d179e12137cd8ff88b0eade7d13de801661f869b + disable-shallow-clone: true + x-checker-data: + type: git + tag-pattern: ^(mainline-0-\d+)$ + - type: file + path: rd-submodules/yuzu/org.yuzu_emu.yuzu.metainfo.xml + - type: file + path: rd-submodules/yuzu/yuzu-launcher.sh + - type: file + path: rd-submodules/yuzu/compatibility_list.json + + # Yuzu - END + + # pcsx2 - https://github.com/flathub/net.pcsx2.PCSX2 + + - name: wxWidgets + buildsystem: cmake-ninja + config-opts: + - '-DCMAKE_BUILD_TYPE=Release' + cleanup: + - /bin + - /include + - /lib/wx/include + sources: + - type: git + url: https://github.com/wxWidgets/wxWidgets.git + tag: v3.1.5 + commit: 9c0a8be1dc32063d91ed1901fd5fcd54f4f955a1 + x-checker-data: + type: git + tag-pattern: ^v([\d.]+)$ + modules: + - shared-modules/glu/glu-9.json + - name: libaio + no-autogen: true + make-install-args: + - prefix=${FLATPAK_DEST} + sources: + - type: git + url: https://pagure.io/libaio.git + tag: libaio-0.3.112 + commit: d025927efa75a0d1b46ca3a5ef331caa2f46ee0e + x-checker-data: + type: git + tag-pattern: ^libaio-([\d.]+)$ + cleanup: + - /include + - /lib/*.a + - name: portaudio + buildsystem: cmake-ninja + config-opts: + - '-DCMAKE_BUILD_TYPE=Release' + cleanup: + - /include + - /share/doc + - /lib/cmake + - /lib/pkgconfig + - /lib/*.a + sources: + - type: git + url: https://github.com/PortAudio/portaudio.git + tag: v19.7.0 + commit: 147dd722548358763a8b649b3e4b41dfffbcfbb6 + x-checker-data: + type: git + tag-pattern: ^v([\d.]+)$ + - name: soundtouch + buildsystem: cmake-ninja + sources: + - type: git + url: https://codeberg.org/soundtouch/soundtouch.git + tag: 2.3.1 + commit: e1f315f5358d9db5cee35a7a2886425489fcefe8 + x-checker-data: + type: git + tag-pattern: ^([\d.]+)$ + cleanup: + - /bin + - /include + - /lib/cmake + - /lib/pkgconfig + - /share/doc + - /lib/*.a + - name: png++ + disabled: true + buildsystem: simple + build-commands: + - make + - make prefix=/app install + sources: + - type: archive + url: >- + https://download.savannah.nongnu.org/releases/pngpp/png++-0.2.10.tar.gz + sha256: 998af216ab16ebb88543fbaa2dbb9175855e944775b66f2996fc945c8444eee1 + - name: libpcap + buildsystem: cmake-ninja + sources: + - type: git + url: https://github.com/the-tcpdump-group/libpcap.git + tag: libpcap-1.10.1 + commit: c7642e2cc0c5bd65754685b160d25dc23c76c6bd + x-checker-data: + type: git + tag-pattern: ^libpcap-([\d.]+)$ + cleanup: + - /bin + - /include + - /share/man + - /lib/pkgconfig + - /lib/*.a + - name: pcsx2 + buildsystem: cmake-ninja + builddir: true + config-opts: + - '-DCMAKE_BUILD_TYPE=Release' + - '-DPACKAGE_MODE=TRUE' + - '-DXDG_STD=TRUE' + - '-DDISABLE_BUILD_DATE=TRUE' + - '-DDISABLE_PCSX2_WRAPPER=TRUE' + - '-DDISABLE_ADVANCE_SIMD=TRUE' + - '-DSDL2_API=TRUE' + cleanup: + - /share/pixmaps + - /share/man + - /share/doc + post-install: + - >- + desktop-file-edit --set-key=Exec --set-value=pcsx2 + /app/share/applications/PCSX2.desktop + - >- + install -Dm644 ../AppIcon128.png + /app/share/icons/hicolor/128x128/apps/PCSX2.png + - >- + install -Dm644 ../net.pcsx2.PCSX2.metainfo.xml + /app/share/metainfo/net.pcsx2.PCSX2.metainfo.xml + sources: + - type: git + url: https://github.com/PCSX2/pcsx2.git + tag: v1.7.2554 + commit: 0d1675fbaa0d40874df98eed6270efc55620271b + - type: file + path: rd-submodules/pcsx2/net.pcsx2.PCSX2.metainfo.xml + - type: file + path: rd-submodules/pcsx2/AppIcon128.png + + # pcsx2 - END + + # Dolphin - START + # https://github.com/flathub/org.DolphinEmu.dolphin-emu + + # needed for the emulate bluetooth adapter feature to work + - name: bluez + config-opts: + - --enable-library + - --disable-manpages + - --disable-udev + - --disable-tools + - --disable-cups + - --disable-monitor + - --disable-client + - --disable-systemd + - --disable-a2dp + - --disable-avrcp + - --disable-network + - --with-dbusconfdir=/app/etc + - --with-dbussessionbusdir=/app/usr/lib/system-services + sources: + - type: archive + url: https://www.kernel.org/pub/linux/bluetooth/bluez-5.64.tar.xz + sha256: ae437e65b6b3070c198bc5b0109fe9cdeb9eaa387380e2072f9de65fe8a1de34 + x-checker-data: + type: anitya + project-id: 10029 + stable-only: true + url-template: https://www.kernel.org/pub/linux/bluetooth/bluez-$version.tar.xz + + # enables motion controls on non-wii controllers (switch, ps4, etc) + # requires a udev rule enabling Motion Sensors access + - name: libevdev + buildsystem: meson + config-opts: + - -Dtests=disabled + - -Ddocumentation=disabled + sources: + - type: archive + url: https://www.freedesktop.org/software/libevdev/libevdev-1.12.1.tar.xz + sha256: 1dbba41bc516d3ca7abc0da5b862efe3ea8a7018fa6e9b97ce9d39401b22426c + x-checker-data: + type: anitya + project-id: 20540 + stable-only: true + url-template: https://www.freedesktop.org/software/libevdev/libevdev-$version.tar.xz + + # needed for screensaver inhibition + - name: xdg-screensaver-shim + buildsystem: meson + sources: + - type: archive + url: https://github.com/Unrud/xdg-screensaver-shim/archive/0.0.2.tar.gz + sha256: 0ed2a69fe6ee6cbffd2fe16f85116db737f17fb1e79bfb812d893cf15c728399 + + - name: dolphin-emu + buildsystem: cmake-ninja + config-opts: + - -DCMAKE_BUILD_TYPE=Release + - -DENABLE_ALSA=OFF + - -DENABLE_SDL=ON + - -DENABLE_EVDEV=ON + - -DDISTRIBUTOR=Flathub + cleanup: + - /share/man + post-install: + - install -D dolphin-emu-wrapper /app/bin/dolphin-emu-wrapper + - install -Dm644 appdata.xml /app/share/appdata/dolphin-emu.appdata.xml + - sed -i -e 's/"2048"/"512"/g' /app/share/icons/hicolor/scalable/apps/dolphin-emu.svg + - desktop-file-edit --set-key=Exec --set-value='/app/bin/dolphin-emu-wrapper' + /app/share/applications/dolphin-emu.desktop + sources: + - type: git + url: https://github.com/dolphin-emu/dolphin.git + commit: 8ecfa537a242de74d2e372e30d9d79b14584b2fb + # detects whether dolphin is running in a flatpak sandbox + # and makes it use xdg directories if it is. + # prevents dolphin from attempting to write conf files + # in non-writable paths, typically happens when a user + # has leftover files from a previous non-flatpak install + - type: patch + path: rd-submodules/dolphin/detectflatpak.patch + # version strings must match exactly for online multiplayer + - type: patch + path: rd-submodules/dolphin/nodirtyversion.patch + - type: file + path: rd-submodules/dolphin/appdata.xml + - type: script + commands: + - 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 + - dolphin-emu "$@" + dest-filename: dolphin-emu-wrapper + + # Dolphin - END + + # XEMU - START + + - name: libglu + buildsystem: meson + cleanup: + - /include + - /lib/debug + - /lib/pkgconfig + - /lib/*.a + sources: + - type: archive + url: https://mesa.freedesktop.org/archive/glu/glu-9.0.2.tar.xz + sha256: 6e7280ff585c6a1d9dfcdf2fca489251634b3377bfc33c29e4002466a38d02d4 + x-checker-data: + type: anitya + project-id: 13518 + stable-only: true + url-template: https://mesa.freedesktop.org/archive/glu/glu-$version.tar.xz + + - name: xemu + buildsystem: autotools + builddir: true + no-make-install: true + build-options: + cflags: -O3 -DXBOX=1 -Wno-error=redundant-decls + config-opts: + - --audio-drv-list=sdl + - --disable-werror + - --target-list=i386-softmmu + make-args: + - qemu-system-i386 + post-install: + - |- + for px in 16 32 48 64 128 256 512; do + install -Dm644 ../ui/icons/xemu_${px}x${px}.png /app/share/icons/hicolor/${px}x${px}/apps/app.xemu.xemu.png + done + - install -Dm644 ../ui/icons/xemu.svg /app/share/icons/hicolor/scalable/apps/app.xemu.xemu.svg + - desktop-file-install ../ui/xemu.desktop --dir /app/share/applications + - sed -i 's/^Icon=xemu/Icon=app.xemu.xemu/' /app/share/applications/xemu.desktop + - mv qemu-system-i386 /app/bin/xemu + - mkdir -p /app/share/licenses/xemu + - cd .. && python3 scripts/gen-license.py > /app/share/licenses/xemu/LICENSE.txt + sources: + - type: git + url: https://github.com/mborgerson/xemu.git + tag: gh-release/0.6.2-90-g6f507c80af + commit: 6f507c80af546e0f5d316622d20f78820423ce6e + x-checker-data: + type: json + url: https://api.github.com/repos/mborgerson/xemu/releases/latest + tag-query: .tag_name + version-query: $tag | sub("^gh-release/"; "") + timestamp-query: .published_at + is-main-source: true + + # XEMU - END + + # External manifests end + + + - name: retrodeck + buildsystem: simple + build-commands: + + # Prep the ES-DE and RetroArch config files + - rm -rf /app/share/emulationstation/resources/systems/unix/es_find_rules.xml + - cp es_find_rules.xml /app/share/emulationstation/resources/systems/unix/ + - rm -rf /app/share/emulationstation/resources/systems/unix/es_systems.xml + - cp es_systems.xml /app/share/emulationstation/resources/systems/unix/ + # These must be put in home folder, managed by retrodeck.sh + - mkdir -p ${FLATPAK_DEST}/retrodeck/ + - cp es_settings.xml ${FLATPAK_DEST}/retrodeck/es_settings.xml + + # Logo, res + - rm -f /app/share/emulationstation/resources/graphics/splash.svg + - cp splash.svg /app/share/emulationstation/resources/graphics/splash.svg + - cp icon.svg /app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg + + # Tools + - mkdir -p ${FLATPAK_DEST}/retrodeck/tools/ + - cp start-retroarch.sh ${FLATPAK_DEST}/retrodeck/tools/ + - cp move-roms.sh ${FLATPAK_DEST}/retrodeck/tools/ + - cp tools-gamelist.xml ${FLATPAK_DEST}/retrodeck/ + + - cp retrodeck.sh /app/bin/retrodeck.sh + - chmod +x /app/bin/retrodeck.sh + + + # Desktop entry + - cp net.retrodeck.retrodeck.desktop /app/share/applications/net.retrodeck.retrodeck.desktop + + # Configuring emulators: + - mkdir -p ${FLATPAK_DEST}/retrodeck/emu-configs/ + # RetroArch + - cp retroarch.cfg ${FLATPAK_DEST}/retrodeck/emu-configs/ + # Dolphin + - cp Dolphin.ini ${FLATPAK_DEST}/retrodeck/emu-configs/ + # Yuzu + - cp qt-config.ini ${FLATPAK_DEST}/retrodeck/emu-configs/ + # Pcsx2 + - cp PCSX2_ui.ini ${FLATPAK_DEST}/retrodeck/emu-configs/ + + #cleanup: ['*'] + sources: + - type: file + path: es_find_rules.xml + - type: file + path: es_settings.xml + - type: file + path: es_systems.xml + - type: file + path: retrodeck.sh + - type: dir + path: emu-configs + - type: file + path: tools-gamelist.xml + - type: dir + path: res + - type: dir + path: tools + - type: file + path: net.retrodeck.retrodeck.desktop \ No newline at end of file