Skip to content

Commit 46a0bff

Browse files
committed
CI: Add Error-Mode fallback and improved apt configuration
Previous config file approach failed because apt still attempted dep11 downloads despite configuration. This comprehensive fix uses multiple defense layers to ensure CI reliability. This combination of apt configuration + error handling ensures CI passes even during Ubuntu mirror sync windows when dep11 files are inconsistent.
1 parent 23d78cc commit 46a0bff

File tree

1 file changed

+34
-25
lines changed

1 file changed

+34
-25
lines changed

.github/workflows/main.yml

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,16 @@ jobs:
6969

7070
- name: Install dependencies
7171
run: |
72-
# Create apt config to disable AppStream metadata (causes mirror sync failures)
73-
sudo mkdir -p /etc/apt/apt.conf.d
74-
echo 'Acquire::IndexTargets::deb::DEP-11 "false";' | sudo tee /etc/apt/apt.conf.d/99-no-appstream
75-
echo 'Acquire::IndexTargets::deb::DEP-11-icons "false";' | sudo tee -a /etc/apt/apt.conf.d/99-no-appstream
76-
echo 'Acquire::IndexTargets::deb::DEP-11-icons-hidpi "false";' | sudo tee -a /etc/apt/apt.conf.d/99-no-appstream
77-
sudo apt-get update -q=2 -o Acquire::Retries=3
78-
sudo apt-get install -q=2 -o Acquire::Retries=3 curl libsdl2-dev libsdl2-mixer-dev device-tree-compiler expect bc p7zip-full
72+
# Configure apt to ignore AppStream and continue despite errors
73+
sudo tee /etc/apt/apt.conf.d/99-ci-reliability > /dev/null << 'EOF'
74+
APT::Update::Error-Mode "any";
75+
Acquire::IndexTargets::deb::DEP-11::DefaultEnabled "false";
76+
Acquire::IndexTargets::deb::DEP-11-icons::DefaultEnabled "false";
77+
Acquire::IndexTargets::deb::DEP-11-icons-hidpi::DefaultEnabled "false";
78+
Acquire::Retries "3";
79+
EOF
80+
sudo apt-get update -q=2 || { echo "apt update had warnings, continuing..."; true; }
81+
sudo apt-get install -q=2 curl libsdl2-dev libsdl2-mixer-dev device-tree-compiler expect bc p7zip-full
7982
shell: bash
8083

8184
- name: Install RISC-V Toolchain
@@ -306,13 +309,16 @@ jobs:
306309
githubToken: ${{ github.token }}
307310
# No 'sudo' is available
308311
install: |
309-
# Create apt config to disable AppStream metadata (causes mirror sync failures)
310-
mkdir -p /etc/apt/apt.conf.d
311-
echo 'Acquire::IndexTargets::deb::DEP-11 "false";' > /etc/apt/apt.conf.d/99-no-appstream
312-
echo 'Acquire::IndexTargets::deb::DEP-11-icons "false";' >> /etc/apt/apt.conf.d/99-no-appstream
313-
echo 'Acquire::IndexTargets::deb::DEP-11-icons-hidpi "false";' >> /etc/apt/apt.conf.d/99-no-appstream
314-
apt update -qq -o Acquire::Retries=3 || true
315-
apt install -yqq -o Acquire::Retries=3 make git curl wget clang libsdl2-dev libsdl2-mixer-dev lsb-release software-properties-common gnupg bc
312+
# Configure apt to ignore AppStream and continue despite errors
313+
cat > /etc/apt/apt.conf.d/99-ci-reliability << 'APTCONF'
314+
APT::Update::Error-Mode "any";
315+
Acquire::IndexTargets::deb::DEP-11::DefaultEnabled "false";
316+
Acquire::IndexTargets::deb::DEP-11-icons::DefaultEnabled "false";
317+
Acquire::IndexTargets::deb::DEP-11-icons-hidpi::DefaultEnabled "false";
318+
Acquire::Retries "3";
319+
APTCONF
320+
apt update -qq 2>&1 || { echo "apt update had warnings, continuing..."; true; }
321+
apt install -yqq make git curl wget clang libsdl2-dev libsdl2-mixer-dev lsb-release software-properties-common gnupg bc
316322
which wget || echo "WARNING: wget not found after installation"
317323
# FIXME: gcc build fails on Aarch64/Linux hosts
318324
env: |
@@ -321,9 +327,9 @@ jobs:
321327
run: |
322328
# Verify and install wget if needed (workaround for install step issues)
323329
if ! command -v wget > /dev/null 2>&1; then
324-
# AppStream config should already exist from install step
325-
apt update -qq -o Acquire::Retries=3 || true
326-
apt install -yqq -o Acquire::Retries=3 wget
330+
# Config file should already exist from install step, but apt may still fail
331+
apt update -qq 2>&1 || true
332+
apt install -yqq wget || { echo "wget install failed, trying without update..."; apt install -yqq wget --no-download || true; }
327333
fi
328334
git config --global --add safe.directory ${{ github.workspace }}
329335
git config --global --add safe.directory ${{ github.workspace }}/src/softfloat
@@ -582,17 +588,20 @@ jobs:
582588
# LLVM static analysis
583589
- name: set up scan-build
584590
run: |
585-
# Create apt config to disable AppStream metadata (causes mirror sync failures)
586-
sudo mkdir -p /etc/apt/apt.conf.d
587-
echo 'Acquire::IndexTargets::deb::DEP-11 "false";' | sudo tee /etc/apt/apt.conf.d/99-no-appstream
588-
echo 'Acquire::IndexTargets::deb::DEP-11-icons "false";' | sudo tee -a /etc/apt/apt.conf.d/99-no-appstream
589-
echo 'Acquire::IndexTargets::deb::DEP-11-icons-hidpi "false";' | sudo tee -a /etc/apt/apt.conf.d/99-no-appstream
590-
sudo apt-get update -q=2 -o Acquire::Retries=3
591-
sudo apt-get install -q=2 -o Acquire::Retries=3 curl libsdl2-dev libsdl2-mixer-dev
591+
# Configure apt to ignore AppStream and continue despite errors
592+
sudo tee /etc/apt/apt.conf.d/99-ci-reliability > /dev/null << 'EOF'
593+
APT::Update::Error-Mode "any";
594+
Acquire::IndexTargets::deb::DEP-11::DefaultEnabled "false";
595+
Acquire::IndexTargets::deb::DEP-11-icons::DefaultEnabled "false";
596+
Acquire::IndexTargets::deb::DEP-11-icons-hidpi::DefaultEnabled "false";
597+
Acquire::Retries "3";
598+
EOF
599+
sudo apt-get update -q=2 || { echo "apt update had warnings, continuing..."; true; }
600+
sudo apt-get install -q=2 curl libsdl2-dev libsdl2-mixer-dev
592601
.ci/fetch.sh -q -o llvm.sh https://apt.llvm.org/llvm.sh
593602
chmod +x ./llvm.sh
594603
sudo ./llvm.sh 18
595-
sudo apt-get install -q=2 -o Acquire::Retries=3 clang-18 clang-tools-18
604+
sudo apt-get install -q=2 clang-18 clang-tools-18
596605
shell: bash
597606
- name: run scan-build without JIT
598607
env:

0 commit comments

Comments
 (0)