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
This commit is contained in:
Viktor Szakats 2026-01-09 15:51:04 +01:00
parent 91c24d3e10
commit 2b0d8dcc16
No known key found for this signature in database
GPG Key ID: B5ABD165E2AEF201
5 changed files with 20 additions and 7 deletions

View File

@ -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

View File

@ -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:

View File

@ -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:

View File

@ -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:

View File

@ -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') }}