From: Viktor Szakats Date: Fri, 2 Jan 2026 10:03:12 +0000 (+0100) Subject: GHA/linux: switch scan-build jobs to cmake (for 2x perf) X-Git-Tag: curl-8_18_0~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ff958fc4b2c606d70de8dbfe083bee98896c0072;p=thirdparty%2Fcurl.git GHA/linux: switch scan-build jobs to cmake (for 2x perf) Somewhat unexpectedly, switching autotools jobs to identical (non-unity, non-debug, same options) cmake ones, makes them complete 2x faster. Most of it comes from cmake building shared libcurl only, while autotools was using defaults and building both, in two separate passes. Thers is about a minute (per job) of gain due to other reasons. Before: MultiSSL: 10m30: https://github.com/curl/curl/actions/runs/20656775456/job/59311070197 H3: 9m14s: https://github.com/curl/curl/actions/runs/20656775456/job/59311070204 After: MultiSSL: 4m52s: https://github.com/curl/curl/actions/runs/20658343323/job/59315501903 H3: 4m7s: https://github.com/curl/curl/actions/runs/20658343323/job/59315501918 H3: 5m4s: https://github.com/curl/curl/actions/runs/20659294959/job/59318215987 (autotools shared only, for comparison, not merged) Also: - drop building examples with scan-build in the second (shorter) job. This offers no extra coverage over the long job that has both GnuTLS and OpenSSL. Saving an extra ~30s. Closes #20159 --- diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 2fd1817f7b..cc78f2bcc4 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -251,15 +251,15 @@ jobs: CC: clang configure-prefix: scan-build make-prefix: scan-build --status-bugs - PKG_CONFIG_PATH: /home/linuxbrew/.linuxbrew/opt/gsasl/lib/pkgconfig - LDFLAGS: -Wl,-rpath,/home/runner/wolfssl-opensslextra/lib -Wl,-rpath,/home/linuxbrew/.linuxbrew/opt/gsasl/lib - configure: >- - --with-wolfssl=/home/runner/wolfssl-opensslextra --with-openssl --with-rustls --with-mbedtls=/home/runner/mbedtls --with-gnutls --with-libgsasl - --with-librtmp --with-libssh2 --with-libidn2 - --enable-ech --with-gssapi --enable-ssls-export - --disable-debug --disable-unity --disable-typecheck + LDFLAGS: -Wl,-rpath,/home/runner/wolfssl-opensslextra/lib -Wl,-rpath,/home/runner/mbedtls/lib -Wl,-rpath,/home/runner/rustls/lib -Wl,-rpath,/home/linuxbrew/.linuxbrew/opt/gsasl/lib + PKG_CONFIG_PATH: /home/runner/wolfssl-opensslextra/lib/pkgconfig:/home/runner/mbedtls/lib/pkgconfig:/home/runner/rustls/lib/pkgconfig:/home/linuxbrew/.linuxbrew/opt/gsasl/lib/pkgconfig + generate: >- + -DCURL_USE_OPENSSL=ON -DCURL_USE_WOLFSSL=ON -DCURL_USE_GNUTLS=ON -DCURL_USE_MBEDTLS=ON -DCURL_USE_RUSTLS=ON + -DCURL_USE_GSASL=ON -DUSE_LIBRTMP=ON + -DUSE_ECH=ON -DCURL_USE_GSSAPI=ON -DUSE_SSLS_EXPORT=ON + -DCMAKE_UNITY_BUILD=OFF -DCURL_DISABLE_TYPECHECK=ON - - name: 'scan-build H3 c-ares' + - name: 'scan-build H3 c-ares !examples' install_packages: clang-tools clang libidn2-dev libssh-dev libnghttp2-dev install_steps: skipall install_steps_brew: openssl libngtcp2 libnghttp3 c-ares @@ -268,11 +268,11 @@ jobs: make-prefix: scan-build --status-bugs LDFLAGS: -Wl,-rpath,/home/linuxbrew/.linuxbrew/opt/openssl/lib -Wl,-rpath,/home/linuxbrew/.linuxbrew/opt/libngtcp2/lib -Wl,-rpath,/home/linuxbrew/.linuxbrew/opt/libnghttp3/lib -Wl,-rpath,/home/linuxbrew/.linuxbrew/opt/c-ares/lib PKG_CONFIG_PATH: /home/linuxbrew/.linuxbrew/opt/libngtcp2/lib/pkgconfig:/home/linuxbrew/.linuxbrew/opt/libnghttp3/lib/pkgconfig:/home/linuxbrew/.linuxbrew/opt/c-ares/lib/pkgconfig - configure: >- - --with-openssl=/home/linuxbrew/.linuxbrew/opt/openssl --with-ngtcp2 --with-nghttp3= - --with-libidn2 --with-libssh --enable-httpsrr --enable-ares - --disable-debug --disable-unity --disable-typecheck - --disable-verbose + generate: >- + -DCURL_USE_OPENSSL=ON -DOPENSSL_ROOT_DIR=/home/linuxbrew/.linuxbrew/opt/openssl -DUSE_NGTCP2=ON + -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=ON -DUSE_HTTPSRR=ON -DENABLE_ARES=ON + -DCMAKE_UNITY_BUILD=OFF -DCURL_DISABLE_TYPECHECK=ON + -DCURL_DISABLE_VERBOSE_STRINGS=ON - name: 'address-sanitizer' install_packages: clang libssl-dev libssh-dev libidn2-dev libnghttp2-dev libubsan1 libasan8 libtsan2 @@ -689,6 +689,7 @@ jobs: [[ "${MATRIX_INSTALL_STEPS}" = *'awslc'* ]] && sudo apt-get -o Dpkg::Use-Pty=0 purge libssl-dev [ -n "${MATRIX_PKG_CONFIG_PATH}" ] && export PKG_CONFIG_PATH="${MATRIX_PKG_CONFIG_PATH}" if [ "${MATRIX_BUILD}" = 'cmake' ]; then + ${MATRIX_CONFIGURE_PREFIX} \ cmake -B bld -G Ninja \ -DCMAKE_INSTALL_PREFIX="$HOME"/curl-install \ -DCMAKE_C_COMPILER_TARGET="$(uname -m)-pc-linux-gnu" -DBUILD_STATIC_LIBS=ON \ @@ -818,7 +819,7 @@ jobs: ../.github/scripts/randcurl.pl 60 ../bld/src/curl - name: 'build examples' - if: ${{ !contains(matrix.build.install_packages, 'valgrind') && matrix.build.make-custom-target != 'tidy' }} + if: ${{ !contains(matrix.build.install_packages, 'valgrind') && matrix.build.make-custom-target != 'tidy' && !contains(matrix.build.name, '!examples') }} run: | if [ "${MATRIX_BUILD}" = 'cmake' ]; then ${MATRIX_MAKE_PREFIX} cmake --build bld --verbose --target curl-examples-build