# In this example, we use a trusty deb APP=RetroArch LOWERAPP=${APP,,} mkdir -p ./$APP/$APP.AppDir/usr/lib cd ./$APP/ . ./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