56
56
BRANCH_NAME : ${{ github.head_ref || github.ref_name }}
57
57
ubuntu_image : " ubuntu:22.04"
58
58
VCPKG_BINARY_SOURCES : " clear;x-gha,readwrite"
59
+ # Reusable shell function for robust apt setup
60
+ SETUP_APT_FUNCTION : |
61
+ setup_robust_apt() {
62
+ set -e
63
+ export DEBIAN_FRONTEND=noninteractive
64
+
65
+ # Configure apt retry logic and timeouts
66
+ echo "Acquire::Retries \"3\";" > /etc/apt/apt.conf.d/80-retries
67
+ echo "Acquire::http::Timeout \"10\";" > /etc/apt/apt.conf.d/80-timeout
68
+ echo "Acquire::https::Timeout \"10\";" >> /etc/apt/apt.conf.d/80-timeout
69
+
70
+ # Try multiple mirrors with fallback
71
+ for mirror in "mirrors.kernel.org" "mirror.pit.teraswitch.com" "archive.ubuntu.com"; do
72
+ echo "Trying mirror: $mirror"
73
+ sed -i "s|archive.ubuntu.com|$mirror|g" /etc/apt/sources.list
74
+ sed -i "s|security.ubuntu.com|$mirror|g" /etc/apt/sources.list
75
+ if apt-get update; then
76
+ echo "Successfully using mirror: $mirror"
77
+ break
78
+ else
79
+ echo "Mirror $mirror failed, trying next..."
80
+ sed -i "s|$mirror|archive.ubuntu.com|g" /etc/apt/sources.list
81
+ fi
82
+ done
83
+
84
+ apt-get install -y ca-certificates
85
+
86
+ # For ARM architectures, try multiple port mirrors with fallback
87
+ if echo "${1:-}" | grep -q "arm"; then
88
+ for port_mirror in "mirrors.kernel.org" "mirror.pit.teraswitch.com" "ports.ubuntu.com"; do
89
+ if [ "$port_mirror" = "ports.ubuntu.com" ]; then
90
+ port_mirror_url="http://$port_mirror"
91
+ else
92
+ port_mirror_url="http://$port_mirror"
93
+ fi
94
+ echo "Trying ports mirror: $port_mirror_url"
95
+ sed -i "s|http://ports.ubuntu.com|$port_mirror_url|g" /etc/apt/sources.list
96
+ if apt-get update; then
97
+ echo "Successfully using ports mirror: $port_mirror_url"
98
+ break
99
+ else
100
+ echo "Ports mirror $port_mirror_url failed, trying next..."
101
+ sed -i "s|$port_mirror_url|http://ports.ubuntu.com|g" /etc/apt/sources.list
102
+ fi
103
+ done
104
+ fi
105
+ }
59
106
60
107
jobs :
61
108
determine-tag :
@@ -136,12 +183,13 @@ jobs:
136
183
docker run --platform ${{ matrix.arch }} --rm \
137
184
-v ${{ github.workspace }}:/workspace \
138
185
-w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
139
- set -e
140
- export DEBIAN_FRONTEND=noninteractive
141
- sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
142
- sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
186
+ # Source the robust apt setup function
187
+ eval "${{ env.SETUP_APT_FUNCTION }}"
143
188
144
- apt update
189
+ # Setup apt with robust mirror handling
190
+ setup_robust_apt "${{ matrix.arch }}"
191
+
192
+ # Install packages and build
145
193
apt install -y build-essential libsdl2-dev cmake git
146
194
cmake -B build
147
195
cmake --build build --config Release -j $(nproc)'
@@ -168,16 +216,13 @@ jobs:
168
216
docker run --platform ${{ matrix.arch }} --rm \
169
217
-v ${{ github.workspace }}:/workspace \
170
218
-w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
171
- set -e
172
- export DEBIAN_FRONTEND=noninteractive
173
- sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
174
- sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
219
+ # Source the robust apt setup function
220
+ eval "${{ env.SETUP_APT_FUNCTION }}"
175
221
176
- apt-get update
177
- apt-get install -y ca-certificates
178
- sed -i "s|http://ports.ubuntu.com|https://mirror.kumi.systems|g" /etc/apt/sources.list
222
+ # Setup apt with robust mirror handling
223
+ setup_robust_apt "${{ matrix.arch }}"
179
224
180
- apt update
225
+ # Install packages and build
181
226
apt install -y build-essential libsdl2-dev cmake git
182
227
cmake -B build -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv8-a
183
228
cmake --build build --config Release -j $(nproc)'
@@ -204,16 +249,13 @@ jobs:
204
249
docker run --platform ${{ matrix.arch }} --rm \
205
250
-v ${{ github.workspace }}:/workspace \
206
251
-w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
207
- set -e
208
- export DEBIAN_FRONTEND=noninteractive
209
- sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
210
- sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
252
+ # Source the robust apt setup function
253
+ eval "${{ env.SETUP_APT_FUNCTION }}"
211
254
212
- apt-get update
213
- apt-get install -y ca-certificates
214
- sed -i "s|http://ports.ubuntu.com|https://mirror.kumi.systems|g" /etc/apt/sources.list
255
+ # Setup apt with robust mirror handling
256
+ setup_robust_apt "${{ matrix.arch }}"
215
257
216
- apt update
258
+ # Install packages and build
217
259
apt install -y build-essential libsdl2-dev cmake git
218
260
cmake -B build -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv7-a+fp
219
261
cmake --build build --config Release -j $(nproc)'
@@ -411,16 +453,13 @@ jobs:
411
453
docker run --platform ${{ matrix.arch }} --rm \
412
454
-v ${{ github.workspace }}:/workspace \
413
455
-w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
414
- set -e
415
- export DEBIAN_FRONTEND=noninteractive
416
- sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
417
- sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
456
+ # Source the robust apt setup function
457
+ eval "${{ env.SETUP_APT_FUNCTION }}"
418
458
419
- apt-get update
420
- apt-get install -y ca-certificates
421
- sed -i "s|http://ports.ubuntu.com|https://mirror.kumi.systems|g" /etc/apt/sources.list
459
+ # Setup apt with robust mirror handling
460
+ setup_robust_apt "${{ matrix.arch }}"
422
461
423
- apt update
462
+ # Install packages and build
424
463
apt install -y clang build-essential cmake libsdl2-dev git
425
464
cmake . -DWHISPER_SDL2=ON -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang
426
465
make
@@ -449,12 +488,13 @@ jobs:
449
488
docker run --platform ${{ matrix.arch }} --rm \
450
489
-v ${{ github.workspace }}:/workspace \
451
490
-w /workspace ${{ env.ubuntu_image }} /bin/sh -c '
452
- set -e
453
- export DEBIAN_FRONTEND=noninteractive
454
- sed -i "s|archive.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
455
- sed -i "s|security.ubuntu.com|mirrors.kernel.org|g" /etc/apt/sources.list
491
+ # Source the robust apt setup function
492
+ eval "${{ env.SETUP_APT_FUNCTION }}"
456
493
457
- apt update
494
+ # Setup apt with robust mirror handling
495
+ setup_robust_apt "${{ matrix.arch }}"
496
+
497
+ # Install packages and build
458
498
apt install -y build-essential cmake git
459
499
cmake . -DCMAKE_BUILD_TYPE=Debug \
460
500
-DWHISPER_SANITIZE_${{ matrix.sanitizer }}=ON \
0 commit comments