Skip to content

Commit b8ae7b9

Browse files
authored
Merge pull request #633 from sysprog21/ci-apt
CI: Retry apt ops for mirror sync resilience
2 parents 966e5c1 + 8cdca41 commit b8ae7b9

File tree

1 file changed

+61
-5
lines changed

1 file changed

+61
-5
lines changed

.github/workflows/main.yml

Lines changed: 61 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,24 @@ jobs:
6969

7070
- name: Install dependencies
7171
run: |
72-
sudo apt-get update -q=2
72+
set +e # Disable errexit
73+
# Configure apt to tolerate mirror sync failures
74+
sudo tee /etc/apt/apt.conf.d/99-ci-reliability > /dev/null << 'EOF'
75+
APT::Update::Error-Mode "any";
76+
Acquire::IndexTargets::deb::DEP-11::DefaultEnabled "false";
77+
Acquire::IndexTargets::deb::DEP-11-icons::DefaultEnabled "false";
78+
Acquire::IndexTargets::deb::DEP-11-icons-hidpi::DefaultEnabled "false";
79+
Acquire::Retries "3";
80+
Acquire::Check-Valid-Until "false";
81+
EOF
82+
# Update with error tolerance
83+
sudo apt-get update -q=2 2>&1
84+
UPDATE_EXIT=$?
85+
if [ $UPDATE_EXIT -ne 0 ]; then
86+
echo "WARNING: apt update exited with code $UPDATE_EXIT, continuing..."
87+
fi
7388
sudo apt-get install -q=2 curl libsdl2-dev libsdl2-mixer-dev device-tree-compiler expect bc p7zip-full
89+
set -e # Re-enable errexit
7490
shell: bash
7591

7692
- name: Install RISC-V Toolchain
@@ -301,17 +317,41 @@ jobs:
301317
githubToken: ${{ github.token }}
302318
# No 'sudo' is available
303319
install: |
304-
apt update -qq
305-
apt install -yqq make git curl wget clang libsdl2-dev libsdl2-mixer-dev lsb-release software-properties-common gnupg bc
320+
set +e # Disable errexit for entire install block
321+
# Configure apt to tolerate mirror sync failures
322+
cat > /etc/apt/apt.conf.d/99-ci-reliability << 'APTCONF'
323+
APT::Update::Error-Mode "any";
324+
Acquire::IndexTargets::deb::DEP-11::DefaultEnabled "false";
325+
Acquire::IndexTargets::deb::DEP-11-icons::DefaultEnabled "false";
326+
Acquire::IndexTargets::deb::DEP-11-icons-hidpi::DefaultEnabled "false";
327+
Acquire::Retries "3";
328+
Acquire::Check-Valid-Until "false";
329+
APTCONF
330+
# Update with error tolerance - may fail during mirror sync
331+
apt update -qq 2>&1
332+
UPDATE_EXIT=$?
333+
if [ $UPDATE_EXIT -ne 0 ]; then
334+
echo "WARNING: apt update exited with code $UPDATE_EXIT (mirror sync likely in progress)"
335+
echo "Continuing with installation using cached/partial indexes..."
336+
fi
337+
# Install packages - will use whatever indexes are available
338+
apt install -yqq make git curl wget clang libsdl2-dev libsdl2-mixer-dev lsb-release software-properties-common gnupg bc || {
339+
echo "WARNING: Some packages may have failed to install, retrying critical ones..."
340+
apt install -yqq --no-download make git curl wget clang || true
341+
}
306342
which wget || echo "WARNING: wget not found after installation"
343+
set -e # Re-enable errexit
344+
exit 0 # Force success exit code
307345
# FIXME: gcc build fails on Aarch64/Linux hosts
308346
env: |
309347
CC: clang-18
310348
# Append custom commands here
311349
run: |
312350
# Verify and install wget if needed (workaround for install step issues)
313351
if ! command -v wget > /dev/null 2>&1; then
314-
apt update -qq && apt install -yqq wget
352+
# Config file should already exist from install step, but apt may still fail
353+
apt update -qq 2>&1 || true
354+
apt install -yqq wget || { echo "wget install failed, trying without update..."; apt install -yqq wget --no-download || true; }
315355
fi
316356
git config --global --add safe.directory ${{ github.workspace }}
317357
git config --global --add safe.directory ${{ github.workspace }}/src/softfloat
@@ -570,12 +610,28 @@ jobs:
570610
# LLVM static analysis
571611
- name: set up scan-build
572612
run: |
573-
sudo apt-get update -q=2
613+
set +e # Disable errexit
614+
# Configure apt to tolerate mirror sync failures
615+
sudo tee /etc/apt/apt.conf.d/99-ci-reliability > /dev/null << 'EOF'
616+
APT::Update::Error-Mode "any";
617+
Acquire::IndexTargets::deb::DEP-11::DefaultEnabled "false";
618+
Acquire::IndexTargets::deb::DEP-11-icons::DefaultEnabled "false";
619+
Acquire::IndexTargets::deb::DEP-11-icons-hidpi::DefaultEnabled "false";
620+
Acquire::Retries "3";
621+
Acquire::Check-Valid-Until "false";
622+
EOF
623+
# Update with error tolerance
624+
sudo apt-get update -q=2 2>&1
625+
UPDATE_EXIT=$?
626+
if [ $UPDATE_EXIT -ne 0 ]; then
627+
echo "WARNING: apt update exited with code $UPDATE_EXIT, continuing..."
628+
fi
574629
sudo apt-get install -q=2 curl libsdl2-dev libsdl2-mixer-dev
575630
.ci/fetch.sh -q -o llvm.sh https://apt.llvm.org/llvm.sh
576631
chmod +x ./llvm.sh
577632
sudo ./llvm.sh 18
578633
sudo apt-get install -q=2 clang-18 clang-tools-18
634+
set -e # Re-enable errexit
579635
shell: bash
580636
- name: run scan-build without JIT
581637
env:

0 commit comments

Comments
 (0)