From 1b8449674adb57ee0f60e761d654c69b20ee8fcf Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sat, 21 Sep 2024 03:37:54 +0200 Subject: [PATCH] GHA: use more ninja, build examples in the last step, and more - linux: bump up test parallelism for valgrind tests to `-j4` (from `-j2`). (EXPERIMENTAL) - linux: drop `apt-get update` for the default architecture on the GHA native runner. It makes prereq install steps complete faster. The runner image gets weekly updates, and that should be enough to guarantee fresh packages in most cases: https://github.com/actions/runner-images/commits/main/images/ubuntu/Ubuntu2204-Readme.md - aws-lc: use ninja with cmake. - aws-lc: build examples with cmake. - aws-lc: drop `apt update`. - aws-lc, wolfssl, linux32, http3-linux: move building examples to the last step. Follow-up to 45202cbba4bb3d12b4469063864b57d2f8765d9c #14906 - windows: formatting. Closes #14992 --- .github/workflows/awslc.yml | 19 +++++++++---------- .github/workflows/checksrc.yml | 2 -- .github/workflows/http3-linux.yml | 10 +++------- .github/workflows/linux.yml | 5 +++-- .github/workflows/linux32.yml | 6 +++--- .github/workflows/windows.yml | 3 +-- .github/workflows/wolfssl.yml | 8 +++----- 7 files changed, 22 insertions(+), 31 deletions(-) diff --git a/.github/workflows/awslc.yml b/.github/workflows/awslc.yml index 742075561c..d99928efb1 100644 --- a/.github/workflows/awslc.yml +++ b/.github/workflows/awslc.yml @@ -50,8 +50,6 @@ jobs: steps: - run: | - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - sudo apt-get update sudo apt-get install --yes libtool autoconf automake pkgconf stunnel4 libpsl-dev # ensure we don't pick up openssl in this build sudo apt remove --yes libssl-dev @@ -94,9 +92,6 @@ jobs: - run: make -C build V=1 name: 'make' - - run: make -C build V=1 examples - name: 'make examples' - - run: make -C build V=1 -C tests name: 'make tests' @@ -104,6 +99,9 @@ jobs: name: 'run tests' timeout-minutes: 15 + - run: make -C build V=1 examples + name: 'make examples' + cmake: name: awslc (cmake) runs-on: 'ubuntu-latest' @@ -111,9 +109,7 @@ jobs: steps: - run: | - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - sudo apt-get update - sudo apt-get install cmake stunnel4 libpsl-dev + sudo apt-get install cmake ninja-build stunnel4 libpsl-dev # ensure we don't pick up openssl in this build sudo apt remove --yes libssl-dev sudo python3 -m pip install impacket @@ -136,14 +132,14 @@ jobs: tar xzf v${{ env.awslc-version }}.tar.gz mkdir aws-lc-${{ env.awslc-version }}-build cd aws-lc-${{ env.awslc-version }}-build - cmake -DCMAKE_INSTALL_PREFIX=$HOME/awslc ../aws-lc-${{ env.awslc-version }} + cmake -G Ninja -DCMAKE_INSTALL_PREFIX=$HOME/awslc ../aws-lc-${{ env.awslc-version }} cmake --build . --parallel cmake --install . - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - run: | - cmake -B build -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \ + cmake -B build -G Ninja -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \ -DOPENSSL_ROOT_DIR=$HOME/awslc -DBUILD_SHARED_LIBS=ON name: 'cmake generate out-of-tree' @@ -155,3 +151,6 @@ jobs: - run: cmake --build build --parallel --target testdeps name: 'cmake build tests' + + - run: cmake --build build --parallel --target curl-examples + name: 'cmake build examples' diff --git a/.github/workflows/checksrc.yml b/.github/workflows/checksrc.yml index 87868b6318..a36140cdc1 100644 --- a/.github/workflows/checksrc.yml +++ b/.github/workflows/checksrc.yml @@ -49,8 +49,6 @@ jobs: - name: install run: | - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - sudo apt-get update sudo apt-get install codespell python3-pip python3 -m pip install cmakelint==1.4.3 diff --git a/.github/workflows/http3-linux.yml b/.github/workflows/http3-linux.yml index 8bd34ab059..66a12420c3 100644 --- a/.github/workflows/http3-linux.yml +++ b/.github/workflows/http3-linux.yml @@ -160,8 +160,6 @@ jobs: - name: install build prerequisites if: steps.settings.outputs.needs-build == 'true' run: | - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - sudo apt-get update sudo apt-get install libtool autoconf automake pkgconf stunnel4 \ libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libev-dev libc-ares-dev \ nettle-dev libp11-kit-dev libtspi-dev libunistring-dev guile-2.2-dev libtasn1-bin \ @@ -296,8 +294,6 @@ jobs: steps: - run: | - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - sudo apt-get update sudo apt-get install libtool autoconf automake pkgconf stunnel4 \ libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libev-dev libc-ares-dev \ nettle-dev libp11-kit-dev libtspi-dev libunistring-dev guile-2.2-dev libtasn1-bin \ @@ -457,9 +453,6 @@ jobs: - run: make V=1 name: 'make' - - run: make V=1 examples - name: 'make examples' - - run: make V=1 -C tests name: 'make tests' @@ -473,3 +466,6 @@ jobs: env: TFLAGS: "${{ matrix.build.tflags }}" CURL_CI: github + + - run: make V=1 examples + name: 'make examples' diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index be96dd2e1b..221635816e 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -250,8 +250,6 @@ jobs: steps: - if: matrix.build.container == null run: | - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - sudo apt-get update sudo apt-get install libtool autoconf automake pkgconf stunnel4 libpsl-dev libbrotli-dev libzstd-dev ${{ matrix.build.install_packages }} sudo python3 -m pip install impacket name: 'install prereqs and impacket' @@ -550,6 +548,9 @@ jobs: timeout-minutes: ${{ contains(matrix.build.install_packages, 'valgrind') && 30 || 15 }} run: | export TFLAGS='${{ matrix.build.tflags }}' + if [[ '${{ matrix.build.install_packages }}' = *'valgrind'* ]]; then + TFLAGS+=' -j4' + fi if [[ '${{ matrix.build.install_packages }}' = *'heimdal-dev'* ]]; then TFLAGS+=' ~2077 ~2078' # valgrind errors fi diff --git a/.github/workflows/linux32.yml b/.github/workflows/linux32.yml index 14380450d9..e89130356a 100644 --- a/.github/workflows/linux32.yml +++ b/.github/workflows/linux32.yml @@ -80,9 +80,6 @@ jobs: - run: ./src/curl -V name: 'check curl -V output' - - run: make V=1 examples - name: 'make examples' - - run: make V=1 -C tests name: 'make tests' @@ -90,3 +87,6 @@ jobs: name: 'run tests' env: TFLAGS: "${{ matrix.build.tflags }}" + + - run: make V=1 examples + name: 'make examples' diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 7787dc953d..e17651674c 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -325,8 +325,7 @@ jobs: PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH" [ '${{ matrix.type }}' = 'Debug' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=' [ '${{ matrix.type }}' = 'Release' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=' - cmake -B bld ${options} \ - '-GMSYS Makefiles' \ + cmake -B bld ${options} -G 'MSYS Makefiles' \ -DCMAKE_C_COMPILER=gcc \ '-DCMAKE_BUILD_TYPE=${{ matrix.type }}' \ -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \ diff --git a/.github/workflows/wolfssl.yml b/.github/workflows/wolfssl.yml index 49b1bd9174..306fd74176 100644 --- a/.github/workflows/wolfssl.yml +++ b/.github/workflows/wolfssl.yml @@ -63,8 +63,6 @@ jobs: steps: - run: | - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - sudo apt-get update sudo apt-get install libtool autoconf automake pkgconf stunnel4 libpsl-dev ${{ matrix.build.install }} sudo python3 -m pip install impacket name: 'install prereqs and impacket' @@ -90,9 +88,6 @@ jobs: - run: make V=1 name: 'make' - - run: make V=1 examples - name: 'make examples' - - run: make V=1 -C tests name: 'make tests' @@ -101,3 +96,6 @@ jobs: timeout-minutes: ${{ contains(matrix.build.install, 'valgrind') && 30 || 15 }} env: TFLAGS: "${{ matrix.build.tflags }}" + + - run: make V=1 examples + name: 'make examples' -- 2.47.3