forked from Greedysky/TTKMusicPlayer
-
Notifications
You must be signed in to change notification settings - Fork 0
213 lines (190 loc) · 8.89 KB
/
linux.yml
File metadata and controls
213 lines (190 loc) · 8.89 KB
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
# Author: Greedysky <greedysky@163.com>
name: linux
on: workflow_call
env:
TTK_MODULE: TTKMusicPlayer
TTK_VERSION: 4.3.0.0
jobs:
build:
name: Build on Qt${{matrix.qt_major}}(${{matrix.os}})
strategy:
matrix:
qt: [qt5, qt6]
os: [ubuntu-22.04]
include:
- qt: qt5
qt_major: 5
qt_version: 5.15.2
qt_modules: qtwebengine
- qt: qt6
qt_major: 6
qt_version: 6.9.3
qt_modules: qtwebengine qtwebchannel qtpositioning qtserialport qtimageformats qtmultimedia
env:
QT_VERSION: ${{matrix.qt_version}}
QMMP_DEPS_PATH: ${{github.workspace}}/extra/gcc
runs-on: ${{matrix.os}}
steps:
- name: Clone qmmp module
run: git clone -b plugins https://github.com/Greedysky/${{env.TTK_MODULE}}.git
working-directory: ${{runner.workspace}}
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: ${{env.QT_VERSION}}
target: desktop
modules: ${{matrix.qt_modules}}
cache: 'true'
- name: Add patch for Qt5.15.2
if: env.QT_VERSION == '5.15.2'
shell: bash
run: |
# fix missing <limits> include
# see QTBUG-89977 https://bugreports.qt.io/browse/QTBUG-89977
# see QTBUG-90395 https://bugreports.qt.io/browse/QTBUG-90395
# see QTBUG-93452 https://bugreports.qt.io/browse/QTBUG-93452
# see here https://codereview.qt-project.org/c/qt/qtbase/+/330713
sed -i "46i#include <limits>" "${{env.QT_ROOT_DIR}}/include/QtCore/qfloat16.h"
working-directory: ${{runner.workspace}}
- name: Install linuxdeploy
uses: miurahr/install-linuxdeploy-action@v1
with:
plugins: qt appimage
- name: Install dependencies
run: |
sudo apt install libfuse2 p7zip-full
sudo apt install texinfo rename
sudo apt install portaudio19-dev
sudo apt install libpipewire-0.3-dev
sudo apt install libnss3
- name: Create thirdParty dir
run: mkdir -p ${{env.QMMP_DEPS_PATH}}
working-directory: ${{runner.workspace}}
- name: Install thirdParty dependencies
run: |
wget https://github.com/Greedysky/${{env.TTK_MODULE}}/releases/download/continuous-build/thirdParty-libraries-${{matrix.os}}-x64.7z -O thirdParty-libraries.7z
7z x thirdParty-libraries.7z
working-directory: ${{github.workspace}}/extra
- name: Build qmmp project
run: |
qmake -v
qmake "CONFIG+=release" qmmp
make -j2
working-directory: ${{github.workspace}}
- name: Build qmmp package
run: |
# add dependency for theme
wget https://github.com/Greedysky/Resource/releases/download/1.0.0.0/theme.7z
7z x theme.7z
mv GTheme bin/${{env.TTK_VERSION}}
# add dependency for global plugins
wget https://github.com/Greedysky/${{env.TTK_MODULE}}/releases/download/continuous-build/qmmp-gplugins-linux.7z
7z x qmmp-gplugins-linux.7z
mv GPlugins bin/${{env.TTK_VERSION}}
# remove useless qmmp demo bin
rm bin/${{env.TTK_VERSION}}/demo
# copy ffmpeg libraries
cp ${{env.QMMP_DEPS_PATH}}/libffmpeg/lib/libavcodec.so.57.107.100 bin/${{env.TTK_VERSION}}/libavcodec.so.57
cp ${{env.QMMP_DEPS_PATH}}/libffmpeg/lib/libavformat.so.57.83.100 bin/${{env.TTK_VERSION}}/libavformat.so.57
cp ${{env.QMMP_DEPS_PATH}}/libffmpeg/lib/libavutil.so.55.78.100 bin/${{env.TTK_VERSION}}/libavutil.so.55
cp ${{env.QMMP_DEPS_PATH}}/libffmpeg/lib/libswresample.so.2.9.100 bin/${{env.TTK_VERSION}}/libswresample.so.2
# copy sunvox libraries
cp ${{env.QMMP_DEPS_PATH}}/libsunvox/sunvox.so bin/${{env.TTK_VERSION}}
# copy optimfrog libraries
cp ${{env.QMMP_DEPS_PATH}}/liboptimfrog/lib/libOptimFROG.so.0 bin/${{env.TTK_VERSION}}
# copy uadecore
cp ${{env.QMMP_DEPS_PATH}}/libttk/bin/uadecore bin/${{env.TTK_VERSION}}/GPlugins/config/uade
mv bin ${{runner.workspace}}/qmmp
# add portable binary package
7z a qmmp-${{matrix.qt}}-linux-x64.7z ${{runner.workspace}}/qmmp/${{env.TTK_VERSION}}
working-directory: ${{github.workspace}}
- name: Archive artifacts
uses: softprops/action-gh-release@v2
with:
tag_name: continuous-build
token: ${{secrets.GITHUB_TOKEN}}
generate_release_notes: false
files: ${{github.workspace}}/qmmp-${{matrix.qt}}-linux-x64.7z
- name: Clean up qmmp build
run: |
rm -rf ${{github.workspace}}
rm -rf ${{runner.workspace}}/thirdParty
working-directory: ${{runner.workspace}}
- name: Clone ttk music player module
run: git clone https://github.com/Greedysky/${{env.TTK_MODULE}}.git
working-directory: ${{runner.workspace}}
- name: Create build dir
run: mkdir build
working-directory: ${{runner.workspace}}
- name: Build ttk music player project
run: |
cmake --version
cmake ${{github.workspace}} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{runner.workspace}}/install -DTTK_QT_VERSION=${{matrix.qt_major}} -DTTK_QMMP_LIBRARY=${{runner.workspace}}/qmmp/${{env.TTK_VERSION}}/libTTKqmmp.so
make -j2 && make install
working-directory: ${{runner.workspace}}/build
- name: Build ttk music player package
run: |
# add dependency for qmmp library
cp -rf ${{runner.workspace}}/qmmp/${{env.TTK_VERSION}} ${{env.TTK_MODULE}}
cd ${{env.TTK_MODULE}}/${{env.TTK_VERSION}}
# add dependency libraries and so on
linuxdeploy-x86_64.AppImage --executable=TTKService --appdir=image --plugin=qt
rm image/usr/translations/*.qm image/usr/lib/libTTK*.so image/usr/lib/libttkzip.so image/usr/lib/libzlib.so
mv image/usr/lib image/usr/plugins image/usr/translations image/usr/bin/qt.conf ..
rm -rf image
# add dependency for nss and webkit
if [ ${{matrix.os}} == "ubuntu-24.04" ]; then
cp /usr/lib/x86_64-linux-gnu/libnssckbi.so ../lib
cp /usr/lib/x86_64-linux-gnu/libsoftokn3.so ../lib
else
cp /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so ../lib
cp /usr/lib/x86_64-linux-gnu/nss/libsoftokn3.so ../lib
fi
cp ${{env.QT_ROOT_DIR}}/resources/* .
cp ${{env.QT_ROOT_DIR}}/libexec/QtWebEngineProcess .
cd ../..
# add dependency for openssl
wget https://github.com/Greedysky/Resource/releases/download/1.0.0.0/openssl.7z
7z x openssl.7z
cp linux64/v3/* ${{env.TTK_MODULE}}/lib
if [ ${{matrix.qt_major}} == "6" ]; then
# add missing OpenGLWidgets module
cp ${{env.QT_ROOT_DIR}}/lib/libQt6OpenGLWidgets.so.${{env.QT_VERSION}} ${{env.TTK_MODULE}}/lib/libQt6OpenGLWidgets.so.6
# remove ffmpeg backend module
rm ${{env.TTK_MODULE}}/lib/libQt6FFmpegStub*
rm ${{env.TTK_MODULE}}/lib/libavcodec.so.61
rm ${{env.TTK_MODULE}}/lib/libavformat.so.61
rm ${{env.TTK_MODULE}}/lib/libavutil.so.59
rm ${{env.TTK_MODULE}}/lib/libswresample.so.5
rm ${{env.TTK_MODULE}}/lib/libswscale.so.8
rm -rf ${{env.TTK_MODULE}}/${{env.TTK_VERSION}}/multimedia
fi
# add portable binary package
7z a ${{env.TTK_MODULE}}-${{env.TTK_VERSION}}-linux-${{matrix.qt}}-x64.7z ${{env.TTK_MODULE}}
working-directory: ${{runner.workspace}}/install
- name: Build appimage package
run: |
# create usr building dir
mv ${{env.TTK_MODULE}} usr
mkdir ${{env.TTK_MODULE}}
mv usr ${{env.TTK_MODULE}}
cd ${{env.TTK_MODULE}}
mv usr/doc usr/README.txt .
# add dependency files
ln -s usr/${{env.TTK_MODULE}} AppRun
cp usr/deploy/share/pixmaps/ttkmusicplayer.png logo.png
sh usr/deploy/make_desktop_raw.sh ${{env.TTK_MODULE}}.desktop logo ${{env.TTK_MODULE}}
cd ..
# add appimage binary package
linuxdeploy-plugin-appimage-x86_64.AppImage --appdir=${{env.TTK_MODULE}}
mv ${{env.TTK_MODULE}}*.AppImage ${{env.TTK_MODULE}}-${{env.TTK_VERSION}}-linux-${{matrix.qt}}-x64.AppImage
working-directory: ${{runner.workspace}}/install
- name: Archive artifacts
uses: softprops/action-gh-release@v2
with:
tag_name: continuous-build
token: ${{secrets.GITHUB_TOKEN}}
generate_release_notes: false
files: |
${{runner.workspace}}/install/${{env.TTK_MODULE}}-${{env.TTK_VERSION}}-linux-${{matrix.qt}}-x64.7z
${{runner.workspace}}/install/${{env.TTK_MODULE}}-${{env.TTK_VERSION}}-linux-${{matrix.qt}}-x64.AppImage