From: Viktor Szakats Date: Mon, 30 Sep 2024 09:11:49 +0000 (+0200) Subject: GHA: move Cygwin jobs back into the Windows workflow X-Git-Tag: curl-8_11_0~287 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aed3f0231731c915f77e2512bad5739dd141befe;p=thirdparty%2Fcurl.git GHA: move Cygwin jobs back into the Windows workflow Cygwin jobs took 30 minutes and was the reason for moving them to their own workflow. After recent changes, they finish in 8 minutes, which is on par or lower than the longest Windows jobs. Thus, Cygwin can now be moved back to the Windows workflow without causing extra wait for all the workflow jobs to complete (and allowing a manual retry for the remaining flaky jobs). Notice that Cygwin still uses the cygwin/cygwin-install-action action to install Cygwin itself. This action uses no caching and the time it takes fluctuates widely depending on mirror speed, congestion and other things. If Cygwin tends to hold up jobs again for this or other reasons, this patch may be reverted. Follow-up to 80a8e24956ff652e865113231649cb0c14f1e7c2 #15083 Follow-up to 2d8464c4cb9736144946701c5e632c817888eaec #14366 Closes #15086 --- diff --git a/.github/labeler.yml b/.github/labeler.yml index a2c0247776..908435af28 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -526,7 +526,6 @@ Windows: - changed-files: - any-glob-to-all-files: "{\ appveyor.*,\ - .github/workflows/cygwin.yml,\ .github/workflows/windows.yml,\ CMake/Platforms/WindowsCache.cmake,\ lib/*win32*,\ diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml deleted file mode 100644 index b9232fa0cc..0000000000 --- a/.github/workflows/cygwin.yml +++ /dev/null @@ -1,185 +0,0 @@ -# Copyright (C) Viktor Szakats -# -# SPDX-License-Identifier: curl - -name: Cygwin - -'on': - push: - branches: - - master - - '*/ci' - paths-ignore: - - '**/*.md' - - '.circleci/**' - - 'appveyor.*' - - 'packages/**' - - 'plan9/**' - - 'projects/**' - - 'winbuild/**' - pull_request: - branches: - - master - paths-ignore: - - '**/*.md' - - '.circleci/**' - - 'appveyor.*' - - 'packages/**' - - 'plan9/**' - - 'projects/**' - - 'winbuild/**' - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} - cancel-in-progress: true - -permissions: {} - -jobs: - cygwin: - name: "cygwin, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.platform }} ${{ matrix.name }}" - runs-on: windows-latest - timeout-minutes: 45 - defaults: - run: - shell: C:\cygwin\bin\bash.exe '{0}' - env: - SHELLOPTS: 'igncr' - strategy: - matrix: - include: - - { build: 'automake', platform: 'x86_64', tflags: 'skiprun', config: '', name: 'openssl R' } - - { build: 'cmake' , platform: 'x86_64', tflags: '' , config: '-DENABLE_DEBUG=ON -DCURL_USE_OPENSSL=ON -DENABLE_THREADED_RESOLVER=OFF', name: 'openssl' } - fail-fast: false - steps: - - run: git config --global core.autocrlf input - shell: pwsh - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - - uses: cygwin/cygwin-install-action@006ad0b0946ca6d0a3ea2d4437677fa767392401 # v4 - with: - platform: ${{ matrix.platform }} - site: https://mirrors.kernel.org/sourceware/cygwin/ - # https://cygwin.com/cgi-bin2/package-grep.cgi - packages: >- - autoconf libtool gcc-core gcc-g++ binutils - ${{ matrix.build }} make ninja - openssh - libssl-devel - libssh2-devel - libpsl-devel - zlib-devel - libbrotli-devel - libnghttp2-devel - - - name: 'autotools autoreconf' - if: ${{ matrix.build == 'automake' }} - timeout-minutes: 2 - run: autoreconf -fi - - - name: 'autotools configure' - if: ${{ matrix.build == 'automake' }} - timeout-minutes: 5 - run: | - PATH="/usr/bin:$(cygpath "${SYSTEMROOT}")/System32" - mkdir bld && cd bld && ../configure --enable-unity --enable-test-bundles --enable-warnings --enable-werror \ - --prefix="${HOME}"/install \ - --with-openssl \ - --with-libssh2 \ - --disable-dependency-tracking \ - ${{ matrix.config }} - - - name: 'autotools configure log' - if: ${{ matrix.build == 'automake' && !cancelled() }} - run: cat bld/config.log 2>/dev/null || true - - - name: 'curl_config.h' - if: ${{ matrix.build == 'automake' }} - run: cat bld/lib/curl_config.h | grep -F '#define' | sort || true - - - name: 'curl_config.h (full)' - if: ${{ matrix.build == 'automake' }} - run: cat bld/lib/curl_config.h || true - - - name: 'autotools build' - if: ${{ matrix.build == 'automake' }} - timeout-minutes: 10 - run: make -C bld -j5 V=1 install - - - name: 'curl version' - if: ${{ matrix.build == 'automake' }} - timeout-minutes: 1 - run: | - find . -name '*.exe' -o -name '*.dll' - bld/src/curl.exe --disable --version - - - name: 'autotools build tests' - if: ${{ matrix.build == 'automake' && matrix.tflags != 'skipall' }} - timeout-minutes: 15 - run: make -C bld -j5 V=1 -C tests - - - name: 'autotools run tests' - if: ${{ matrix.build == 'automake' && matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }} - timeout-minutes: 15 - run: | - export TFLAGS='-j20 ${{ matrix.tflags }} ~615' - if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then - TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")" - fi - make -C bld -j5 V=1 test-ci - - - name: 'cmake configure' - if: ${{ matrix.build == 'cmake' }} - timeout-minutes: 5 - run: | - PATH="/usr/bin:$(cygpath "${SYSTEMROOT}")/System32" - cmake -B bld -G Ninja ${options} \ - -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \ - -DCURL_WERROR=ON \ - -DCURL_BROTLI=ON \ - ${{ matrix.config }} - - - name: 'cmake configure log' - if: ${{ matrix.build == 'cmake' && !cancelled() }} - run: cat bld/CMakeFiles/CMake*.yaml 2>/dev/null || true - - - name: 'curl_config.h' - if: ${{ matrix.build == 'cmake' }} - run: cat bld/lib/curl_config.h | grep -F '#define' | sort || true - - - name: 'curl_config.h (full)' - if: ${{ matrix.build == 'cmake' }} - run: cat bld/lib/curl_config.h || true - - - name: 'cmake build' - if: ${{ matrix.build == 'cmake' }} - timeout-minutes: 10 - run: cmake --build bld --config '${{ matrix.type }}' --parallel 5 - - - name: 'curl version' - if: ${{ matrix.build == 'cmake' }} - timeout-minutes: 1 - run: | - find . -name '*.exe' -o -name '*.dll' - PATH="$PWD/bld/lib:$PATH" - bld/src/curl.exe --disable --version - - - name: 'cmake build tests' - if: ${{ matrix.build == 'cmake' && matrix.tflags != 'skipall' }} - timeout-minutes: 15 - run: cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target testdeps - - - name: 'cmake run tests' - if: ${{ matrix.build == 'cmake' && matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }} - timeout-minutes: 15 - run: | - export TFLAGS='-j8 ${{ matrix.tflags }} ~615' - if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then - TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")" - fi - PATH="$PWD/bld/lib:$PATH" - cmake --build bld --config '${{ matrix.type }}' --target test-ci - - - name: 'cmake build examples' - if: ${{ matrix.build == 'cmake' }} - timeout-minutes: 5 - run: cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target curl-examples diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index b35173b0ce..54ab1000a1 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -36,6 +36,154 @@ concurrency: permissions: {} jobs: + cygwin: + name: "cygwin, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.platform }} ${{ matrix.name }}" + runs-on: windows-latest + timeout-minutes: 45 + defaults: + run: + shell: C:\cygwin\bin\bash.exe '{0}' + env: + SHELLOPTS: 'igncr' + strategy: + matrix: + include: + - { build: 'automake', platform: 'x86_64', tflags: 'skiprun', config: '', name: 'openssl R' } + - { build: 'cmake' , platform: 'x86_64', tflags: '' , config: '-DENABLE_DEBUG=ON -DCURL_USE_OPENSSL=ON -DENABLE_THREADED_RESOLVER=OFF', name: 'openssl' } + fail-fast: false + steps: + - run: git config --global core.autocrlf input + shell: pwsh + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + - uses: cygwin/cygwin-install-action@006ad0b0946ca6d0a3ea2d4437677fa767392401 # v4 + with: + platform: ${{ matrix.platform }} + site: https://mirrors.kernel.org/sourceware/cygwin/ + # https://cygwin.com/cgi-bin2/package-grep.cgi + packages: >- + autoconf libtool gcc-core gcc-g++ binutils + ${{ matrix.build }} make ninja + openssh + libssl-devel + libssh2-devel + libpsl-devel + zlib-devel + libbrotli-devel + libnghttp2-devel + + - name: 'autotools autoreconf' + if: ${{ matrix.build == 'automake' }} + timeout-minutes: 2 + run: autoreconf -fi + + - name: 'autotools configure' + if: ${{ matrix.build == 'automake' }} + timeout-minutes: 5 + run: | + PATH="/usr/bin:$(cygpath "${SYSTEMROOT}")/System32" + mkdir bld && cd bld && ../configure --enable-unity --enable-test-bundles --enable-warnings --enable-werror \ + --prefix="${HOME}"/install \ + --with-openssl \ + --with-libssh2 \ + --disable-dependency-tracking \ + ${{ matrix.config }} + + - name: 'autotools configure log' + if: ${{ matrix.build == 'automake' && !cancelled() }} + run: cat bld/config.log 2>/dev/null || true + + - name: 'curl_config.h' + if: ${{ matrix.build == 'automake' }} + run: cat bld/lib/curl_config.h | grep -F '#define' | sort || true + + - name: 'curl_config.h (full)' + if: ${{ matrix.build == 'automake' }} + run: cat bld/lib/curl_config.h || true + + - name: 'autotools build' + if: ${{ matrix.build == 'automake' }} + timeout-minutes: 10 + run: make -C bld -j5 V=1 install + + - name: 'curl version' + if: ${{ matrix.build == 'automake' }} + timeout-minutes: 1 + run: | + find . -name '*.exe' -o -name '*.dll' + bld/src/curl.exe --disable --version + + - name: 'autotools build tests' + if: ${{ matrix.build == 'automake' && matrix.tflags != 'skipall' }} + timeout-minutes: 15 + run: make -C bld -j5 V=1 -C tests + + - name: 'autotools run tests' + if: ${{ matrix.build == 'automake' && matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }} + timeout-minutes: 15 + run: | + export TFLAGS='-j20 ${{ matrix.tflags }} ~615' + if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then + TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")" + fi + make -C bld -j5 V=1 test-ci + + - name: 'cmake configure' + if: ${{ matrix.build == 'cmake' }} + timeout-minutes: 5 + run: | + PATH="/usr/bin:$(cygpath "${SYSTEMROOT}")/System32" + cmake -B bld -G Ninja ${options} \ + -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \ + -DCURL_WERROR=ON \ + -DCURL_BROTLI=ON \ + ${{ matrix.config }} + + - name: 'cmake configure log' + if: ${{ matrix.build == 'cmake' && !cancelled() }} + run: cat bld/CMakeFiles/CMake*.yaml 2>/dev/null || true + + - name: 'curl_config.h' + if: ${{ matrix.build == 'cmake' }} + run: cat bld/lib/curl_config.h | grep -F '#define' | sort || true + + - name: 'curl_config.h (full)' + if: ${{ matrix.build == 'cmake' }} + run: cat bld/lib/curl_config.h || true + + - name: 'cmake build' + if: ${{ matrix.build == 'cmake' }} + timeout-minutes: 10 + run: cmake --build bld --config '${{ matrix.type }}' --parallel 5 + + - name: 'curl version' + if: ${{ matrix.build == 'cmake' }} + timeout-minutes: 1 + run: | + find . -name '*.exe' -o -name '*.dll' + PATH="$PWD/bld/lib:$PATH" + bld/src/curl.exe --disable --version + + - name: 'cmake build tests' + if: ${{ matrix.build == 'cmake' && matrix.tflags != 'skipall' }} + timeout-minutes: 15 + run: cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target testdeps + + - name: 'cmake run tests' + if: ${{ matrix.build == 'cmake' && matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }} + timeout-minutes: 15 + run: | + export TFLAGS='-j8 ${{ matrix.tflags }} ~615' + if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then + TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")" + fi + PATH="$PWD/bld/lib:$PATH" + cmake --build bld --config '${{ matrix.type }}' --target test-ci + + - name: 'cmake build examples' + if: ${{ matrix.build == 'cmake' }} + timeout-minutes: 5 + run: cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target curl-examples + msys2: # both msys and mingw-w64 name: "${{ matrix.sys == 'msys' && 'msys2' || 'mingw' }}, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.env }} ${{ matrix.name }} ${{ matrix.test }}" runs-on: windows-latest