Separate AppImage build process, etc

This commit is contained in:
reggie 2024-10-05 22:48:08 -05:00
parent 8b1b238b30
commit d45969a1c5
4 changed files with 55 additions and 23 deletions

View File

@ -79,37 +79,34 @@ jobs:
chmod +x ./publish_sdl2_headless/Ryujinx.Headless.SDL2 ./publish_sdl2_headless/Ryujinx.sh
chmod +x ./publish_gtk/Ryujinx.Gtk3 ./publish_gtk/Ryujinx.sh
- name: Make AppImage
if: github.event_name == 'pull_request' && matrix.platform.os == 'ubuntu-latest' && matrix.platform.name != 'linux-arm64'
- name: Build AppImage
if: github.event_name == 'pull_request' && matrix.platform.name == 'linux-x64'
run: |
sudo apt install zsync desktop-file-utils
APPIMAGETOOL="https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
DESKTOP="https://raw.githubusercontent.com/ryujinx-mirror/Ryujinx/master/distribution/linux/Ryujinx.desktop"
ICON="https://raw.githubusercontent.com/ryujinx-mirror/Ryujinx/master/src/Ryujinx/Ryujinx.ico"
mkdir -p ./AppDir/usr/bin && cp -r ./publish/* ./AppDir/usr/bin
wget -q "$APPIMAGETOOL" -O ./appimagetool
wget $DESKTOP -O ./AppDir/Ryujinx.desktop
wget $ICON -O ./AppDir/Ryujinx.png && ln -s Ryujinx.png ./AppDir/.DirIcon
printf '%s\n%s\n%s\n' '#!/bin/sh' 'CURRENTDIR="$(readlink -f "$(dirname "$0")")"' \
'exec "$CURRENTDIR"/usr/bin/Ryujinx.sh "$@"' > ./AppDir/AppRun
chmod +x ./AppDir/AppRun ./appimagetool ./AppDir/usr/bin/Ryujinx*
./appimagetool --comp zstd --mksquashfs-opt -Xcompression-level --mksquashfs-opt 21 \
-u "gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|Ryujinx|latest|*.AppImage.zsync" \
./AppDir Ryujinx.AppImage
sudo apt install -y zsync desktop-file-utils
mkdir -p tools
export PATH="$PATH:$(readlink -f tools)"
# Setup appimagetool
wget -q -O tools/appimagetool "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
chmod +x tools/appimagetool
BUILDDIR=publish OUTDIR=publish_appimage distribution/linux/appimage/build-appimage.sh
shell: bash
- name: Upload Ryujinx AppImage
uses: actions/upload-artifact@v4
if: github.event_name == 'pull_request' && matrix.platform.name != 'linux-arm64' && matrix.platform.os != 'macos-13'
if: github.event_name == 'pull_request' && matrix.platform.name == 'linux-x64'
with:
name: ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}.AppImage
path: Ryujinx.AppImage
path: publish_appimage/Ryujinx.AppImage
- name: Upload Ryujinx AppImage zsync
uses: actions/upload-artifact@v4
if: github.event_name == 'pull_request' && matrix.platform.name != 'linux-arm64' && matrix.platform.os != 'macos-13'
if: github.event_name == 'pull_request' && matrix.platform.name == 'linux-x64'
with:
name: ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}.AppImage.zsync
path: Ryujinx.AppImage.zsync
path: publish_appimage/Ryujinx.AppImage.zsync
- name: Upload Ryujinx artifact
uses: actions/upload-artifact@v4

8
.gitignore vendored
View File

@ -10,13 +10,15 @@
# Build results
[Dd]ebug/
[Rr]elease/
[Dd]ebug*/
[Rr]elease*/
x64/
build/
[Bb]in/
[Oo]bj/
AppDir/
# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
!packages/*/build/
@ -95,7 +97,7 @@ DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
publish*/
# Publish Web Output
*.Publish.xml

View File

@ -0,0 +1,3 @@
#!/bin/sh
CURRENTDIR="$(readlink -f "$(dirname "$0")")"
exec "$CURRENTDIR"/usr/bin/Ryujinx.sh "$@"

View File

@ -0,0 +1,30 @@
#!/bin/sh
set -e
ROOTDIR="$(readlink -f "$(dirname "$0")")"/../../../
cd "$ROOTDIR"
BUILDDIR=${BUILDDIR:-publish}
OUTDIR=${OUTDIR:-publish_appimage}
rm -rf AppDir
mkdir -p AppDir/usr/bin/bin
# Ensure necessary bins are set as executable
chmod +x "$BUILDDIR"/Ryujinx*
# Add symlinks for the AppImage
ln -s "$ROOTDIR"/distribution/linux/Ryujinx.desktop AppDir/Ryujinx.desktop
ln -s "$ROOTDIR"/distribution/linux/appimage/AppRun AppDir/AppRun
ln -s "$ROOTDIR"/distribution/misc/Logo.svg AppDir/Ryujinx.svg
cp -r "$BUILDDIR"/* AppDir/usr/bin/
mkdir -p "$OUTDIR"
appimagetool --comp zstd --mksquashfs-opt -Xcompression-level --mksquashfs-opt 21 \
-u "gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|Ryujinx|latest|*.AppImage.zsync" \
AppDir "$OUTDIR"/Ryujinx.AppImage
# ??
mv ./*.AppImage.zsync "$OUTDIR"