]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
GHA: switch 12 Linux jobs to arm64
authorViktor Szakats <commit@vsz.me>
Fri, 9 Jan 2026 14:51:04 +0000 (15:51 +0100)
committerViktor Szakats <commit@vsz.me>
Fri, 9 Jan 2026 18:35:16 +0000 (19:35 +0100)
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

.github/workflows/appveyor-status.yml
.github/workflows/checkdocs.yml
.github/workflows/checksrc.yml
.github/workflows/checkurls.yml
.github/workflows/linux.yml

index 48e11b0e3d3cff24cb81906c78683a0bd6cffa55..197c5f26e55a7f8dbfecbf130413a3a958ceeb30 100644 (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
index 8fde2c536c34b207ba9b8cacd4b091291e8f67b3..6eba955acd53dfb6766ba671e0d62429b3105130 100644 (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:
index 7da9df8faca4407942b1f1ea9a8949cc534316f0..e9dd584a0b18aa869809a27fddd8f902bc37e0a4 100644 (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:
index 4a14a930d50d2bb902e27652b4fa5489db4c2bed..c1e9983c2c2ebe8cb0e89d16942d6677c4049e90 100644 (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:
index 5fefc6f8ebed826313ca62358e8c31fad6a2f186..ab2c18220002456b5f16fba18264b80bb5472f10 100644 (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') }}