Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

infra: Add AppImage build workflow #28

Merged
merged 14 commits into from
Oct 6, 2024

Conversation

Samueru-sama
Copy link
Contributor

This will produce an AppImage from the linux binaries, like I used to do here.

However I'm not sure how to include it in the release.yml 😅

Also this will only make an x86_64 AppImage.

@github-actions github-actions bot added the infra label Oct 5, 2024
@regginator regginator self-assigned this Oct 5, 2024
@regginator
Copy link
Member

regginator commented Oct 5, 2024

Awesome! Yeah, I also think we could make the AppImage build process a standalone Bash script in distribution/linux/ and use that in the release workflow, and for testing appimagetool locally.

build.yml is used for PR builds, we could probably include this directly in the release job for Linux x64 & arm64. I can look into it today or tomorrow.

@Samueru-sama
Copy link
Contributor Author

Awesome! Yeah, I also think we could make the AppImage build process a standalone Bash script in distribution/linux/ and use that in the release workflow, and for testing appimagetool locally.

build.yml is used for PR builds, we could probably include this directly in the release job for Linux x64 & arm64. I can look into it today or tomorrow.

I thought about making it an standalone script but I could not figure out how to integrate that with the existing releases, so I added it to the build.yml to use the already produced binaries as base for the appimage and turns even that doesn't work 😅

I'm not sure what to do from here.

@regginator regginator changed the base branch from mirror/add-appimage to mirror/master October 6, 2024 04:49
@regginator regginator changed the title CI: Make AppImage infra: Add AppImage build workflow Oct 6, 2024
@regginator
Copy link
Member

Thanks so much for the help, merging this 😄

Will also add this to the release workflow!

@regginator regginator merged commit aa34084 into ryujinx-mirror:mirror/master Oct 6, 2024
11 checks passed
@regginator regginator mentioned this pull request Oct 6, 2024
@Samueru-sama
Copy link
Contributor Author

Samueru-sama commented Oct 6, 2024

Thanks so much for the help, merging this 😄

Will also add this to the release workflow!

Thank you but there a few details, one is this mkdir making an extra empty bin dir.

The other is that the appimage and appimage.zsync have to be released separately and not as a compressed tar.gz file, the appimage is already compressed and both need to be able to be downloaded directly from the releases.

The .zsync file gets used for delta updates, that part of the script "gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|Ryujinx|latest|*.AppImage.zsync" is info that gets embedded in the appimage and will tell AppImageUpdate to look for the latest file that ends in .AppImage.zsync in this github repo (which github sets the $GITHUB_REPOSITORY_OWNER var for this already).

This also means since there is an aarch64 appimage being made, the update info would need to change for something like this:

ARCH="$(uname -m)"
appimagetool --comp zstd --mksquashfs-opt -Xcompression-level --mksquashfs-opt 21 \
    -u "gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|Ryujinx|latest|*-$ARCH.AppImage.zsync" \
    AppDir "$OUTDIR"/Ryujinx-"$ARCH".AppImage

That way appimageupdate doesn't get confused with the wrong .zsync file.

edit you can also include the version the AppImage name, that is actually required by the appimage spec but isn't needed for appimageupdate to work, that is: "$OUTDIR"/Ryujinx-"$VERSION"-"$ARCH".AppImage with the $VERSION var being what is currently giving unique names to the releases like the last r.cfa287f for example. And the *-$ARCH.AppImage.zsync has to stay the same just in case, otherwise it would only find the version it was made with (would never update).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants