forked from dolphin-emu/dolphin
-
Notifications
You must be signed in to change notification settings - Fork 1
151 lines (146 loc) · 7.81 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
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 }}