From: Viktor Szakats Date: Fri, 9 Jan 2026 14:51:04 +0000 (+0100) Subject: GHA: switch 12 Linux jobs to arm64 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b0d8dcc16c531d3154ab54347a3eaabf9bd2c7d;p=thirdparty%2Fcurl.git GHA: switch 12 Linux jobs to arm64 More cost-effective and seems as fast or faster than Intel. In particular, valgrind seems to be almost 2x fast. So fast the job pair could fit under 10 minutes if merged again (but would be the longest in GHA/Linux.) Installing packages is slightly slower. The package repo is Ubuntu's which is slower than the Azure mirror used on Intel (unless Azure is broken, which happened a lot last year). To add to more jobs, the locally built deps also need to be migrated. Also: - add workaround for failing sshd server on Linux arm runners, caused by world-writable `HOME` directory. Closes #20231 --- diff --git a/.github/workflows/appveyor-status.yml b/.github/workflows/appveyor-status.yml index 48e11b0e3d..197c5f26e5 100644 --- a/.github/workflows/appveyor-status.yml +++ b/.github/workflows/appveyor-status.yml @@ -16,7 +16,7 @@ permissions: {} jobs: split: name: 'split' - runs-on: ubuntu-latest + runs-on: ubuntu-24.04-arm if: ${{ github.event.sender.login == 'appveyor[bot]' }} permissions: statuses: write # To update build statuses diff --git a/.github/workflows/checkdocs.yml b/.github/workflows/checkdocs.yml index 8fde2c536c..6eba955acd 100644 --- a/.github/workflows/checkdocs.yml +++ b/.github/workflows/checkdocs.yml @@ -118,7 +118,7 @@ jobs: badwords-synopsis: name: 'badwords, synopsis' - runs-on: ubuntu-latest + runs-on: ubuntu-24.04-arm steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: @@ -132,7 +132,7 @@ jobs: man-examples: name: 'man-examples' - runs-on: ubuntu-latest + runs-on: ubuntu-24.04-arm steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: diff --git a/.github/workflows/checksrc.yml b/.github/workflows/checksrc.yml index 7da9df8fac..e9dd584a0b 100644 --- a/.github/workflows/checksrc.yml +++ b/.github/workflows/checksrc.yml @@ -34,7 +34,7 @@ permissions: {} jobs: checksrc: name: 'checksrc' - runs-on: ubuntu-latest + runs-on: ubuntu-24.04-arm steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: diff --git a/.github/workflows/checkurls.yml b/.github/workflows/checkurls.yml index 4a14a930d5..c1e9983c2c 100644 --- a/.github/workflows/checkurls.yml +++ b/.github/workflows/checkurls.yml @@ -25,7 +25,7 @@ jobs: linkcheck: if: ${{ github.repository_owner == 'curl' || github.event_name != 'schedule' }} name: 'linkcheck' - runs-on: ubuntu-latest + runs-on: ubuntu-24.04-arm steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 5fefc6f8eb..ab2c182200 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -172,24 +172,26 @@ jobs: configure: --with-openssl --enable-debug --disable-unity - name: 'openssl libssh2 sync-resolver valgrind 1' + image: ubuntu-24.04-arm install_packages: libidn2-dev libssh2-1-dev libnghttp2-dev libldap-dev valgrind tflags: '--min=920 1 to 950' generate: -DENABLE_DEBUG=ON -DENABLE_THREADED_RESOLVER=OFF - name: 'openssl libssh2 sync-resolver valgrind 2' + image: ubuntu-24.04-arm install_packages: libidn2-dev libssh2-1-dev libnghttp2-dev libldap-dev valgrind tflags: '--min=910 951 to 9999' generate: -DENABLE_DEBUG=ON -DENABLE_THREADED_RESOLVER=OFF - - name: 'openssl' + - name: 'openssl intel' install_packages: libssh-dev install_steps: pytest configure: CFLAGS=-std=gnu89 --with-openssl --with-libssh --enable-debug - name: 'openssl arm' + image: ubuntu-24.04-arm install_steps: pytest configure: CFLAGS=-std=gnu89 --with-openssl --enable-debug --disable-verbose - image: 'ubuntu-24.04-arm' - name: 'openssl -O3 libssh valgrind 1' install_packages: libssh-dev valgrind @@ -209,15 +211,18 @@ jobs: configure: CC=clang --enable-static --disable-shared --with-openssl --with-gssapi --enable-debug --disable-docs --disable-manual --with-ldap=/home/runner/openldap-static --with-ldap-lib=ldap --with-lber-lib=lber - name: 'openssl clang krb5 LTO' + image: ubuntu-24.04-arm install_packages: libssh2-1-dev libkrb5-dev clang install_steps: skiprun pytest CC: clang generate: -DCURL_USE_OPENSSL=ON -DCURL_USE_GSSAPI=ON -DENABLE_DEBUG=ON -DCURL_LTO=ON - name: 'openssl !ipv6 !--libcurl !--digest-auth' + image: ubuntu-24.04-arm configure: --with-openssl --disable-ipv6 --enable-debug --disable-unity --disable-libcurl-option --disable-digest-auth - name: 'openssl https-only' + image: ubuntu-24.04-arm tflags: '--min=1150' configure: >- --with-openssl --enable-debug --disable-unity @@ -250,6 +255,7 @@ jobs: --with-openssl --with-librtmp --with-libssh2 --with-libidn2 --enable-ares --enable-debug - name: '!ssl !http !smtp !imap' + image: ubuntu-24.04-arm tflags: '--min=475' configure: --without-ssl --enable-debug --disable-http --disable-smtp --disable-imap --disable-unity @@ -347,6 +353,7 @@ jobs: tflags: '-n --test-event --min=1350' - name: 'duphandle' + image: ubuntu-24.04-arm install_packages: libssh-dev configure: --enable-debug --enable-static --disable-shared --disable-threaded-resolver --with-libssh --with-openssl tflags: '-n --test-duphandle' @@ -409,6 +416,12 @@ jobs: if [ -n "${INSTALL_PACKAGES_BREW}" ]; then HOMEBREW_NO_AUTO_UPDATE=1 /home/linuxbrew/.linuxbrew/bin/brew install ${INSTALL_PACKAGES_BREW} fi + # Workaround for ubuntu-24.04-arm images having 0777 for /home/runner, + # which breaks the test sshd server used in pytest. + if [[ "$(uname -m)" = *'aarch64'* ]]; then + ls -l /home + chmod 0755 /home/runner + fi - name: 'install prereqs (i686)' if: ${{ contains(matrix.build.name, 'i686') }}