From ddf9c9752adada24b7b704cf2e34c44652d26f3f Mon Sep 17 00:00:00 2001 From: XargonWan Date: Sat, 26 Mar 2022 00:31:26 +0900 Subject: [PATCH] Initial ES-DE implementation --- build-flatpak.sh | 42 ----- com.xargon.retrodeck.yml | 229 +++++++------------------- glibc-2.35-3-x86_64.pkg.tar.zst | Bin 10375335 -> 0 bytes lib32-glibc-2.35-3-x86_64.pkg.tar.zst | Bin 3608940 -> 0 bytes libGLU.so.1 | Bin 350056 -> 0 bytes libIex-3_1.so.30 | Bin 513896 -> 0 bytes libIlmThread-3_1.so.30 | Bin 30568 -> 0 bytes libImath-3_1.so.29 | Bin 333504 -> 0 bytes libOpenEXR-3_1.so.30 | Bin 3200992 -> 0 bytes libc.so.6 | Bin 2463384 -> 0 bytes libcurl.so.4 | Bin 669216 -> 0 bytes libfreeimage.so.3 | Bin 793688 -> 0 bytes libidn.so.12 | Bin 210808 -> 0 bytes libjasper.so.4 | Bin 386968 -> 0 bytes libjpeg.so.8 | Bin 522104 -> 0 bytes libjpegxr.so.0 | Bin 276368 -> 0 bytes libjxrglue.so.0 | Bin 151496 -> 0 bytes libraw.so.20 | Bin 1097120 -> 0 bytes libvlc.so.5 | Bin 161744 -> 0 bytes libvlccore.so.9 | Bin 1116832 -> 0 bytes res/logo.png | Bin 97041 -> 105309 bytes 21 files changed, 62 insertions(+), 209 deletions(-) delete mode 100755 build-flatpak.sh delete mode 100644 glibc-2.35-3-x86_64.pkg.tar.zst delete mode 100644 lib32-glibc-2.35-3-x86_64.pkg.tar.zst delete mode 100755 libGLU.so.1 delete mode 100755 libIex-3_1.so.30 delete mode 100755 libIlmThread-3_1.so.30 delete mode 100755 libImath-3_1.so.29 delete mode 100755 libOpenEXR-3_1.so.30 delete mode 100755 libc.so.6 delete mode 100755 libcurl.so.4 delete mode 100755 libfreeimage.so.3 delete mode 100755 libidn.so.12 delete mode 100755 libjasper.so.4 delete mode 100755 libjpeg.so.8 delete mode 100755 libjpegxr.so.0 delete mode 100755 libjxrglue.so.0 delete mode 100755 libraw.so.20 delete mode 100755 libvlc.so.5 delete mode 100755 libvlccore.so.9 mode change 100644 => 100755 res/logo.png diff --git a/build-flatpak.sh b/build-flatpak.sh deleted file mode 100755 index b5f00423..00000000 --- a/build-flatpak.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -INSTALL_DIR=$PWD -PREVIOUS_DIR=$PWD - -echo "Welcome to the RetroDECK flatpak builder." -echo "This script is helping the flatpak building in $INSTALL_DIR." - -read -n 1 -r -s -p $'Press enter to continue...\n' -echo "Building RetroDECK, please stand by." - -pacman -S flatpak-builder -flatpak install org.kde.Sdk//5.15-21.08 org.kde.Platform//5.15-21.08 - -# Installing 351elec-emulationstation -cd $INSTALL_DIR -git clone --recursive https://github.com/351ELEC/351elec-emulationstation emulationstation -# TODO: one day I will have to fork this emustation... -# applying patches -cp $INSTALL_DIR/patches/Splash.h $INSTALL_DIR/emulationstation/es-core/src/Splash.h -cp $INSTALL_DIR/patches/GuiMenu.cpp $INSTALL_DIR/emulationstation/es-app/src/guis/GuiMenu.cpp -# pathes applied -cd emulationstation -sudo pacman -S base-devel cmake freeimage sdl2_mixer sdl2 rapidjson boost -cmake -DENABLE_EMUELEC=1 -DGLES2=0 -DDISABLE_KODI=1 -DENABLE_FILEMANAGER=0 -DCEC=0 -DRG552=1 -make -j$(nproc) - -cd $INSTALL_DIR -flatpak-builder retrodeck-flatpak com.xargon.retrodeck.yml --force-clean - -# Useful commands: -# flatpak-builder --user --install --force-clean retrodeck-flatpak com.xargon.retrodeck.yml -# flatpak run com.xargon.retrodeck -# -# flatpak --user remote-add --no-gpg-verify xargon-dev repo -# flatpak --user install xargon-dev com.xargon.retrodeck -# -# flatpak run --command=/bin/bash com.xargon.retrodeck - -echo "Building terminated, you can install retrodeck by typing `flatpak run com.xargon.retrodeck`." - -cd $PREVIOUS_DIR diff --git a/com.xargon.retrodeck.yml b/com.xargon.retrodeck.yml index 2ff1fc8e..dc2a8c10 100644 --- a/com.xargon.retrodeck.yml +++ b/com.xargon.retrodeck.yml @@ -17,6 +17,7 @@ finish-args: - --talk-name=org.freedesktop.ScreenSaver - --talk-name=org.freedesktop.PowerManagement.Inhibit - --talk-name=org.freedesktop.login1 + #- --filesystem=host #- --env=LD_LIBRARY_PATH=/app/lib #- --env=PATH=/app/bin:/usr/bin @@ -46,7 +47,7 @@ modules: cleanup: - /share/man - # needed for reatroarch + # RA dependency - name: libusb config-opts: - --disable-static @@ -67,6 +68,63 @@ modules: post-install: - install -Dm644 COPYING /app/share/licenses/libusb/COPYING + # ES-DE dependency + - name: pugixml + buildsystem: cmake + 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 + + # ES-DE dependency + - name: freeimage + no-autogen: true + build-options: + #C++17 is not supported + 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 + + # ES-DE dependency + - name: ffmpeg + config-opts: + - --enable-shared + - --disable-static + - --enable-gnutls + - --disable-doc + - --disable-programs + - --disable-encoders + - --disable-muxers + - --enable-encoder=png + sources: + - type: archive + url: https://www.ffmpeg.org/releases/ffmpeg-4.2.3.tar.xz + sha256: 9df6c90aed1337634c1fb026fb01c154c29c82a64ea71291ff2da9aacb9aad31 + cleanup: + - /share/ffmpeg/examples + + - name: emulationstation-de + buildsystem: cmake + config-opts: + - -DCMAKE_INSTALL_PREFIX=/app + cleanup: + - es-app + - es-core + sources: + - type: git + url: https://gitlab.com/leonstyhre/emulationstation-de.git + branch: stable-1.2 + - name: retroarch buildsystem: simple build-commands: @@ -128,169 +186,16 @@ modules: # - name: dolphin # - name: arduboy - # Needed for building EmulationStation - - name: freeimage - no-autogen: true - post-install: - - ls -ln /app - build-options: - #C++17 is not supported - 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: 351elec-emulationstation - # buildsystem: simple - # build-commands: - # - install -Dm755 Splash.h -t /app/emulationstation/es-core/src/ - # - install -Dm755 GuiMenu.cpp -t /app/emulationstation/es-app/src/guis/ - # - cd /app/emulationstation - # - cmake -DENABLE_EMUELEC=1 -DGLES2=0 -DDISABLE_KODI=1 -DENABLE_FILEMANAGER=0 -DCEC=0 -DRG552=1 - # - make -j$(nproc) - # - ln -s emulationstation /app/bin/emulationstation - ## make-args: - ## - -DENABLE_EMUELEC=1 - ## - -DGLES2=0 - ## - -DDISABLE_KODI=1 - ## - -DENABLE_FILEMANAGER=0 - ## - -DCEC=0 - ## - -DRG552=1 - ## cleanup: ['*'] - # sources: - # - type: git - # url: https://github.com/351ELEC/351elec-emulationstation.git - # branch: 6b704cfa1161090de4ca1b5ec343ebab2060e7fc - # #- type: file - # # url: https://github.com/351ELEC/351elec-emulationstation/archive/6b704cfa1161090de4ca1b5ec343ebab2060e7fc.zip - # # sha256: 5d659033da662bf85d5986609e4d92c55e3c1c4a4c79e2461350134f509c47ac - # - type: file - # path: patches/Splash.h - # - type: file - # path: patches/GuiMenu.cpp - - #- name: 351elec-emulationstation-prebuilt - # buildsystem: simple - # build-commands: - # - mkdir -p /app/emulationstation - # - rsync -avr --ignore-existing --remove-source-files * /app/emulationstation - # - ln -s /app/emulationstation/emulationstation /app/bin/emulationstation - # #post-install: - # # clean the /app/emulationstation folder from the source files - # #- cp lib*.so.* /app/lib/ - # #cleanup: ['*'] - # sources: - # - type: dir - # path: emulationstation - # - type: file - # path: es_systems.cfg - # - type: file - # path: es_settings.cfg - # - type: file - # path: es_input.cfg - # #- type: file - # # path: libfreeimage.so.3 - # #- type: file - # # path: libvlc.so.5 - # #- type: file - # # path: libGLU.so.1 - # #- type: file - # # path: libjpeg.so.8 - # #- type: file - # # path: libjxrglue.so.0 - # #- type: file - # # path: libOpenEXR-3_1.so.30 - # #- type: file - # # path: libIex-3_1.so.30 - # #- type: file - # # path: libImath-3_1.so.29 - # #- type: file - # # path: libraw.so.20 - # #- type: file - # # path: libvlccore.so.9 - # #- type: file - # # path: libjpegxr.so.0 - # #- type: file - # # path: libIlmThread-3_1.so.30 - # #- type: file - # # path: libjasper.so.4 - # #- type: file - # # path: libidn.so.12 - # #- type: file - # # path: libc.so.6 - # #- type: file - # # path: libcurl.so.4 - - - name: 351elec-emulationstation - buildsystem: simple - build-commands: - #- install -Dm755 Splash.h -t /app/emulationstation/es-core/src/ - #- install -Dm755 GuiMenu.cpp -t /app/emulationstation/es-app/src/guis/ - - ls -ln - - cmake . -DDISABLE_KODI=1 - - make - - ln -s emulationstation /app/bin/emulationstation - # cleanup: ['*'] - sources: - - type: git - url: https://github.com/batocera-linux/batocera-emulationstation.git - branch: 779548e217311edb15d21a5316033292d2b452fc - #- type: file - # path: patches/Splash.h - #- type: file - # path: patches/GuiMenu.cpp - - #- name: emulationstation-de - # buildsystem: simple - # build-commands: - # - unappimage download - # - rsync -avr --ignore-existing --remove-source-files ./squashfs-root/usr/ /app/ - # - ln -s /app/share/emulationstation /app/emulationstation - # sources: - # - type: file - # url: https://gitlab.com/leonstyhre/emulationstation-de/-/package_files/32296532/download - # sha256: 1fd3e437539d54e90d0a17b4577a8c91a1987943470fcfbf3badba99d8dac879 - - name: art-book-next buildsystem: simple build-commands: - mkdir -p /app/emulationstation/themes/art-book-next - mv -f * /app/emulationstation/themes/art-book-next/ - cleanup: ['*'] sources: - type: git url: https://github.com/anthonycaccese/es-theme-art-book-next.git branch: eaf73a4eefde22791681c7f430a238fb324bdeaf - # TODO 351elec-es-packages batocera-config batocera-scraper batocera-settings runemu.py setsettings.py - - #- name: glibc - # buildsystem: simple - # build-commands: - # - tar --use-compress-program=unzstd -xvf glibc-2.35-3-x86_64.pkg.tar.zst - # - cp -r usr/lib/* /app/lib/ - # cleanup: ['*'] - # sources: - # - type: file - # path: glibc-2.35-3-x86_64.pkg.tar.zst - - #- name: lib32-glibc - # buildsystem: simple - # build-commands: - # - tar --use-compress-program=unzstd -xvf lib32-glibc-2.35-3-x86_64.pkg.tar.zst - # - cp -r usr/lib/* /app/lib/ - # cleanup: ['*'] - # sources: - # - type: file - # path: lib32-glibc-2.35-3-x86_64.pkg.tar.zst - - name: retrodeck buildsystem: simple build-commands: @@ -402,25 +307,15 @@ modules: - mkdir -p ~/retrodeck/roms/gc - mkdir -p ~/retrodeck/roms/3ds - #- install -Dm755 retrodeck.sh -t /app/retrodeck/ - - install -Dm755 export_func.sh -t /app/retrodeck/ - #- ln -s /app/retrodeck/retrodeck.sh /app/bin/retrodeck.sh - - ln -s /app/retrodeck/export_func.sh /app/bin/export_func.sh - - rm -f /app/retrodeck/retroarch/.config/retroarch.cfg - mv retroarch.cfg /app/retrodeck/retroarch/.config/ - - mkdir -p /app/retrodeck/.config/ - - touch /app/retrodeck/.config/.OS_ARCH - - echo "DECK" >> /app/retrodeck/.config/.OS_ARCH + #- mkdir -p /app/retrodeck/.config/ + #- touch /app/retrodeck/.config/.OS_ARCH + #- echo "DECK" >> /app/retrodeck/.config/.OS_ARCH - # move other files (check old install script) #cleanup: ['*'] sources: - #- type: file - # path: retrodeck.sh - - type: file - path: export_func.sh - type: file path: retroarch.cfg diff --git a/glibc-2.35-3-x86_64.pkg.tar.zst b/glibc-2.35-3-x86_64.pkg.tar.zst deleted file mode 100644 index 4e03a0972e1678156fe635efaf8338a941c24e40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10375335 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