diff --git a/recipes/linux/appimage-recipe b/recipes/linux/appimage-recipe new file mode 100644 index 00000000..53c54c3c --- /dev/null +++ b/recipes/linux/appimage-recipe @@ -0,0 +1,115 @@ +# In this example, we use a trusty deb + +APP=RetroArch +LOWERAPP=${APP,,} + +mkdir -p ./$APP/$APP.AppDir/usr/lib + +cd ./$APP/ + +wget -q https://github.com/probonopd/AppImages/raw/master/functions.sh -O ./functions.sh +. ./functions.sh + +generate_status + +# Needs a specific version (FIXME) +sed -i -e 's|libegl1-mesa|xxxlibegl1-mesa|g' status +cat > status <<\EOF +Package: libegl-mesa +Status: install ok installed +Architecture: all +Version: 9:999.999.999 + +Package: libegl1-mesa +Status: install ok installed +Architecture: all +Version: 9:999.999.999 + +Package: libwayland-egl1-mesa +Status: install ok installed +Architecture: all +Version: 9:999.999.999 + +Package: libgl1-mesa-glx +Status: install ok installed +Architecture: all +Version: 9:999.999.999 + +Package: libgl1-mesa-dri +Status: install ok installed +Architecture: all +Version: 9:999.999.999 + +Package: debconf +Status: install ok installed +Architecture: all +Version: 9:999.999.999 + +Package: libc6 +Status: install ok installed +Architecture: all +Version: 9:999.999.999 + +Package: libstdc++6 +Status: install ok installed +Architecture: all +Version: 9:999.999.999 + +Package: libgcc1 +Status: install ok installed +Architecture: all +Version: 9:999.999.999 + +EOF + +echo "deb http://archive.ubuntu.com/ubuntu/ trusty main universe multiverse +deb http://ppa.launchpad.net/libretro/testing/ubuntu trusty main +" > sources.list +apt-get $OPTIONS update +URLS=$(apt-get $OPTIONS -y install --print-uris $LOWERAPP | cut -d "'" -f 2 | grep -e "^http") +wget -c $URLS + +cd ./$APP.AppDir/ + +find ../*.deb -exec dpkg -x {} . \; || true + +get_desktop +# get_icon +# Dear upstream developers, this is a nonstandard location for an app icon; +# please consider using a standard location instead +cp ./usr/share/libretro/assets/xmb/retroactive/png/retroarch.png . +get_apprun + +mv ./usr/lib/x86_64-linux-gnu/pulseaudio/* ./usr/lib/x86_64-linux-gnu/ || true + +# Workaround for: +# /usr/lib/x86_64-linux-gnu/libdrm_amdgpu.so.1: error: symbol lookup error: +# undefined symbol: drmGetNodeTypeFromFd (fatal) +# libGL error: unable to load driver: swrast_dri.so +# libGL error: failed to load driver: swrast +rm -rf ./usr/lib/x86_64-linux-gnu/libdrm.* || true + +# patch_usr +# Patching only the executable files seems not to be enough for some apps +find usr/ -type f -exec sed -i -e "s|/usr|././|g" {} \; + +# Patch to make it load usr/share/retroarch from inside the AppDir +mv etc e +sed -i -e 's|/etc|../e|g' ./usr/bin/retroarch +sed -i -e 's|/usr|././|g' e/retroarch.cfg + +# Workaround for: +# Two icons in dock +# https://github.com/probonopd/AppImageKit/issues/260 +echo "StartupWMClass=retroarch" >> retroarch.desktop + +VERSION=$(find ../*.deb -name $LOWERAPP"_*" | head -n 1 | cut -d "~" -f 1 | cut -d "_" -f 2 | cut -d "-" -f 1 | sed -e 's|1%3a||g' ) + +echo $VERSION + +get_desktopintegration $LOWERAPP + +# Go out of AppImage +cd .. + +generate_type2_appimage