From 30132d5d73a8e08ae7a535dfb5965843dd282682 Mon Sep 17 00:00:00 2001 From: gouchi Date: Sun, 24 Sep 2017 21:28:55 +0200 Subject: [PATCH] Adding snap package --- pkg/snap/gui/retroarch.desktop | 11 +++ pkg/snap/gui/retroarch.svg | 77 ++++++++++++++++ pkg/snap/retroarch.wrapper | 63 +++++++++++++ pkg/snap/snapcraft.yaml | 161 +++++++++++++++++++++++++++++++++ 4 files changed, 312 insertions(+) create mode 100644 pkg/snap/gui/retroarch.desktop create mode 100644 pkg/snap/gui/retroarch.svg create mode 100755 pkg/snap/retroarch.wrapper create mode 100644 pkg/snap/snapcraft.yaml diff --git a/pkg/snap/gui/retroarch.desktop b/pkg/snap/gui/retroarch.desktop new file mode 100644 index 0000000000..7d8c0793ff --- /dev/null +++ b/pkg/snap/gui/retroarch.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.0 +Name=RetroArch +GenericName=Libretro Frontend +Type=Application +Comment=Multi-Engine Platform +Icon=${SNAP}/meta/gui/retroarch.svg +Terminal=false +StartupNotify=false +Keywords=multi;engine;emulator;xmb; +Categories=Game;Emulator; diff --git a/pkg/snap/gui/retroarch.svg b/pkg/snap/gui/retroarch.svg new file mode 100644 index 0000000000..08dbe2e93c --- /dev/null +++ b/pkg/snap/gui/retroarch.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/pkg/snap/retroarch.wrapper b/pkg/snap/retroarch.wrapper new file mode 100755 index 0000000000..c043cf32ff --- /dev/null +++ b/pkg/snap/retroarch.wrapper @@ -0,0 +1,63 @@ +#!/bin/sh + +set -e + +case "$SNAP_ARCH" in + "amd64") ARCH='x86_64-linux-gnu' + ;; + "i386") ARCH='i386-linux-gnu' + ;; + "armhf") ARCH='arm-linux-gnueabihf' + ;; + *) + echo "Unsupported architecture for this app build" + exit 1 + ;; +esac + + +export LD_LIBRARY_PATH="$SNAP/usr/lib/$ARCH/dri:$SNAP/usr/lib/$ARCH/alsa-lib:$LD_LIBRARY_PATH" +export XDG_DATA_HOME="$SNAP/usr/share" +export FONTCONFIG_PATH="$SNAP/etc/fonts/config.d" +export FONTCONFIG_FILE="$SNAP/etc/fonts/fonts.conf" +export XKB_CONFIG_ROOT="$SNAP/usr/share/X11/xkb" + +# Mesa Libs +export LD_LIBRARY_PATH=$SNAP/usr/lib/$ARCH/mesa:$LD_LIBRARY_PATH +export LD_LIBRARY_PATH=$SNAP/usr/lib/$ARCH/mesa-egl:$LD_LIBRARY_PATH + +# Tell libGL where to find the drivers +export LIBGL_DRIVERS_PATH=$SNAP/usr/lib/$ARCH/dri + +# ensure that our HW/opengl libs are before the snap specific libs +export LD_LIBRARY_PATH=$SNAP_LIBRARY_PATH:$LD_LIBRARY_PATH + +# Otherwise XOpenIM failed +export XLOCALEDIR=$SNAP/usr/share/X11/locale + +#Create RetroArch user configuration directory if doesn't exist +[ ! -d "$SNAP_USER_DATA/.config/retroarch" ] && mkdir -p "$SNAP_USER_DATA/.config/retroarch" + +#Copy assets if doesn't exist +[ ! -d "$SNAP_USER_DATA/.config/retroarch/assets" ] && cp -R "$SNAP/.config/assets" "$SNAP_USER_DATA/.config/retroarch" + +#Copy joypad autoconfig files if doesn't exist +[ ! -d "$SNAP_USER_DATA/.config/retroarch/autoconfig" ] && cp -R "$SNAP/.config/autoconfig" "$SNAP_USER_DATA/.config/retroarch" + +#Copy cheats files if doesn't exist +[ ! -d "$SNAP_USER_DATA/.config/retroarch/cheats" ] && cp -R "$SNAP/.config/cheats" "$SNAP_USER_DATA/.config/retroarch" + +#Copy database files if doesn't exist +[ ! -d "$SNAP_USER_DATA/.config/retroarch/database" ] && cp -R "$SNAP/.config/database" "$SNAP_USER_DATA/.config/retroarch" + +#Copy info files if doesn't exist +[ ! -d "$SNAP_USER_DATA/.config/retroarch/cores" ] && cp -R "$SNAP/.config/cores" "$SNAP_USER_DATA/.config/retroarch" + +#Copy overlay if doesn't exist +[ ! -d "$SNAP_USER_DATA/.config/retroarch/overlay" ] && cp -R "$SNAP/.config/overlay" "$SNAP_USER_DATA/.config/retroarch" + +#Copy shaders if doesn't exist +[ ! -d "$SNAP_USER_DATA/.config/retroarch/shaders" ] && cp -R "$SNAP/.config/shaders" "$SNAP_USER_DATA/.config/retroarch" + +$SNAP/usr/local/bin/retroarch $* + diff --git a/pkg/snap/snapcraft.yaml b/pkg/snap/snapcraft.yaml new file mode 100644 index 0000000000..559c553332 --- /dev/null +++ b/pkg/snap/snapcraft.yaml @@ -0,0 +1,161 @@ +name: retroarch +version: "1.6.7" +summary: RetroArch +description: RetroArch is the official reference frontend for the libretro API. +confinement: strict +grade: stable + + +apps: + retroarch: + command: usr/local/bin/retroarch.wrapper + plugs: [network, network-bind, x11, opengl, home, alsa, pulseaudio, bluez] + +parts: + retroarch: + plugin: autotools + source-type: tar + source: https://github.com/libretro/RetroArch/archive/v1.6.7.tar.gz + configflags: + - --enable-kms + - --enable-xvideo + - --enable-ffmpeg + - --enable-ssa + - --disable-coreaudio + - --disable-jack + - --disable-python + - --enable-pulse + - --disable-roar + - --disable-rsound + - --disable-sdl + - --disable-sdl2 + - --disable-vg + - --disable-v4l2 + - --disable-xinerama + stage-packages: + - fonts-dejavu-core + - libasound2 + - libavcodec-ffmpeg56 + - libavformat-ffmpeg56 + - libavutil-ffmpeg54 + - libc6 + - libdrm2 + - libegl1-mesa + - libfreetype6 + - libgbm1 + - libgl1-mesa-dri + - libgl1-mesa-glx + - libgles2-mesa + - libminizip1 + - libopenal1 + - libpulse0 + - libswresample-ffmpeg1 + - libswscale-ffmpeg3 + - libudev1 + - libusb-1.0-0 + - libwayland-client0 + - libwayland-egl1-mesa + - libx11-6 + - libxext6 + - libxinerama1 + - libxkbcommon0 + - libxv1 + - libxxf86vm1 + - pulseaudio + - zlib1g + build-packages: + - gcc + - make + - libasound2-dev + - libass-dev + - libavcodec-dev + - libavdevice-dev + - libavformat-dev + - libdrm-dev + - libegl1-mesa-dev + - libfreetype6-dev + - libgbm-dev + - libgl1-mesa-dev + - libpulse-dev + - libswscale-dev + - libusb-1.0-0-dev + - libudev-dev + - libxml2-dev + - libxv-dev + - mesa-common-dev + - xserver-xorg-input-all + - zlib1g-dev + retroarch-wrapper: + plugin: dump + source: . + organize: + retroarch.wrapper: usr/local/bin/retroarch.wrapper + stage: + - usr/local/bin/retroarch.wrapper + retroarch-assets: + plugin: dump + source: https://github.com/libretro/retroarch-assets/archive/master.tar.gz + source-type: tar + organize: + xmb: .config/assets/xmb + glui: .config/assets/glui + filesets: + assets: [.config/assets/xmb/*, -.config/assets/xmb/*/src, .config/assets/glui/*.png, .config/assets/glui/*.ttf] + stage: + - -configure + - -Makefile + - $assets + prime: + - $assets + retroarch-autoconfig: + plugin: dump + source: https://github.com/libretro/retroarch-joypad-autoconfig/archive/master.tar.gz + source-type: tar + organize: + udev: .config/autoconfig/udev + linuxraw: .config/autoconfig/linuxraw + hid: .config/autoconfig/hid + x: .config/autoconfig/x + filesets: + autoconfig: [ .config/autoconfig/udev, .config/autoconfig/linuxraw, .config/autoconfig/hid, .config/autoconfig/x] + stage: + - $autoconfig + prime: + - $autoconfig + retroarch-database: + plugin: dump + source: https://github.com/libretro/libretro-database/archive/master.tar.gz + source-type : tar + organize: + rdb: .config/database/rdb + cursors: .config/database/cursors + cht: .config/cheats + stage: + - .config/database + - .config/cheats + retroarch-info: + plugin: dump + source: https://github.com/libretro/libretro-super/archive/master.tar.gz + source-type : tar + organize: + dist/info: .config/cores + stage: + - .config/cores + retroarch-overlays: + plugin: dump + source: https://github.com/libretro/common-overlays/archive/master.tar.gz + source-type : tar + organize: + "*": .config/overlay + stage: + - .config/overlay + retroarch-shaders: + plugin: dump + source: https://github.com/libretro/glsl-shaders/archive/master.tar.gz + source-type : tar + organize: + "*": .config/shaders/shaders_glsl + stage: + - -configure + - -Makefile + - .config/shaders