This repository has been archived by the owner on Nov 21, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 47
491 lines (485 loc) · 43.3 KB
/
main.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
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
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
name: Containers
on:
push:
branches:
main
pull_request:
workflow_call:
inputs:
submodule-refs:
type: string
default: "[]"
mcpelauncher-repo:
type: string
default: https://github.com/minecraft-linux/mcpelauncher-manifest
mcpelauncher-ref:
type: string
default: ${{ github.repository == 'minecraft-linux/mcpelauncher-manifest' && (github.ref_name == 'ng' && github.sha) || 'ng' }}
mcpelauncher-qt6-ref:
type: string
default: ${{ github.repository == 'minecraft-linux/mcpelauncher-manifest' && (github.ref_name == 'qt6' && github.sha) || 'qt6' }}
mcpelauncher-ui-repo:
type: string
default: https://github.com/minecraft-linux/mcpelauncher-ui-manifest
mcpelauncher-ui-ref:
type: string
default: ${{ github.repository == 'minecraft-linux/mcpelauncher-ui-manifest' && (github.ref_name == 'ng' && github.sha) || 'ng' }}
mcpelauncher-ui-qt6-ref:
type: string
default: ${{ github.repository == 'minecraft-linux/mcpelauncher-ui-manifest' && (github.ref_name == 'qt6' && github.sha) || 'qt6' }}
msa-repo:
type: string
default: https://github.com/minecraft-linux/msa-manifest
msa-ref:
type: string
default: ${{ github.repository == 'minecraft-linux/msa-manifest' && (github.sha || github.ref) || 'master' }}
update-information:
type: string
default: ""
tag-name:
type: string
default: ""
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
container: minecraftlinux/ci-xenial:0.0.1
defaults:
run:
shell: bash
steps:
- uses: ChristopherHX/oidc@f8f35d97bc37ffbe779bb3ab8453920fedf6fb37
id: oidc
continue-on-error: true
- uses: actions/checkout@v3
with:
repository: ${{ steps.oidc.outputs.job_workflow_repo_name_and_owner || inputs.submodule-refs && 'minecraft-linux/appimage-builder' || github.repository }}
ref: ${{ steps.oidc.outputs.job_workflow_repo_ref || inputs.submodule-refs && 'main' || github.sha || github.ref }}
- name: Sync Submodule Sources
if: ${{ inputs.submodule-refs }}
uses: actions/github-script@v6
with:
github-token: none
script: |
var downloadRepo = async function(path, repo, ref) {
await io.mkdirP(path);
await exec.exec("git", ["init"], { cwd: path });
await exec.exec("git", ["remote", "add", "origin", repo], { cwd: path });
await exec.exec("git", ["fetch", "origin", ref], { cwd: path });
await exec.exec("git", ["reset", "--hard", "FETCH_HEAD"], { cwd: path });
await exec.exec("git", ["submodule", "update", "--init", "--recursive"], { cwd: path });
};
await downloadRepo("source/mcpelauncher", process.env.MCPELAUNCHER_REPO, process.env.MCPELAUNCHER_REF);
await downloadRepo("source/mcpelauncher-ui", process.env.MCPELAUNCHER_UI_REPO, process.env.MCPELAUNCHER_UI_REF);
await downloadRepo("source/msa", process.env.MSA_REPO, process.env.MSA_REF);
var submoduleRefs = JSON.parse(process.env.SUBMODULEREFS);
for(var submoduleRef of submoduleRefs) {
await exec.exec("git", ["fetch", submoduleRef.origin || "origin", submoduleRef.ref], { cwd: `source/${submoduleRef.project}/${submoduleRef.path}` });
await exec.exec("git", ["checkout", "FETCH_HEAD"], { cwd: `source/${submoduleRef.project}/${submoduleRef.path}` });
}
env:
SUBMODULEREFS: ${{ inputs.submodule-refs }}
MCPELAUNCHER_REPO: ${{ inputs.mcpelauncher-repo }}
MCPELAUNCHER_REF: ${{ inputs.mcpelauncher-ref }}
MCPELAUNCHER_UI_REPO: ${{ inputs.mcpelauncher-ui-repo }}
MCPELAUNCHER_UI_REF: ${{ inputs.mcpelauncher-ui-ref }}
MSA_REPO: ${{ inputs.msa-repo }}
MSA_REF: ${{ inputs.msa-ref }}
- name: Download deps
run: |
curl -L http://releases.llvm.org/9.0.0/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz --output llvm.tar.xz
tar --no-same-owner -xf llvm.tar.xz
curl -L https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-Linux-x86_64.tar.gz --output cmake.tar.gz
tar --no-same-owner -xf cmake.tar.gz
apt update
apt upgrade -y
apt remove -y libglib2.0-dev
DEBIAN_FRONTEND=noninteractive apt -y install wget g++-multilib texinfo apt-transport-https vim-common desktop-file-utils
chmod +x llvm.sh
./llvm.sh 11
DEBIAN_FRONTEND=noninteractive apt -y --allow-unauthenticated install libfuse-dev libc++-11-dev:i386 libc++abi-11-dev:i386 libegl1-mesa-dev:i386 zsync uuid-dev uuid-dev:i386 libxcursor-dev:i386 libxinerama-dev:i386 libxi-dev:i386 libxrandr-dev:i386
DEBIAN_FRONTEND=noninteractive apt-get install -y libasound2-dev:i386 libpulse-dev:i386 libaudio-dev:i386 libsndio-dev:i386 libx11-dev:i386 libxext-dev:i386 libxrandr-dev:i386 libxcursor-dev:i386 libxfixes-dev:i386 libxi-dev:i386 libxss-dev:i386 libxkbcommon-dev:i386 libdrm-dev:i386 libgbm-dev:i386 libgl1-mesa-dev:i386 libgles2-mesa-dev:i386 libegl1-mesa-dev:i386 libdbus-1-dev:i386 libibus-1.0-dev:i386 libudev-dev:i386
# fcitx-libs-dev:i386 Conflict with 64 bit
- name: Run the buildscript
run: |
. /opt/qt59/bin/qt59-env.sh || :
export PATH=$PWD/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04/bin:$PWD/cmake-3.16.2-Linux-x86_64/bin:$PATH
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH+"${LD_LIBRARY_PATH}:"}$PWD/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04/lib:${PWD}/build/AppDir/usr/lib
export CC=clang
export CXX=clang++
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/:/usr/lib/i386-linux-gnu/pkgconfig/
./build_appimage.sh -j4 -q quirks-ubuntu-1604.sh -k "zsync|${{ inputs.update-information || 'https://github.com/minecraft-linux/appimage-builder/releases/download/ng.appimage' }}/version.x86_64.zsync" -i ${GITHUB_RUN_NUMBER}${{ inputs.submodule-refs && ' -s' || '' }}${{ inputs.tag-name && format(' -r {0}', inputs.tag-name) || '' }}
- name: create update info
run: |
cd output
file=(*.AppImage)
echo build_id=2000$'\n'download_url=${{ inputs.update-information || 'https://github.com/minecraft-linux/appimage-builder/releases/download/ng.appimage' }}/${file} > version.amd64
- uses: minecraft-linux/actions-upload-artifact-node-16@v4 #actions/upload-artifact@v4 node20 doesn't work on xenial
with:
name: appimage-xenial-x86_64
path: output/
build32:
runs-on: ubuntu-latest
container: minecraftlinux/ci-xenial:0.0.1
defaults:
run:
shell: bash
steps:
- uses: ChristopherHX/oidc@f8f35d97bc37ffbe779bb3ab8453920fedf6fb37
id: oidc
continue-on-error: true
- uses: actions/checkout@v3
with:
repository: ${{ steps.oidc.outputs.job_workflow_repo_name_and_owner || inputs.submodule-refs && 'minecraft-linux/appimage-builder' || github.repository }}
ref: ${{ steps.oidc.outputs.job_workflow_repo_ref || inputs.submodule-refs && 'main' || github.sha || github.ref }}
- name: Sync Submodule Sources
if: ${{ inputs.submodule-refs }}
uses: actions/github-script@v6
with:
github-token: none
script: |
var downloadRepo = async function(path, repo, ref) {
await io.mkdirP(path);
await exec.exec("git", ["init"], { cwd: path });
await exec.exec("git", ["remote", "add", "origin", repo], { cwd: path });
await exec.exec("git", ["fetch", "origin", ref], { cwd: path });
await exec.exec("git", ["reset", "--hard", "FETCH_HEAD"], { cwd: path });
await exec.exec("git", ["submodule", "update", "--init", "--recursive"], { cwd: path });
};
await downloadRepo("source/mcpelauncher", process.env.MCPELAUNCHER_REPO, process.env.MCPELAUNCHER_REF);
await downloadRepo("source/mcpelauncher-ui", process.env.MCPELAUNCHER_UI_REPO, process.env.MCPELAUNCHER_UI_REF);
await downloadRepo("source/msa", process.env.MSA_REPO, process.env.MSA_REF);
var submoduleRefs = JSON.parse(process.env.SUBMODULEREFS);
for(var submoduleRef of submoduleRefs) {
await exec.exec("git", ["fetch", submoduleRef.origin || "origin", submoduleRef.ref], { cwd: `source/${submoduleRef.project}/${submoduleRef.path}` });
await exec.exec("git", ["checkout", "FETCH_HEAD"], { cwd: `source/${submoduleRef.project}/${submoduleRef.path}` });
}
env:
SUBMODULEREFS: ${{ inputs.submodule-refs }}
MCPELAUNCHER_REPO: ${{ inputs.mcpelauncher-repo }}
MCPELAUNCHER_REF: ${{ inputs.mcpelauncher-ref }}
MCPELAUNCHER_UI_REPO: ${{ inputs.mcpelauncher-ui-repo }}
MCPELAUNCHER_UI_REF: ${{ inputs.mcpelauncher-ui-ref }}
MSA_REPO: ${{ inputs.msa-repo }}
MSA_REF: ${{ inputs.msa-ref }}
- name: Download deps
run: |
curl -L http://releases.llvm.org/9.0.0/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz --output llvm.tar.xz
tar --no-same-owner -xf llvm.tar.xz
curl -L https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-Linux-x86_64.tar.gz --output cmake.tar.gz
tar --no-same-owner -xf cmake.tar.gz
apt update
apt upgrade -y
apt remove -y libglib2.0-dev
DEBIAN_FRONTEND=noninteractive apt -y remove qt59base qt59declarative qt59quickcontrols qt59quickcontrols2 qt59svg qt59webengine libcurl4-openssl-dev libzip-dev libuv1-dev
DEBIAN_FRONTEND=noninteractive apt -y install wget g++-multilib texinfo apt-transport-https vim-common desktop-file-utils libcurl4-openssl-dev:i386 libssl-dev:i386 libgl1-mesa-dev:i386 libuv1-dev:i386 libzip-dev:i386 libprotobuf-dev:i386 qt59base:i386 qt59declarative:i386 qt59quickcontrols:i386 qt59quickcontrols2:i386 qt59svg:i386 qt59webengine:i386 libxcursor-dev:i386 libxinerama-dev:i386 libxi-dev:i386 libxrandr-dev:i386
chmod +x llvm.sh
./llvm.sh 11
DEBIAN_FRONTEND=noninteractive apt -y --allow-unauthenticated install libfuse-dev:i386 libc++-11-dev:i386 libc++abi-11-dev:i386 libegl1-mesa-dev:i386 zsync
DEBIAN_FRONTEND=noninteractive apt-get install -y libasound2-dev:i386 libpulse-dev:i386 libaudio-dev:i386 libsndio-dev:i386 libx11-dev:i386 libxext-dev:i386 libxrandr-dev:i386 libxcursor-dev:i386 libxfixes-dev:i386 libxi-dev:i386 libxss-dev:i386 libxkbcommon-dev:i386 libdrm-dev:i386 libgbm-dev:i386 libgl1-mesa-dev:i386 libgles2-mesa-dev:i386 libegl1-mesa-dev:i386 libdbus-1-dev:i386 libibus-1.0-dev:i386 libudev-dev:i386 fcitx-libs-dev:i386 libcairo2-dev:i386 librsvg2-dev:i386
- name: Run the buildscript
run: |
. /opt/qt59/bin/qt59-env.sh || :
export PATH=$PWD/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04/bin:$PWD/cmake-3.16.2-Linux-x86_64/bin:$PATH
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH+"${LD_LIBRARY_PATH}:"}$PWD/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04/lib:${PWD}/build/AppDir/usr/lib
export CC=clang
export CXX=clang++
export PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig/
./build_appimage.sh -t x86 -j4 -q quirks-ubuntu-1604-32.sh -k "zsync|${{ inputs.update-information || 'https://github.com/minecraft-linux/appimage-builder/releases/download/ng.appimage' }}/version.i386.zsync" -i ${GITHUB_RUN_NUMBER}${{ inputs.submodule-refs && ' -s' || '' }}${{ inputs.tag-name && format(' -r {0}', inputs.tag-name) || '' }}
- name: create update info
run: |
cd output
file=(*.AppImage)
echo build_id=2000$'\n'download_url=${{ inputs.update-information || 'https://github.com/minecraft-linux/appimage-builder/releases/download/ng.appimage' }}/${file} > version.x86
- uses: minecraft-linux/actions-upload-artifact-node-16@v4 #actions/upload-artifact@v4 node20 doesn't work on xenial
with:
name: appimage-xenial-i386
path: output/
buildbusterappimage:
runs-on: ubuntu-latest
strategy:
matrix:
darch:
- x86: i386
armhf: armhf
x86_64: amd64
arm64: arm64
include:
- arch: armhf
gxx: g++-arm-linux-gnueabihf
triple: arm-linux-gnueabihf
steps:
- uses: ChristopherHX/oidc@f8f35d97bc37ffbe779bb3ab8453920fedf6fb37
id: oidc
continue-on-error: true
- uses: actions/checkout@v3
with:
repository: ${{ steps.oidc.outputs.job_workflow_repo_name_and_owner || inputs.submodule-refs && 'minecraft-linux/appimage-builder' || github.repository }}
ref: ${{ steps.oidc.outputs.job_workflow_repo_ref || inputs.submodule-refs && 'main' || github.sha || github.ref }}
- name: Sync Submodule Sources
if: ${{ inputs.submodule-refs }}
uses: actions/github-script@v6
with:
github-token: none
script: |
var downloadRepo = async function(path, repo, ref) {
await io.mkdirP(path);
await exec.exec("git", ["init"], { cwd: path });
await exec.exec("git", ["remote", "add", "origin", repo], { cwd: path });
await exec.exec("git", ["fetch", "origin", ref], { cwd: path });
await exec.exec("git", ["reset", "--hard", "FETCH_HEAD"], { cwd: path });
await exec.exec("git", ["submodule", "update", "--init", "--recursive"], { cwd: path });
};
await downloadRepo("source/mcpelauncher", process.env.MCPELAUNCHER_REPO, process.env.MCPELAUNCHER_REF);
await downloadRepo("source/mcpelauncher-ui", process.env.MCPELAUNCHER_UI_REPO, process.env.MCPELAUNCHER_UI_REF);
await downloadRepo("source/msa", process.env.MSA_REPO, process.env.MSA_REF);
var submoduleRefs = JSON.parse(process.env.SUBMODULEREFS);
for(var submoduleRef of submoduleRefs) {
await exec.exec("git", ["fetch", submoduleRef.origin || "origin", submoduleRef.ref], { cwd: `source/${submoduleRef.project}/${submoduleRef.path}` });
await exec.exec("git", ["checkout", "FETCH_HEAD"], { cwd: `source/${submoduleRef.project}/${submoduleRef.path}` });
}
env:
SUBMODULEREFS: ${{ inputs.submodule-refs }}
MCPELAUNCHER_REPO: ${{ inputs.mcpelauncher-repo }}
MCPELAUNCHER_REF: ${{ inputs.mcpelauncher-ref }}
MCPELAUNCHER_UI_REPO: ${{ inputs.mcpelauncher-ui-repo }}
MCPELAUNCHER_UI_REF: ${{ inputs.mcpelauncher-ui-ref }}
MSA_REPO: ${{ inputs.msa-repo }}
MSA_REF: ${{ inputs.msa-ref }}
- name: Build
run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker pull buildpack-deps:buster
docker run -e GITHUB_RUN_NUMBER=${GITHUB_RUN_NUMBER} -v $PWD/ldd:/usr/bin/ldd -v $PWD:$PWD -w $PWD --rm buildpack-deps:buster bash -c "dpkg --add-architecture i386 && dpkg --add-architecture armhf && apt update && DEBIAN_FRONTEND=noninteractive apt install -y libfuse-dev:armhf wget texinfo apt-transport-https vim-common qemu-user clang chrpath libstdc++-8-dev:armhf libatomic1:armhf python3-pip wget g++-arm-linux-gnueabihf patchelf libegl1-mesa:i386 zlib1g:i386 libstdc++6:i386 libgl1-mesa-dri:i386 libasound2:i386 pulseaudio:i386 libpng-dev:armhf libx11-dev:armhf libxcursor-dev:armhf libxinerama-dev:armhf libxi-dev:armhf libxrandr-dev:armhf libcurl4-openssl-dev:armhf libudev-dev:armhf libevdev-dev:armhf libegl1-mesa-dev:armhf libasound2:armhf qt5-default:armhf git cmake pkg-config qtbase5-dev:armhf qtwebengine5-dev:armhf libssl-dev:armhf libcurl4-openssl-dev:armhf libpng-dev:armhf libx11-dev:armhf libxi-dev:armhf libssl-dev:armhf libudev-dev:armhf libevdev-dev:armhf libegl1-mesa-dev:armhf libgl1-mesa-dev:armhf libssl-dev:armhf libuv1-dev:armhf libzip-dev:armhf libprotobuf-dev:armhf protobuf-compiler qtdeclarative5-dev:armhf libqt5svg5-dev:armhf qml-module-qtwebengine:armhf qml-module-qtquick2:armhf qml-module-qtquick-layouts:armhf qml-module-qtquick-controls:armhf qml-module-qtquick-controls2:armhf qml-module-qtquick-window2:armhf qml-module-qtquick-dialogs:armhf qml-module-qt-labs-settings:armhf qml-module-qt-labs-folderlistmodel:armhf jq curl binutils desktop-file-utils squashfs-tools qtdeclarative5-dev-tools:armhf libssl-dev:armhf libpulse-dev:armhf libasound2-dev:${{ matrix.darch[matrix.arch] }} libpulse-dev:${{ matrix.darch[matrix.arch] }} libaudio-dev:${{ matrix.darch[matrix.arch] }} libsndio-dev:${{ matrix.darch[matrix.arch] }} libx11-dev:${{ matrix.darch[matrix.arch] }} libxext-dev:${{ matrix.darch[matrix.arch] }} libxrandr-dev:${{ matrix.darch[matrix.arch] }} libxcursor-dev:${{ matrix.darch[matrix.arch] }} libxfixes-dev:${{ matrix.darch[matrix.arch] }} libxi-dev:${{ matrix.darch[matrix.arch] }} libxss-dev:${{ matrix.darch[matrix.arch] }} libxkbcommon-dev:${{ matrix.darch[matrix.arch] }} libdrm-dev:${{ matrix.darch[matrix.arch] }} libgbm-dev:${{ matrix.darch[matrix.arch] }} libgl1-mesa-dev:${{ matrix.darch[matrix.arch] }} libgles2-mesa-dev:${{ matrix.darch[matrix.arch] }} libegl1-mesa-dev:${{ matrix.darch[matrix.arch] }} libdbus-1-dev:${{ matrix.darch[matrix.arch] }} libibus-1.0-dev:${{ matrix.darch[matrix.arch] }} libudev-dev:${{ matrix.darch[matrix.arch] }} fcitx-libs-dev:${{ matrix.darch[matrix.arch] }} libasound2-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libpulse-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libaudio-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libsndio-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libx11-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxext-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxrandr-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxcursor-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxfixes-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxi-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxss-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxkbcommon-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libdrm-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libgbm-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libgl1-mesa-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libgles2-mesa-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libegl1-mesa-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libdbus-1-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libibus-1.0-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libudev-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} && curl -L https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-Linux-x86_64.tar.gz --output cmake.tar.gz && tar --no-same-owner -xf cmake.tar.gz && QMAKE=/usr/bin/arm-linux-gnueabihf-qmake PATH=/usr/lib/arm-linux-gnueabihf/qt5/bin/:\$PWD/cmake-3.16.2-Linux-x86_64/bin:$PATH:\$PATH LD_LIBRARY_PATH=\${PWD}/build/AppDir/usr/lib NO_STRIP=1 CC=clang CXX=clang++ CFLAGS32="-lstdc++fs" CFLAGS="-lstdc++fs" PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig/ ./build_appimage.sh -t armhf -j4 -k 'zsync|${{ inputs.update-information || 'https://github.com/minecraft-linux/appimage-builder/releases/download/ng.appimage' }}/version.armhf.zsync' -i ${GITHUB_RUN_NUMBER}${{ inputs.submodule-refs && ' -s' || '' }}${{ inputs.tag-name && format(' -r {0}', inputs.tag-name) || '' }}"
- name: Generate update info
run: |
cd output
file=(*.AppImage)
sudo bash -c "echo build_id=2000$'\n'download_url=${{ inputs.update-information || 'https://github.com/minecraft-linux/appimage-builder/releases/download/ng.appimage' }}/${file} > version.armhfbuster" || :
- uses: actions/upload-artifact@v4
with:
name: appimage-buster-armhf
path: output/
buildarmappimage64:
runs-on: ubuntu-latest
strategy:
matrix:
darch:
- x86: i386
armhf: armhf
x86_64: amd64
arm64: arm64
include:
- arch: arm64
arch32: armhf
gxx: g++-arm-linux-gnueabihf g++-aarch64-linux-gnu
triple: aarch64-linux-gnu
triple32: arm-linux-gnueabihf
steps:
- uses: ChristopherHX/oidc@f8f35d97bc37ffbe779bb3ab8453920fedf6fb37
id: oidc
continue-on-error: true
- uses: actions/checkout@v3
with:
repository: ${{ steps.oidc.outputs.job_workflow_repo_name_and_owner || inputs.submodule-refs && 'minecraft-linux/appimage-builder' || github.repository }}
ref: ${{ steps.oidc.outputs.job_workflow_repo_ref || inputs.submodule-refs && 'main' || github.sha || github.ref }}
- name: Sync Submodule Sources
if: ${{ inputs.submodule-refs }}
uses: actions/github-script@v6
with:
github-token: none
script: |
var downloadRepo = async function(path, repo, ref) {
await io.mkdirP(path);
await exec.exec("git", ["init"], { cwd: path });
await exec.exec("git", ["remote", "add", "origin", repo], { cwd: path });
await exec.exec("git", ["fetch", "origin", ref], { cwd: path });
await exec.exec("git", ["reset", "--hard", "FETCH_HEAD"], { cwd: path });
await exec.exec("git", ["submodule", "update", "--init", "--recursive"], { cwd: path });
};
await downloadRepo("source/mcpelauncher", process.env.MCPELAUNCHER_REPO, process.env.MCPELAUNCHER_REF);
await downloadRepo("source/mcpelauncher-ui", process.env.MCPELAUNCHER_UI_REPO, process.env.MCPELAUNCHER_UI_REF);
await downloadRepo("source/msa", process.env.MSA_REPO, process.env.MSA_REF);
var submoduleRefs = JSON.parse(process.env.SUBMODULEREFS);
for(var submoduleRef of submoduleRefs) {
await exec.exec("git", ["fetch", submoduleRef.origin || "origin", submoduleRef.ref], { cwd: `source/${submoduleRef.project}/${submoduleRef.path}` });
await exec.exec("git", ["checkout", "FETCH_HEAD"], { cwd: `source/${submoduleRef.project}/${submoduleRef.path}` });
}
env:
SUBMODULEREFS: ${{ inputs.submodule-refs }}
MCPELAUNCHER_REPO: ${{ inputs.mcpelauncher-repo }}
MCPELAUNCHER_REF: ${{ inputs.mcpelauncher-ref }}
MCPELAUNCHER_UI_REPO: ${{ inputs.mcpelauncher-ui-repo }}
MCPELAUNCHER_UI_REF: ${{ inputs.mcpelauncher-ui-ref }}
MSA_REPO: ${{ inputs.msa-repo }}
MSA_REF: ${{ inputs.msa-ref }}
- name: Build
run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker pull buildpack-deps:bionic
curl -L https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-Linux-x86_64.tar.gz --output cmake.tar.gz
tar --no-same-owner -xf cmake.tar.gz
curl -L https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.6/clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz --output llvm.tar.xz
tar --no-same-owner -xf llvm.tar.xz
docker run -e GITHUB_RUN_NUMBER=${GITHUB_RUN_NUMBER} -v $PWD/ldd:/usr/bin/ldd -v $PWD/sources.list:/etc/apt/sources.list -v $PWD:$PWD -w $PWD --rm buildpack-deps:bionic bash -c "dpkg --add-architecture arm64 && dpkg --add-architecture armhf && apt update && DEBIAN_FRONTEND=noninteractive apt install -y libfuse-dev:arm64 wget texinfo apt-transport-https vim-common qemu-user clang-10 chrpath libstdc++-8-dev:arm64 libstdc++-8-dev:armhf libatomic1:armhf libatomic1:arm64 wget cmake g++-arm-linux-gnueabihf g++-aarch64-linux-gnu patchelf libpng-dev:armhf libx11-dev:armhf libxcursor-dev:armhf libxinerama-dev:armhf libxi-dev:armhf libxrandr-dev:armhf libcurl4-openssl-dev:armhf libudev-dev:armhf libevdev-dev:armhf libegl1-mesa-dev:armhf libasound2:armhf qt5-default:arm64 git cmake pkg-config qtbase5-dev:arm64 qtwebengine5-dev:arm64 libssl-dev:arm64 libcurl4-openssl-dev:arm64 libpng-dev:arm64 libx11-dev:arm64 libxcursor-dev:arm64 libxinerama-dev:arm64 libxi-dev:arm64 libxrandr-dev:arm64 libssl-dev:arm64 libudev-dev:arm64 libevdev-dev:arm64 libegl1-mesa-dev:arm64 libgl1-mesa-dev:arm64 libssl-dev:arm64 libuv1-dev:arm64 libzip-dev:arm64 libprotobuf-dev:arm64 protobuf-compiler qtdeclarative5-dev:arm64 libqt5svg5-dev:arm64 qml-module-qtwebengine:arm64 qml-module-qtquick2:arm64 qml-module-qtquick-layouts:arm64 qml-module-qtquick-controls:arm64 qml-module-qtquick-controls2:arm64 qml-module-qtquick-window2:arm64 qml-module-qtquick-dialogs:arm64 qml-module-qt-labs-settings:arm64 qml-module-qt-labs-folderlistmodel:arm64 jq curl binutils desktop-file-utils squashfs-tools qtdeclarative5-dev-tools:arm64 libssl-dev:arm64 libpulse-dev:arm64 libssl-dev:armhf libpulse-dev:armhf libasound2-dev:${{ matrix.darch[matrix.arch] }} libpulse-dev:${{ matrix.darch[matrix.arch] }} libaudio-dev:${{ matrix.darch[matrix.arch] }} libsndio-dev:${{ matrix.darch[matrix.arch] }} libx11-dev:${{ matrix.darch[matrix.arch] }} libxext-dev:${{ matrix.darch[matrix.arch] }} libxrandr-dev:${{ matrix.darch[matrix.arch] }} libxcursor-dev:${{ matrix.darch[matrix.arch] }} libxfixes-dev:${{ matrix.darch[matrix.arch] }} libxi-dev:${{ matrix.darch[matrix.arch] }} libxss-dev:${{ matrix.darch[matrix.arch] }} libxkbcommon-dev:${{ matrix.darch[matrix.arch] }} libdrm-dev:${{ matrix.darch[matrix.arch] }} libgbm-dev:${{ matrix.darch[matrix.arch] }} libgl1-mesa-dev:${{ matrix.darch[matrix.arch] }} libgles2-mesa-dev:${{ matrix.darch[matrix.arch] }} libegl1-mesa-dev:${{ matrix.darch[matrix.arch] }} libdbus-1-dev:${{ matrix.darch[matrix.arch] }} libibus-1.0-dev:${{ matrix.darch[matrix.arch] }} libudev-dev:${{ matrix.darch[matrix.arch] }} fcitx-libs-dev:${{ matrix.darch[matrix.arch] }} libasound2-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libpulse-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libaudio-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libsndio-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libx11-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxext-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxrandr-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxcursor-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxfixes-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxi-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxss-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxkbcommon-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libdrm-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libgbm-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libgl1-mesa-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libgles2-mesa-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libegl1-mesa-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libdbus-1-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libudev-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} && QMAKE=/usr/bin/aarch64-linux-gnu-qmake PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig/:/usr/lib/arm-linux-gnueabihf/pkgconfig/ PATH=/usr/lib/aarch64-linux-gnu/qt5/bin/:$PWD/cmake-3.16.2-Linux-x86_64/bin:$PWD/clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04/bin:$PATH LD_LIBRARY_PATH=${PWD}/build/AppDir/usr/lib NO_STRIP=1 CC=clang-10 CXX=clang++-10 CFLAGS32="-lstdc++fs" CFLAGS="-lstdc++fs" ./build_appimage.sh -t arm64 -j4 -k 'zsync|${{ inputs.update-information || 'https://github.com/minecraft-linux/appimage-builder/releases/download/ng.appimage' }}/version.arm_aarch64.zsync' -i ${GITHUB_RUN_NUMBER}${{ inputs.submodule-refs && ' -s' || '' }}${{ inputs.tag-name && format(' -r {0}', inputs.tag-name) || '' }}"
- name: Generate update info
run: |
cd output
file=(*.AppImage)
sudo bash -c "echo build_id=2000$'\n'download_url=${{ inputs.update-information || 'https://github.com/minecraft-linux/appimage-builder/releases/download/ng.appimage' }}/${file} > version.arm64buster" || :
- uses: actions/upload-artifact@v4
with:
name: appimage-buster-arm64
path: output/
appimage-bookworm:
runs-on: ubuntu-latest
strategy:
matrix:
arch:
- x86
- armhf
- x86_64
- arm64
darch:
- x86: i386
armhf: armhf
x86_64: amd64
arm64: arm64
include:
- arch: x86
gxx: g++-multilib
triple: i386-linux-gnu
qmaketriple: i686-linux-gnu
- arch: x86_64
arch32: x86
gxx: g++-multilib
triple: x86_64-linux-gnu
triple32: i386-linux-gnu
extra-opts: -q quirks-bookworm.sh
extra-pkgs: libegl1-mesa:amd64 zlib1g:amd64 libstdc++6:amd64 libgl1-mesa-dri:amd64 libasound2:amd64
extra-env: CMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu/cmake
- arch: armhf
gxx: g++-arm-linux-gnueabihf
triple: arm-linux-gnueabihf
- arch: arm64
arch32: armhf
gxx: g++-arm-linux-gnueabihf g++-aarch64-linux-gnu
triple: aarch64-linux-gnu
triple32: arm-linux-gnueabihf
fail-fast: false
name: bookworm ( ${{ matrix.arch }} )
steps:
- uses: ChristopherHX/oidc@f8f35d97bc37ffbe779bb3ab8453920fedf6fb37
id: oidc
continue-on-error: true
- uses: actions/checkout@v3
with:
repository: ${{ steps.oidc.outputs.job_workflow_repo_name_and_owner || inputs.submodule-refs && 'minecraft-linux/appimage-builder' || github.repository }}
ref: ${{ steps.oidc.outputs.job_workflow_repo_ref || inputs.submodule-refs && 'main' || github.sha || github.ref }}
- name: Sync Submodule Sources
if: ${{ inputs.submodule-refs }}
uses: actions/github-script@v6
with:
github-token: none
script: |
var downloadRepo = async function(path, repo, ref) {
await io.mkdirP(path);
await exec.exec("git", ["init"], { cwd: path });
await exec.exec("git", ["remote", "add", "origin", repo], { cwd: path });
await exec.exec("git", ["fetch", "origin", ref], { cwd: path });
await exec.exec("git", ["reset", "--hard", "FETCH_HEAD"], { cwd: path });
await exec.exec("git", ["submodule", "update", "--init", "--recursive"], { cwd: path });
};
await downloadRepo("source/mcpelauncher", process.env.MCPELAUNCHER_REPO, process.env.MCPELAUNCHER_REF);
await downloadRepo("source/mcpelauncher-ui", process.env.MCPELAUNCHER_UI_REPO, process.env.MCPELAUNCHER_UI_REF);
await downloadRepo("source/msa", process.env.MSA_REPO, process.env.MSA_REF);
var submoduleRefs = JSON.parse(process.env.SUBMODULEREFS);
for(var submoduleRef of submoduleRefs) {
await exec.exec("git", ["fetch", submoduleRef.origin || "origin", submoduleRef.ref], { cwd: `source/${submoduleRef.project}/${submoduleRef.path}` });
await exec.exec("git", ["checkout", "FETCH_HEAD"], { cwd: `source/${submoduleRef.project}/${submoduleRef.path}` });
}
env:
SUBMODULEREFS: ${{ inputs.submodule-refs }}
MCPELAUNCHER_REPO: ${{ inputs.mcpelauncher-repo }}
MCPELAUNCHER_REF: ${{ inputs.mcpelauncher-qt6-ref }}
MCPELAUNCHER_UI_REPO: ${{ inputs.mcpelauncher-ui-repo }}
MCPELAUNCHER_UI_REF: ${{ inputs.mcpelauncher-ui-qt6-ref }}
MSA_REPO: ${{ inputs.msa-repo }}
MSA_REF: ${{ inputs.msa-ref }}
- name: Build
run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker pull buildpack-deps:bookworm
curl -L https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-Linux-x86_64.tar.gz --output cmake.tar.gz
tar --no-same-owner -xf cmake.tar.gz
curl -L https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.6/clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz --output llvm.tar.xz
tar --no-same-owner -xf llvm.tar.xz
docker run -e GITHUB_RUN_NUMBER=${GITHUB_RUN_NUMBER} -v $PWD/ldd-bookworm:/usr/bin/ldd -v $PWD:$PWD -w $PWD --rm buildpack-deps:bookworm bash -c "dpkg --add-architecture i386 && dpkg --add-architecture ${{ matrix.darch[matrix.arch] }} && dpkg --add-architecture ${{ matrix.darch[matrix.arch32 || matrix.arch] }} && apt update && DEBIAN_FRONTEND=noninteractive apt install -y libegl1-mesa:i386 zlib1g:i386 libstdc++6:i386 libgl1-mesa-dri:i386 libasound2:i386 ${{ matrix.extra-pkgs }} qmake6:${{ matrix.darch[matrix.arch] }} qt6-wayland:${{ matrix.darch[matrix.arch] }} libfuse-dev:${{ matrix.darch[matrix.arch] }} wget texinfo apt-transport-https vim-common qemu-user clang chrpath libstdc++-*-dev:${{ matrix.darch[matrix.arch] }} libstdc++-*-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libatomic1:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libatomic1:${{ matrix.darch[matrix.arch] }} wget cmake ${{ matrix.gxx }} patchelf libpng-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libx11-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxcursor-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxinerama-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxi-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxrandr-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libudev-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libevdev-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libegl1-mesa-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libasound2:${{ matrix.darch[matrix.arch32 || matrix.arch] }} git cmake pkg-config libssl-dev:${{ matrix.darch[matrix.arch] }} libcurl4-openssl-dev:${{ matrix.darch[matrix.arch] }} libpng-dev:${{ matrix.darch[matrix.arch] }} libx11-dev:${{ matrix.darch[matrix.arch] }} libxcursor-dev:${{ matrix.darch[matrix.arch] }} libxinerama-dev:${{ matrix.darch[matrix.arch] }} libxi-dev:${{ matrix.darch[matrix.arch] }} libxrandr-dev:${{ matrix.darch[matrix.arch] }} libssl-dev:${{ matrix.darch[matrix.arch] }} libudev-dev:${{ matrix.darch[matrix.arch] }} libevdev-dev:${{ matrix.darch[matrix.arch] }} libegl1-mesa-dev:${{ matrix.darch[matrix.arch] }} libgl1-mesa-dev:${{ matrix.darch[matrix.arch] }} libssl-dev:${{ matrix.darch[matrix.arch] }} libuv1-dev:${{ matrix.darch[matrix.arch] }} libzip-dev:${{ matrix.darch[matrix.arch] }} libprotobuf-dev:${{ matrix.darch[matrix.arch] }} protobuf-compiler jq curl binutils desktop-file-utils squashfs-tools qtdeclarative5-dev-tools:${{ matrix.darch[matrix.arch] }} libssl-dev:${{ matrix.darch[matrix.arch] }} libpulse-dev:${{ matrix.darch[matrix.arch] }} libssl-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libpulse-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} qt6-base-dev:${{ matrix.darch[matrix.arch] }} libqt6opengl6-dev:${{ matrix.darch[matrix.arch] }} qt6-webengine-dev:${{ matrix.darch[matrix.arch] }} qt6-webengine-dev-tools:${{ matrix.darch[matrix.arch] }} libqt6webenginecore6-bin:${{ matrix.darch[matrix.arch] }} qt6-declarative-dev:${{ matrix.darch[matrix.arch] }} qml6-module-qtquick:${{ matrix.darch[matrix.arch] }} qml6-module-qtquick-layouts:${{ matrix.darch[matrix.arch] }} qml6-module-qtquick-controls:${{ matrix.darch[matrix.arch] }} qml6-module-qtquick-window:${{ matrix.darch[matrix.arch] }} qml6-module-qtquick-dialogs:${{ matrix.darch[matrix.arch] }} qml6-module-qt-labs-settings:${{ matrix.darch[matrix.arch] }} qml6-module-qt-labs-folderlistmodel:${{ matrix.darch[matrix.arch] }} qml6-module-qtwebengine:${{ matrix.darch[matrix.arch] }} qt6-base-dev:${{ matrix.darch[matrix.arch] }} libqt6opengl6-dev:${{ matrix.darch[matrix.arch] }} qt6-webengine-dev:${{ matrix.darch[matrix.arch] }} qt6-declarative-dev:${{ matrix.darch[matrix.arch] }} libqt6svg6-dev:${{ matrix.darch[matrix.arch] }} qml6-module-qtquick-layouts:${{ matrix.darch[matrix.arch] }} qml6-module-qtquick-controls:${{ matrix.darch[matrix.arch] }} qml6-module-qtquick-controls:${{ matrix.darch[matrix.arch] }} qml6-module-qtquick-dialogs:${{ matrix.darch[matrix.arch] }} qml6-module-qt-labs-settings:${{ matrix.darch[matrix.arch] }} qml6-module-qt-labs-folderlistmodel:${{ matrix.darch[matrix.arch] }} qml6-module-qt-labs-platform:${{ matrix.darch[matrix.arch] }} qml6-module-qtquick-shapes:${{ matrix.darch[matrix.arch] }} qml6-module-qtqml:${{ matrix.darch[matrix.arch] }} qml6-module-qtqml-workerscript:${{ matrix.darch[matrix.arch] }} 'qml6-module-*:${{ matrix.darch[matrix.arch] }}' 'libopengl-dev:${{ matrix.darch[matrix.arch] }}' libasound2-dev:${{ matrix.darch[matrix.arch] }} libpulse-dev:${{ matrix.darch[matrix.arch] }} libaudio-dev:${{ matrix.darch[matrix.arch] }} libsndio-dev:${{ matrix.darch[matrix.arch] }} libx11-dev:${{ matrix.darch[matrix.arch] }} libxext-dev:${{ matrix.darch[matrix.arch] }} libxrandr-dev:${{ matrix.darch[matrix.arch] }} libxcursor-dev:${{ matrix.darch[matrix.arch] }} libxfixes-dev:${{ matrix.darch[matrix.arch] }} libxi-dev:${{ matrix.darch[matrix.arch] }} libxss-dev:${{ matrix.darch[matrix.arch] }} libxkbcommon-dev:${{ matrix.darch[matrix.arch] }} libdrm-dev:${{ matrix.darch[matrix.arch] }} libgbm-dev:${{ matrix.darch[matrix.arch] }} libgl1-mesa-dev:${{ matrix.darch[matrix.arch] }} libgles2-mesa-dev:${{ matrix.darch[matrix.arch] }} libegl1-mesa-dev:${{ matrix.darch[matrix.arch] }} libdbus-1-dev:${{ matrix.darch[matrix.arch] }} libibus-1.0-dev:${{ matrix.darch[matrix.arch] }} libudev-dev:${{ matrix.darch[matrix.arch] }} fcitx-libs-dev:${{ matrix.darch[matrix.arch] }} libasound2-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libpulse-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libaudio-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libsndio-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libx11-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxext-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxrandr-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxcursor-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxfixes-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxi-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxss-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libxkbcommon-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libdrm-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libgbm-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libgl1-mesa-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libgles2-mesa-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libegl1-mesa-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libdbus-1-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libibus-1.0-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} libudev-dev:${{ matrix.darch[matrix.arch32 || matrix.arch] }} && ${{ matrix.extra-env }} QMAKE=/usr/bin/${{ matrix.qmaketriple || matrix.triple }}-qmake6 PKG_CONFIG_PATH=/usr/lib/${{ matrix.triple }}/pkgconfig/:/usr/lib/${{ matrix.triple32 || matrix.triple }}/pkgconfig/ PATH=/usr/lib/${{ matrix.triple }}/qt6/bin/:$PWD/cmake-3.16.2-Linux-x86_64/bin:$PWD/clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04/bin:$PATH LD_LIBRARY_PATH=${PWD}/build/AppDir/usr/lib NO_STRIP=1 CC=clang CXX=clang++ CFLAGS32="-lstdc++fs" CFLAGS="-lstdc++fs" ./build_appimage.sh ${{ matrix.extra-opts }} -p "-bookworm" -o -t ${{ matrix.arch }} -j4 -k 'zsync|${{ inputs.update-information || 'https://github.com/minecraft-linux/appimage-builder/releases/download/ng.appimage' }}/version-bookworm.${{ matrix.arch }}.zsync' -i ${GITHUB_RUN_NUMBER}${{ inputs.submodule-refs && ' -s' || '' }}${{ inputs.tag-name && format(' -r {0}', inputs.tag-name) || '' }}"
- uses: actions/upload-artifact@v4
with:
name: appimage-bookworm-${{ matrix.arch }}
path: output/
publish:
permissions: write-all
runs-on: ubuntu-latest
needs: [ build, build32, buildbusterappimage, buildarmappimage64, appimage-bookworm ]
if: ${{ !cancelled() && github.event_name == 'push' && github.server_url == 'https://github.com' && github.repository == 'minecraft-linux/appimage-builder' }}
steps:
- uses: actions/checkout@v3
- run: echo "APPIMAGE_VERSION=$(cat version.txt)" >> $GITHUB_ENV
- name: Setup Vars
id: setup-vars
uses: actions/github-script@v6
with:
script: |
core.setOutput("owner", context.repo.owner)
core.setOutput("repo", context.repo.repo)
- name: Download everything
uses: actions/download-artifact@v4
with:
path: output
pattern: appimage-*
merge-multiple: true
- name: Download ghr
run: |
curl -L https://github.com/tcnksm/ghr/releases/download/v0.13.0/ghr_v0.13.0_linux_amd64.tar.gz --output ghr.tar.gz
tar -xf ghr.tar.gz
- name: Upload ${{ github.ref == 'refs/heads/main' && !contains(github.event.head_commit.message, '[DRAFT]') && 'Latest' || 'Draft' }}
if: github.ref == 'refs/heads/main'
run: |
./ghr*/ghr -t ${{ secrets.GITHUB_TOKEN }} -u ${{ steps.setup-vars.outputs.owner }} -r ${{ steps.setup-vars.outputs.repo }} ${{ !(github.ref == 'refs/heads/main' && !contains(github.event.head_commit.message, '[DRAFT]')) && '-draft ' || '' }}-b "$LAUNCHER_RELEASE_DESCRIPTION$(cat changelog.txt)" "$(cat version.txt)-${GITHUB_RUN_NUMBER}" output/
env:
LAUNCHER_RELEASE_DESCRIPTION: |
**You need to own Minecraft on the google play store and login with your google account to use this launcher**
Links for linux flatpak or macOS can be found on our wiki https://mcpelauncher.readthedocs.io.
[Download link for intel or amd based 64bit systems ( known as amd64, intel64 and x86_64 e.g. most PC's or Laptops )](https://github.com/minecraft-linux/appimage-builder/releases/download/${{env.APPIMAGE_VERSION}}-${{github.run_number}}/Minecraft_Bedrock_Launcher-x86_64-${{env.APPIMAGE_VERSION}}.${{github.run_number}}.AppImage)
[Download link for arm based 64bit systems ( known as arm64 and aarch64 e.g. raspberry Pi3 or later, pinephone or pinebook )](https://github.com/minecraft-linux/appimage-builder/releases/download/${{env.APPIMAGE_VERSION}}-${{github.run_number}}/Minecraft_Bedrock_Launcher-arm64-${{env.APPIMAGE_VERSION}}.${{github.run_number}}.AppImage)
- run `uname -a` to know which system you are using
- once downloaded the launcher shows you banner if an update is available
- no need to download the whole file again
- usually small updates with less than 5MB
- you can update it externally with appimageupdate or appimagelauncher
- the check for updates can be disabled in settings
# Not available Features you may miss
- Xbox live friend joining
- usually times out or crashs the game in both directions
- consider using the offical server software <https://www.minecraft.net/en-us/download/server/bedrock>
- connect all by ip as external server
- Xbox live login
- a lot of devices seem to get error code "drowned" without beeing asked for login
- error code "drowned" has more meanings like you closed the webview window without sign in
- there is no resolution for those getting this error
- programs that rewrite http requests sent by this launcher could also cause this problem
- all xbox http requests are signed by an ecdsa key
- the second request using the token for sisu auth are always rejected by Xbox Live Servers with http code 403 Forbidden
- this problem is not reproducable for developers
### Changelog
- name: Publish release
if: github.ref == 'refs/heads/main' && !contains(github.event.head_commit.message, '[DRAFT]')
run: |
mkdir -p output3
cp output/*.zsync output3/
./ghr*/ghr -t ${{ secrets.GITHUB_TOKEN }} -u ${{ steps.setup-vars.outputs.owner }} -r ${{ steps.setup-vars.outputs.repo }} -replace ng.appimage output3/
./ghr*/ghr -t ${{ secrets.GITHUB_TOKEN }} -u ${{ steps.setup-vars.outputs.owner }} -r ${{ steps.setup-vars.outputs.repo }} -replace appimage output3/