From a5838847c4395cdf043d9a833f38d5ba0a704ca1 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Tue, 31 Mar 2026 21:01:57 +0200 Subject: [PATCH] GHA: try workaround for slow Azure Ubuntu distro server (cont.) - fail if all retries failed. - run `dpkg --configure -a` after an aborted slow attempt. ``` Selecting previously unselected package libsys-hostname-long-perl. Error: slow server, retry E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem. [...] ``` Bug: https://github.com/curl/curl/pull/21107#issuecomment-4163506100 Follow-up to 5172ba5475cffc525c2338dfa63f818e11e80a42 #21107 Closes #21181 --- .github/workflows/codeql.yml | 4 +++- .github/workflows/configure-vs-cmake.yml | 4 +++- .github/workflows/distcheck.yml | 4 +++- .github/workflows/http3-linux.yml | 8 ++++++-- .github/workflows/linux.yml | 8 ++++++-- .github/workflows/non-native.yml | 4 +++- .github/workflows/windows.yml | 4 +++- 7 files changed, 27 insertions(+), 9 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index c1921a692b..17db4154fc 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -73,7 +73,9 @@ jobs: run: | sudo rm -f /etc/apt/sources.list.d/{azure-cli.sources,microsoft-prod.list,ondrej-ubuntu-php-noble.sources} sudo apt-get -o Dpkg::Use-Pty=0 update - printf '#!/bin/sh\nfor i in 1 2 3; do timeout 60 "$@" && break; echo "Error: slow server, retry"; sleep 1; done' > "$HOME"/my-apt; chmod +x "$HOME"/my-apt + printf "#!/bin/sh + while [ \$? = 0 ]; do for i in 1 2 3; do timeout 60 \"\$@\" && break 2; echo \"Error: slow server, retry \$i\"; sleep 1 + dpkg --configure -a; done; false; done" > "$HOME"/my-apt; chmod +x "$HOME"/my-apt sudo "$HOME"/my-apt apt-get -o Dpkg::Use-Pty=0 install \ libpsl-dev libbrotli-dev libidn2-dev libssh2-1-dev libssh-dev \ libnghttp2-dev libldap-dev libkrb5-dev libgnutls28-dev libwolfssl-dev diff --git a/.github/workflows/configure-vs-cmake.yml b/.github/workflows/configure-vs-cmake.yml index f0dc948786..8734e1a534 100644 --- a/.github/workflows/configure-vs-cmake.yml +++ b/.github/workflows/configure-vs-cmake.yml @@ -145,7 +145,9 @@ jobs: steps: - name: 'install packages' run: | - printf '#!/bin/sh\nfor i in 1 2 3; do timeout 30 "$@" && break; echo "Error: slow server, retry"; sleep 1; done' > "$HOME"/my-apt; chmod +x "$HOME"/my-apt + printf "#!/bin/sh + while [ \$? = 0 ]; do for i in 1 2 3; do timeout 30 \"\$@\" && break 2; echo \"Error: slow server, retry \$i\"; sleep 1 + dpkg --configure -a; done; false; done" > "$HOME"/my-apt; chmod +x "$HOME"/my-apt sudo "$HOME"/my-apt apt-get -o Dpkg::Use-Pty=0 install gcc-mingw-w64-x86-64-win32 - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/.github/workflows/distcheck.yml b/.github/workflows/distcheck.yml index 5e2cb02547..af5adb61a5 100644 --- a/.github/workflows/distcheck.yml +++ b/.github/workflows/distcheck.yml @@ -288,7 +288,9 @@ jobs: sha256sum pkg.bin && sha256sum pkg.bin | grep -qwF -- "${OLD_CMAKE_SHA256_WIN_INTEL}" && unzip -q pkg.bin && rm -f pkg.bin printf '%s' ~/cmake-"${OLD_CMAKE_VERSION}"-win64-x64/bin/cmake.exe > ~/old-cmake-path.txt elif [[ "${MATRIX_IMAGE}" = *'ubuntu'* ]]; then - printf '#!/bin/sh\nfor i in 1 2 3; do timeout 30 "$@" && break; echo "Error: slow server, retry"; sleep 1; done' > "$HOME"/my-apt; chmod +x "$HOME"/my-apt + printf "#!/bin/sh + while [ \$? = 0 ]; do for i in 1 2 3; do timeout 30 \"\$@\" && break 2; echo \"Error: slow server, retry \$i\"; sleep 1 + dpkg --configure -a; done; false; done" > "$HOME"/my-apt; chmod +x "$HOME"/my-apt sudo "$HOME"/my-apt apt-get -o Dpkg::Use-Pty=0 install libpsl-dev libssl-dev cd ~ curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 60 --retry 3 --retry-connrefused \ diff --git a/.github/workflows/http3-linux.yml b/.github/workflows/http3-linux.yml index b6f93ba585..9a7f198e62 100644 --- a/.github/workflows/http3-linux.yml +++ b/.github/workflows/http3-linux.yml @@ -208,7 +208,9 @@ jobs: run: | sudo rm -f /etc/apt/sources.list.d/{azure-cli.sources,microsoft-prod.list,ondrej-ubuntu-php-noble.sources} sudo apt-get -o Dpkg::Use-Pty=0 update - printf '#!/bin/sh\nfor i in 1 2 3; do timeout 60 "$@" && break; echo "Error: slow server, retry"; sleep 1; done' > "$HOME"/my-apt; chmod +x "$HOME"/my-apt + printf "#!/bin/sh + while [ \$? = 0 ]; do for i in 1 2 3; do timeout 60 \"\$@\" && break 2; echo \"Error: slow server, retry \$i\"; sleep 1 + dpkg --configure -a; done; false; done" > "$HOME"/my-apt; chmod +x "$HOME"/my-apt sudo "$HOME"/my-apt apt-get -o Dpkg::Use-Pty=0 install \ libtool autoconf automake pkgconf \ libbrotli-dev libzstd-dev zlib1g-dev \ @@ -554,7 +556,9 @@ jobs: run: | sudo rm -f /etc/apt/sources.list.d/{azure-cli.sources,microsoft-prod.list,ondrej-ubuntu-php-noble.sources} sudo apt-get -o Dpkg::Use-Pty=0 update - printf '#!/bin/sh\nfor i in 1 2 3; do timeout 45 "$@" && break; echo "Error: slow server, retry"; sleep 1; done' > "$HOME"/my-apt; chmod +x "$HOME"/my-apt + printf "#!/bin/sh + while [ \$? = 0 ]; do for i in 1 2 3; do timeout 45 \"\$@\" && break 2; echo \"Error: slow server, retry \$i\"; sleep 1 + dpkg --configure -a; done; false; done" > "$HOME"/my-apt; chmod +x "$HOME"/my-apt sudo "$HOME"/my-apt apt-get -o Dpkg::Use-Pty=0 install \ libtool autoconf automake pkgconf \ libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libidn2-0-dev libldap-dev libuv1-dev valgrind \ diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 514df20c52..96b206bcf8 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -438,7 +438,9 @@ jobs: run: | sudo rm -f /etc/apt/sources.list.d/{azure-cli.sources,microsoft-prod.list,ondrej-ubuntu-php-noble.sources} sudo apt-get -o Dpkg::Use-Pty=0 update - printf '#!/bin/sh\nfor i in 1 2 3; do timeout 45 "$@" && break; echo "Error: slow server, retry"; sleep 1; done' > "$HOME"/my-apt; chmod +x "$HOME"/my-apt + printf "#!/bin/sh + while [ \$? = 0 ]; do for i in 1 2 3; do timeout 45 \"\$@\" && break 2; echo \"Error: slow server, retry \$i\"; sleep 1 + dpkg --configure -a; done; false; done" > "$HOME"/my-apt; chmod +x "$HOME"/my-apt sudo "$HOME"/my-apt apt-get -o Dpkg::Use-Pty=0 install \ libtool autoconf automake pkgconf \ libpsl-dev zlib1g-dev libbrotli-dev libzstd-dev \ @@ -460,7 +462,9 @@ jobs: sudo rm -f /etc/apt/sources.list.d/{azure-cli.sources,microsoft-prod.list,ondrej-ubuntu-php-noble.sources} sudo dpkg --add-architecture i386 sudo apt-get -o Dpkg::Use-Pty=0 update - printf '#!/bin/sh\nfor i in 1 2 3; do timeout 45 "$@" && break; echo "Error: slow server, retry"; sleep 1; done' > "$HOME"/my-apt; chmod +x "$HOME"/my-apt + printf "#!/bin/sh + while [ \$? = 0 ]; do for i in 1 2 3; do timeout 45 \"\$@\" && break 2; echo \"Error: slow server, retry \$i\"; sleep 1 + dpkg --configure -a; done; false; done" > "$HOME"/my-apt; chmod +x "$HOME"/my-apt sudo "$HOME"/my-apt apt-get -o Dpkg::Use-Pty=0 install \ libtool autoconf automake pkgconf stunnel4 \ libpsl-dev:i386 libbrotli-dev:i386 libzstd-dev:i386 \ diff --git a/.github/workflows/non-native.yml b/.github/workflows/non-native.yml index 49a351cfcf..69e84f8df6 100644 --- a/.github/workflows/non-native.yml +++ b/.github/workflows/non-native.yml @@ -349,7 +349,9 @@ jobs: steps: - name: 'install packages' run: | - printf '#!/bin/sh\nfor i in 1 2 3; do timeout 30 "$@" && break; echo "Error: slow server, retry"; sleep 1; done' > "$HOME"/my-apt; chmod +x "$HOME"/my-apt + printf "#!/bin/sh + while [ \$? = 0 ]; do for i in 1 2 3; do timeout 30 \"\$@\" && break 2; echo \"Error: slow server, retry \$i\"; sleep 1 + dpkg --configure -a; done; false; done" > "$HOME"/my-apt; chmod +x "$HOME"/my-apt sudo "$HOME"/my-apt apt-get -o Dpkg::Use-Pty=0 install libfl2 - name: 'cache compiler (djgpp)' diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 45ec24ed77..59ae29f575 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -741,7 +741,9 @@ jobs: env: MATRIX_INSTALL_PACKAGES: '${{ matrix.install_packages }}' run: | - printf '#!/bin/sh\nfor i in 1 2 3; do timeout 30 "$@" && break; echo "Error: slow server, retry"; sleep 1; done' > "$HOME"/my-apt; chmod +x "$HOME"/my-apt + printf "#!/bin/sh + while [ \$? = 0 ]; do for i in 1 2 3; do timeout 30 \"\$@\" && break 2; echo \"Error: slow server, retry \$i\"; sleep 1 + dpkg --configure -a; done; false; done" > "$HOME"/my-apt; chmod +x "$HOME"/my-apt sudo "$HOME"/my-apt apt-get -o Dpkg::Use-Pty=0 install gcc-mingw-w64-x86-64-win32 ${MATRIX_INSTALL_PACKAGES} - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2