Dolphin-AppImage #523
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Dolphin-AppImage | |
on: | |
push: | |
workflow_dispatch: | |
schedule: | |
- cron: "15 0 * * 3" | |
jobs: | |
dolphin-appimage: | |
name: dolphin bundled as appimage | |
runs-on: ubuntu-20.04 | |
env: | |
yaqti: 6.6.1 | |
steps: | |
- name: Checkout Upstream Repo | |
uses: actions/checkout@v4 | |
with: | |
repository: dolphin-emu/dolphin | |
ref: master | |
- name: Checkout Submodules | |
if: steps.cache-submodules.outputs.cache-hit != 'true' | |
run: git submodule update --init --recursive -j $(getconf _NPROCESSORS_ONLN) | |
- name: Checkout AppImage Repo | |
uses: actions/checkout@v4 | |
with: | |
clean: false | |
path: ci | |
# Runs the Dolphin action | |
- name: Get Date | |
id: get-date | |
run: | | |
echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/.ccache | |
key: build-ccache-${{ steps.get-date.outputs.date }} | |
restore-keys: | | |
build-ccache- | |
env: | |
CCACHE_MAXSIZE: 200M | |
- name: Install Qt | |
run: | | |
curl -sLO https://files.pythonhosted.org/packages/47/42/351389ca36c7adfc5f4e92d086cdb2bdbde13f1b89ee882f4a1cab2183ac/yaqti-2021.7.29-py3-none-any.whl | |
python3 -m pip install yaqti-2021.7.29-py3-none-any.whl | |
pyver=$(python3 --version | awk '{print $2}') | |
curl -sL https://raw.githubusercontent.com/qurious-pixel/yaqti/fetch/yaqti/fetchers.py -o $HOME/.local/lib/python${pyver%.*}/site-packages/yaqti/fetchers.py | |
python -m yaqti install --os linux --platform desktop --version ${{ env.yaqti }} --modules gcc_64 --set-envs --install-deps | |
- name: Install Packages | |
run: | | |
sudo apt-get install -y build-essential dialog dpkg libbluetooth-dev liblz4-dev liblzma-dev libssl-dev libopus-dev libpng-dev libsystemd-dev \ | |
libzip-dev libzstd-dev zlib1g-dev libasound2-dev libpulse-dev pulseaudio p7zip p7zip-full libsfml-dev libminiupnpc-dev libmbedtls-dev libpugixml-dev \ | |
libbz2-dev liblzo2-dev libxi-dev libavcodec-dev libudev-dev libusb-1.0-0-dev libevdev-dev libc6-dev libhidapi-dev libavformat-dev libavdevice-dev \ | |
libfmt-dev libwayland-dev libxrandr-dev libglu1-mesa-dev libcurl4-openssl-dev x11-utils zenity wget curl git gettext ccache make cmake ninja-build \ | |
libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-icccm4 libxcb-image0-dev libxcb-cursor-dev | |
- name: Dolphin-Build Number | |
run: | | |
export LASTCOMMIT=$(git log --pretty=format:%H -1) | |
export DOLPHINVER=$(wget -qO- https://dolphin-emu.org/download/dev/${LASTCOMMIT} | grep '<title>' | awk '{print $NF}' | cut -d '<' -f 1) | |
echo "DOLPHIN Build $DOLPHINVER" | |
echo "DOLPHINVER=$DOLPHINVER" >> $GITHUB_ENV | |
sed -i "s|\${DOLPHIN_WC_DESCRIBE}|$DOLPHINVER|g" Source/Core/Common/scmrev.h.in | |
- name: Update Patchelf | |
run: | | |
PATCHELFVER=0.14.5 | |
curl -sL https://github.com/NixOS/patchelf/releases/download/${PATCHELFVER}/patchelf-${PATCHELFVER}-x86_64.tar.gz -o /tmp/patchelf.tar.gz | |
tar -xvf /tmp/patchelf.tar.gz --directory /tmp/ ./bin/patchelf --strip-components=2 | |
sudo mv /tmp/patchelf /usr/bin | |
patchelf --version | |
- name: Build Dolphin | |
run: | | |
export Qt_DIR="${{github.workspace}}/qt/${{ env.yaqti }}/gcc_64/lib/cmake/Qt6" | |
mkdir -p "$HOME/.ccache" | |
mkdir build | |
cd build | |
cmake .. -GNinja -DCMAKE_C_COMPILER=/usr/lib/ccache/gcc-10 -DCMAKE_CXX_COMPILER=/usr/lib/ccache/g++-10 -DCMAKE_PREFIX_PATH="${{github.workspace}}/qt/${{ env.yaqti }}/gcc_64/" -Ddatadir:PATH="share/dolphin-emu" -DBIN_INSTALL_DIR="install/usr/bin" -DCMAKE_INSTALL_PREFIX="install/usr" -DINC_INSTALL_DIR="install/usr/include" -DLIB_INSTALL_DIR="install/usr/lib" -DPKGCONFIG_INSTALL_DIR="install/usr/lib/pkgconfig" | |
ninja | |
- name: Install Dolphin | |
run: | | |
cd build | |
ninja install | |
- name: Package Dolphin-Binary | |
run: | | |
mkdir -p $GITHUB_WORKSPACE/{artifacts,uploads} | |
cp -P build/install/usr/bin/dolphin-emu $GITHUB_WORKSPACE/artifacts | |
- name: Package Dolphin-AppImage | |
env: | |
QT_BASE_DIR: /qt/${{ env.yaqti }}/gcc_64 | |
QTDIR: $QT_BASE_DIR | |
run: | | |
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${GITHUB_WORKSPACE}/qt/${{ env.yaqti }}/gcc_64/lib/ | |
export PATH=$QT_BASE_DIR/bin:$PATH | |
echo "PATH $PATH" | |
sudo ln -s ${GITHUB_WORKSPACE}/$(find qt/ -name qmake) /usr/bin | |
qmake -v | |
cd /tmp | |
curl -sSfLO "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" | |
curl -sSfLO "https://github.com/AppImage/AppImageUpdate/releases/download/continuous/AppImageUpdate-x86_64.AppImage" | |
chmod a+x linuxdeploy*.AppImage | |
chmod a+x AppImageUpdate-x86_64.AppImage | |
./linuxdeploy-x86_64.AppImage --appimage-extract | |
curl -sSfL "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage" -o /tmp/squashfs-root/usr/bin/linuxdeploy-plugin-qt.AppImage | |
chmod a+x /tmp/squashfs-root/usr/bin/linuxdeploy-plugin-qt.AppImage | |
mv /tmp/squashfs-root/usr/bin/patchelf /tmp/squashfs-root/usr/bin/patchelf.orig | |
sudo cp /usr/bin/patchelf /tmp/squashfs-root/usr/bin/patchelf | |
cd $GITHUB_WORKSPACE | |
mkdir -p squashfs-root | |
cp -a build/install/usr $GITHUB_WORKSPACE/squashfs-root/ | |
cp Data/dolphin-emu.svg ./squashfs-root/dolphin-emu.svg | |
cp Data/dolphin-emu.desktop ./squashfs-root/dolphin-emu.desktop | |
curl -sSfL https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-x86_64 -o ./squashfs-root/runtime | |
curl -sSfL "https://github.com/RPCS3/AppImageKit-checkrt/releases/download/continuous2/AppRun-patched-x86_64" -o ./squashfs-root/AppRun-patched | |
cp ci/travis/appimage/{AppRun,update.sh} ./squashfs-root/ | |
mv /tmp/AppImageUpdate-x86_64.AppImage ./squashfs-root/usr/bin/AppImageUpdate | |
echo ${{ env.DOLPHINVER }} > ./squashfs-root/version.txt | |
chmod a+x ./squashfs-root/AppRun | |
chmod a+x ./squashfs-root/runtime | |
chmod a+x ./squashfs-root/AppRun-patched | |
chmod a+x ./squashfs-root/update.sh | |
export UPD_INFO="gh-releases-zsync|qurious-pixel|dolphin|continuous|Dolphin_Emulator-x86_64.AppImage.zsync" | |
/tmp/squashfs-root/AppRun --appdir="$GITHUB_WORKSPACE"/squashfs-root/ --plugin qt -d "$GITHUB_WORKSPACE"/squashfs-root/dolphin-emu.desktop -i "$GITHUB_WORKSPACE"/squashfs-root/dolphin-emu.svg \ | |
--exclude-library=libglib* --output appimage | |
ls . | grep *.AppImage | |
mv $(ls . | grep *.AppImage) $GITHUB_WORKSPACE/artifacts | |
ls -al $GITHUB_WORKSPACE/artifacts | |
sed -i 's/AppRun.wrapped/AppRun-patched/g' "$GITHUB_WORKSPACE"/squashfs-root/AppRun | |
cat "$GITHUB_WORKSPACE"/squashfs-root/AppRun | |
/tmp/squashfs-root/usr/bin/linuxdeploy-plugin-appimage --appdir="$GITHUB_WORKSPACE"/squashfs-root/ | |
ls . | grep *.AppImage | |
mv Dolphin_Emulator-x86_64.AppImage $GITHUB_WORKSPACE/uploads/Dolphin_${DOLPHINVER}.AppImage | |
ls -al $GITHUB_WORKSPACE/uploads | |
continue-on-error: true | |
- name: Upload Static Build | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Dolphin_${{ env.DOLPHINVER }} | |
path: uploads/ | |
- name: Upload Dolphin | |
run: | | |
ls -al artifacts/ | |
wget -c https://github.com/tcnksm/ghr/releases/download/v0.13.0/ghr_v0.13.0_linux_amd64.tar.gz | |
tar xfv ghr_v0.13.0_linux_amd64.tar.gz | |
ghr_v0.13.0_linux_amd64/ghr -u qurious-pixel -r dolphin -recreate -n 'Continuous build' -b "$(printf "DOLPHIN Build ${{ env.DOLPHINVER }}\nGitHub https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID")" continuous artifacts/ | |
env: | |
DEFAULT_BRANCH: git-actions | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |