GHA/non-native: move BSDs to a single matrix, add DragonFly and Midnight
No binary (build failed)
—
(log yok)
| @@ -6,7 +6,7 @@ | |
| extend-ignore-identifiers-re = [ | |
| "^(ba|fo|pn|PN|UE)$", | |
| "^(CNA|cpy|ser)$", | |
| - | "^(ECT0|ECT1|HELO|htpts|PASE)$", |
| + | "^(ECT0|ECT1|HELO|htpts|mport|PASE)$", |
| "^[A-Za-z0-9_-]*(EDE|GOST)[A-Z0-9_-]*$", # ciphers | |
| "^0x[0-9a-fA-F]+FUL$", # unsigned long hex literals ending with 'F' | |
| "^[0-9a-zA-Z+]{64,}$", # possibly base64 | |
| @@ -37,204 +37,157 @@ env: | |
| DO_NOT_TRACK: '1' | |
| jobs: | |
| - | freebsd: |
| - | name: "FreeBSD, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.compiler }} openssl${{ matrix.desc }} ${{ matrix.arch }}" |
| + | cross: |
| + | name: "${{ matrix.os }} ${{ matrix.version }}, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.cc }} ${{ matrix.desc }} ${{ matrix.arch }}" |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| + | defaults: |
| + | run: |
| + | shell: cpa.sh {0} # zizmor: ignore[misfeature] |
| + | env: |
| + | CC: '${{ matrix.cc }}' |
| + | MAKEFLAGS: -j 3 |
| + | MATRIX_ARCH: '${{ matrix.arch }}' |
| + | MATRIX_BUILD: '${{ matrix.build }}' |
| + | MATRIX_OPTIONS: '${{ matrix.options }}' |
| + | MATRIX_OS: '${{ matrix.os }}' |
| strategy: | |
| matrix: | |
| include: | |
| - | - { build: 'autotools', arch: 'x86_64', compiler: 'clang' } |
| - | - { build: 'cmake' , arch: 'x86_64', compiler: 'clang', options: '-DCMAKE_UNITY_BUILD=OFF', desc: ' !unity !runtests !examples' } |
| - | - { build: 'autotools', arch: 'arm64' , compiler: 'clang', desc: ' !examples' } |
| - | - { build: 'cmake' , arch: 'arm64' , compiler: 'clang' } |
| + | - { os: 'dragonflybsd', version: '6.4.2', build: 'autotools', arch: 'x86_64', cc: 'gcc' , desc: 'openssl !runtests', |
| + | options: '--with-openssl' } |
| + | - { os: 'freebsd', version: '15.0', build: 'autotools', arch: 'x86_64', cc: 'clang', desc: 'openssl', |
| + | options: '--with-openssl --with-gssapi' } |
| + | - { os: 'freebsd', version: '15.0', build: 'cmake' , arch: 'x86_64', cc: 'clang', desc: 'openssl !unity !runtests !examples', |
| + | options: '-DCURL_USE_GSSAPI=ON -DCMAKE_UNITY_BUILD=OFF' } |
| + | - { os: 'freebsd', version: '14.3', build: 'autotools', arch: 'arm64' , cc: 'clang', desc: 'openssl !examples', |
| + | options: '--with-openssl --with-gssapi' } |
| + | - { os: 'freebsd', version: '14.3', build: 'cmake' , arch: 'arm64' , cc: 'clang', desc: 'openssl', |
| + | options: '-DCURL_USE_GSSAPI=ON' } |
| + | - { os: 'midnightbsd', version: '4.0.4', build: 'cmake' , arch: 'x86_64', cc: 'clang', desc: 'gnutls !runtests', |
| + | options: '-DCURL_USE_GNUTLS=ON' } |
| + | - { os: 'netbsd', version: '10.1' , build: 'cmake' , arch: 'x86_64', cc: 'gcc' , desc: 'openssl', |
| + | options: '-DCURL_USE_GSSAPI=ON' } |
| + | - { os: 'openbsd', version: '7.7' , build: 'cmake' , arch: 'x86_64', cc: 'clang', desc: 'libressl' } |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - | - name: '${{ matrix.build }}' |
| - | uses: cross-platform-actions/action@233156312992f3f169d8d0c633c21d12a5d30455 # v1.0.0 |
| - | env: |
| - | CC: '${{ matrix.compiler }}' |
| - | MATRIX_ARCH: '${{ matrix.arch }}' |
| - | MATRIX_BUILD: '${{ matrix.build }}' |
| - | MATRIX_DESC: '${{ matrix.desc }}' |
| - | MATRIX_OPTIONS: '${{ matrix.options }}' |
| + | |
| + | - name: 'setup VM' |
| + | uses: cross-platform-actions/action@0c165ad7eb2d6a7e8552d6af5aad2bbedfc646b0 # v1.1.0 |
| with: | |
| - | environment_variables: CC CURL_CI CURL_TEST_MIN DO_NOT_TRACK MATRIX_ARCH MATRIX_BUILD MATRIX_DESC MATRIX_OPTIONS |
| - | operating_system: 'freebsd' |
| - | version: '14.3' |
| - | architecture: ${{ matrix.arch }} |
| - | run: | |
| - | export CURL_CI=github |
| + | environment_variables: 'CC CURL_CI CURL_TEST_MIN DO_NOT_TRACK MAKEFLAGS MATRIX_ARCH MATRIX_BUILD MATRIX_OPTIONS MATRIX_OS' |
| + | operating_system: '${{ matrix.os }}' |
| + | version: '${{ matrix.version }}' |
| + | architecture: '${{ matrix.arch }}' |
| + | - name: 'install prereqs' |
| + | run: | |
| + | if [ "${MATRIX_OS}" = 'dragonflybsd' ]; then |
| + | sudo pkg install -y autoconf automake libtool perl5 pkgconf brotli openldap26-client libidn2 libnghttp2 |
| + | elif [ "${MATRIX_OS}" = 'freebsd' ]; then |
| # https://ports.freebsd.org/ | |
| if [ "${MATRIX_BUILD}" = 'cmake' ]; then | |
| - | time sudo pkg install -y cmake-core ninja perl5 \ |
| - | pkgconf brotli krb5-devel openldap26-client libidn2 libnghttp2 stunnel py311-impacket |
| + | tools='cmake-core ninja perl5' |
| else | |
| - | time sudo pkg install -y autoconf automake libtool \ |
| - | pkgconf brotli krb5-devel openldap26-client libidn2 libnghttp2 stunnel py311-impacket |
| - | export MAKEFLAGS=-j3 |
| + | tools='autoconf automake libtool' |
| fi | |
| + | sudo pkg install -y ${tools} pkgconf brotli krb5-devel openldap26-client libidn2 libnghttp2 stunnel py311-impacket |
| + | elif [ "${MATRIX_OS}" = 'midnightbsd' ]; then |
| + | # https://app.midnightbsd.org/ |
| + | # https://man.midnightbsd.org/cgi-bin/man.cgi/mport |
| + | sudo mport -q install cmake-core ninja perl5 pkgconf brotli gnutls openldap26-client libidn2 libnghttp2 | grep -E '(Downloading.+100|Installing)' || true |
| + | elif [ "${MATRIX_OS}" = 'netbsd' ]; then |
| + | # https://pkgsrc.se/ |
| + | sudo pkgin -y install cmake ninja-build pkg-config perl brotli mit-krb5 openldap-client libssh2 libidn2 libpsl nghttp2 py311-impacket |
| + | elif [ "${MATRIX_OS}" = 'openbsd' ]; then |
| + | # https://openbsd.app/ |
| + | # https://www.openbsd.org/faq/faq15.html |
| + | sudo pkg_add cmake ninja brotli openldap-client-- libssh2 libidn2 libpsl nghttp2 py3-six py3-impacket |
| + | fi |
| - | if [ "${MATRIX_BUILD}" = 'cmake' ]; then |
| - | time cmake -B bld -G Ninja \ |
| - | -DCMAKE_INSTALL_PREFIX="$HOME"/curl-install \ |
| - | -DCMAKE_C_COMPILER="${CC}" \ |
| - | -DCMAKE_UNITY_BUILD=ON \ |
| - | -DCURL_WERROR=ON \ |
| - | -DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug \ |
| - | -DCURL_USE_OPENSSL=ON \ |
| - | -DCURL_USE_GSSAPI=ON \ |
| - | ${MATRIX_OPTIONS} \ |
| - | || { cat bld/CMakeFiles/CMake*.yaml; false; } |
| - | else |
| - | time autoreconf -fi |
| - | if [ "${MATRIX_ARCH}" != 'x86_64' ]; then |
| - | options='--disable-manual --disable-docs' # Slow with autotools, skip on emulated CPU |
| - | fi |
| - | mkdir bld && cd bld |
| - | time ../configure --prefix="$HOME"/curl-install --enable-unity --enable-debug --enable-warnings --enable-werror --disable-static \ |
| - | --disable-dependency-tracking --enable-option-checking=fatal \ |
| - | --with-openssl \ |
| - | --with-brotli --enable-ldap --enable-ldaps --with-libidn2 --with-libssh2 --with-nghttp2 --with-gssapi \ |
| - | ${options} \ |
| - | ${MATRIX_OPTIONS} \ |
| - | || { tail -n 1000 config.log; false; } |
| - | cd .. |
| + | - name: 'autoreconf' |
| + | if: ${{ matrix.build == 'autotools' }} |
| + | run: autoreconf -fi |
| + | |
| + | - name: 'configure' |
| + | run: | |
| + | if [ "${MATRIX_BUILD}" = 'cmake' ]; then |
| + | cmake -B bld -G Ninja -DCMAKE_INSTALL_PREFIX="$HOME"/curl-install \ |
| + | -DCMAKE_C_COMPILER="${CC}" \ |
| + | -DCMAKE_UNITY_BUILD=ON -DCURL_WERROR=ON -DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug \ |
| + | -DCURL_ENABLE_NTLM=ON ${MATRIX_OPTIONS} |
| + | else |
| + | if [ "${MATRIX_ARCH}" != 'x86_64' ]; then |
| + | options='--disable-manual --disable-docs' # Slow with autotools, skip on emulated CPU |
| fi | |
| + | mkdir bld && cd bld |
| + | ../configure --prefix="$HOME"/curl-install --enable-unity --enable-debug --enable-warnings --enable-werror --disable-static \ |
| + | --disable-dependency-tracking --enable-option-checking=fatal \ |
| + | --with-brotli --enable-ldap --enable-ldaps --with-libidn2 --with-libssh2 --with-nghttp2 \ |
| + | ${options} ${MATRIX_OPTIONS} |
| + | fi |
| - | echo '::group::curl_config.h (raw)'; cat bld/lib/curl_config.h || true; echo '::endgroup::' |
| - | echo '::group::curl_config.h'; grep -F '#define' bld/lib/curl_config.h | sort || true; echo '::endgroup::' |
| + | - name: 'configure log' |
| + | if: ${{ !cancelled() }} |
| + | run: cat bld/config.log bld/CMakeFiles/CMakeConfigureLog.yaml 2>/dev/null || true |
| - | if [ "${MATRIX_BUILD}" = 'cmake' ]; then |
| - | time cmake --build bld |
| - | time cmake --install bld |
| - | else |
| - | time make -C bld install |
| - | fi |
| + | - name: 'curl_config.h' |
| + | run: | |
| + | echo '::group::raw'; cat bld/lib/curl_config.h || true; echo '::endgroup::' |
| + | grep -F '#define' bld/lib/curl_config.h | sort || true |
| - | bld/src/curl --disable --version |
| - | |
| - | if [ "${MATRIX_ARCH}" = 'x86_64' ]; then # Slow on emulated CPU |
| - | if [ "${MATRIX_BUILD}" = 'cmake' ]; then |
| - | time cmake --build bld --target testdeps |
| - | else |
| - | time make -C bld -C tests |
| - | fi |
| - | if [ "${MATRIX_DESC#*!runtests*}" = "${MATRIX_DESC}" ]; then |
| - | export TFLAGS='-j8' |
| - | if [ "${MATRIX_BUILD}" = 'cmake' ]; then |
| - | time cmake --build bld --verbose --target test-ci |
| - | else |
| - | time make -C bld V=1 test-ci |
| - | fi |
| - | fi |
| - | fi |
| + | - name: 'build' |
| + | run: | |
| + | if [ "${MATRIX_BUILD}" = 'cmake' ]; then |
| + | cmake --build bld |
| + | else |
| + | make -C bld |
| + | fi |
| - | if [ "${MATRIX_DESC#*!examples*}" = "${MATRIX_DESC}" ]; then |
| - | echo '::group::build examples' |
| - | if [ "${MATRIX_BUILD}" = 'cmake' ]; then |
| - | time cmake --build bld --target curl-examples-build |
| - | else |
| - | time make -C bld examples |
| - | fi |
| - | echo '::endgroup::' |
| - | fi |
| + | - name: 'curl -V' |
| + | run: bld/src/curl --disable --version |
| - | netbsd: |
| - | name: 'NetBSD, CM clang openssl ${{ matrix.arch }}' |
| - | runs-on: ubuntu-latest |
| - | timeout-minutes: 10 |
| - | strategy: |
| - | matrix: |
| - | arch: ['x86_64'] |
| - | steps: |
| - | - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 |
| - | with: |
| - | persist-credentials: false |
| - | - name: 'cmake' |
| - | uses: cross-platform-actions/action@233156312992f3f169d8d0c633c21d12a5d30455 # v1.0.0 |
| - | env: |
| - | MATRIX_ARCH: '${{ matrix.arch }}' |
| - | with: |
| - | environment_variables: CURL_CI CURL_TEST_MIN DO_NOT_TRACK MATRIX_ARCH |
| - | operating_system: 'netbsd' |
| - | version: '10.1' |
| - | architecture: ${{ matrix.arch }} |
| - | run: | |
| - | # https://pkgsrc.se/ |
| - | time sudo pkgin -y install cmake ninja-build pkg-config perl brotli mit-krb5 openldap-client libssh2 libidn2 libpsl nghttp2 py311-impacket |
| - | time cmake -B bld -G Ninja \ |
| - | -DCMAKE_INSTALL_PREFIX="$HOME"/curl-install \ |
| - | -DCMAKE_UNITY_BUILD=ON \ |
| - | -DCURL_WERROR=ON \ |
| - | -DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug \ |
| - | -DCURL_USE_OPENSSL=ON \ |
| - | -DCURL_USE_GSSAPI=ON \ |
| - | -DCURL_ENABLE_NTLM=ON \ |
| - | || { cat bld/CMakeFiles/CMake*.yaml; false; } |
| - | echo '::group::curl_config.h (raw)'; cat bld/lib/curl_config.h || true; echo '::endgroup::' |
| - | echo '::group::curl_config.h'; grep -F '#define' bld/lib/curl_config.h | sort || true; echo '::endgroup::' |
| - | time cmake --build bld |
| - | time cmake --install bld |
| - | bld/src/curl --disable --version |
| - | if [ "${MATRIX_ARCH}" = 'x86_64' ]; then # Slow on emulated CPU |
| - | time cmake --build bld --target testdeps |
| - | export TFLAGS='-j8' |
| - | time cmake --build bld --target test-ci |
| - | fi |
| - | echo '::group::build examples' |
| - | time cmake --build bld --target curl-examples-build |
| - | echo '::endgroup::' |
| + | - name: 'curl install' |
| + | run: | |
| + | if [ "${MATRIX_BUILD}" = 'cmake' ]; then |
| + | cmake --install bld |
| + | else |
| + | make -C bld install |
| + | fi |
| - | openbsd: |
| - | name: 'OpenBSD, CM clang libressl ${{ matrix.arch }}' |
| - | runs-on: ubuntu-latest |
| - | timeout-minutes: 10 |
| - | strategy: |
| - | matrix: |
| - | arch: ['x86_64'] |
| - | steps: |
| - | - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 |
| - | with: |
| - | persist-credentials: false |
| - | - name: 'cmake' |
| - | uses: cross-platform-actions/action@233156312992f3f169d8d0c633c21d12a5d30455 # v1.0.0 |
| - | env: |
| - | MATRIX_ARCH: '${{ matrix.arch }}' |
| - | with: |
| - | environment_variables: CURL_CI CURL_TEST_MIN DO_NOT_TRACK MATRIX_ARCH |
| - | operating_system: 'openbsd' |
| - | version: '7.7' |
| - | architecture: ${{ matrix.arch }} |
| - | run: | |
| - | # https://openbsd.app/ |
| - | # https://www.openbsd.org/faq/faq15.html |
| - | time sudo pkg_add cmake ninja brotli openldap-client-- libssh2 libidn2 libpsl nghttp2 py3-six py3-impacket |
| - | time cmake -B bld -G Ninja \ |
| - | -DCMAKE_INSTALL_PREFIX="$HOME"/curl-install \ |
| - | -DCMAKE_UNITY_BUILD=ON \ |
| - | -DCURL_WERROR=ON \ |
| - | -DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug \ |
| - | -DCURL_USE_OPENSSL=ON \ |
| - | -DCURL_ENABLE_NTLM=ON \ |
| - | || { cat bld/CMakeFiles/CMake*.yaml; false; } |
| - | echo '::group::curl_config.h (raw)'; cat bld/lib/curl_config.h || true; echo '::endgroup::' |
| - | echo '::group::curl_config.h'; grep -F '#define' bld/lib/curl_config.h | sort || true; echo '::endgroup::' |
| - | time cmake --build bld |
| - | time cmake --install bld |
| - | bld/src/curl --disable --version |
| - | if [ "${MATRIX_ARCH}" = 'x86_64' ]; then # Slow on emulated CPU |
| - | time cmake --build bld --target testdeps |
| - | export TFLAGS='-j8 !2707' # Skip 2707 'ws: Peculiar frame sizes' on suspicion of hangs |
| - | time cmake --build bld --target test-ci |
| - | fi |
| - | echo '::group::build examples' |
| - | time cmake --build bld --target curl-examples-build |
| - | echo '::endgroup::' |
| + | - name: 'build tests' |
| + | if: ${{ matrix.arch == 'x86_64' }} # Slow on emulated CPU |
| + | run: | |
| + | if [ "${MATRIX_BUILD}" = 'cmake' ]; then |
| + | cmake --build bld --target testdeps |
| + | else |
| + | make -C bld -C tests |
| + | fi |
| + | |
| + | - name: 'run tests' |
| + | if: ${{ matrix.arch == 'x86_64' && !contains(matrix.desc, '!runtests') }} # Slow on emulated CPU |
| + | run: | |
| + | export TFLAGS='-j8' |
| + | if [ "${MATRIX_OS}" = 'openbsd' ]; then |
| + | TFLAGS="$TFLAGS !2707" # Skip 2707 'ws: Peculiar frame sizes' on suspicion of hangs |
| + | fi |
| + | if [ "${MATRIX_BUILD}" = 'cmake' ]; then |
| + | cmake --build bld --verbose --target test-ci |
| + | else |
| + | make -C bld V=1 test-ci |
| + | fi |
| + | |
| + | - name: 'build examples' |
| + | if: ${{ !contains(matrix.desc, '!examples') }} |
| + | run: | |
| + | if [ "${MATRIX_BUILD}" = 'cmake' ]; then |
| + | cmake --build bld --target curl-examples-build |
| + | else |
| + | make -C bld examples |
| + | fi |
| android: | |
| name: "Android ${{ matrix.platform }}, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.name }} arm64" | |
| @@ -93,7 +93,6 @@ jobs: | |
| build: 'cmake', platform: 'x86_64', tflags: '', | |
| config: '-DENABLE_DEBUG=ON -DCURL_USE_OPENSSL=ON -DENABLE_THREADED_RESOLVER=OFF -DCURL_ENABLE_NTLM=ON', | |
| install: 'libssl-devel libssh2-devel' } | |
| - | |
| fail-fast: false | |
| steps: | |
| - uses: cygwin/cygwin-install-action@711d29f3da23c9f4a1798e369a6f01198c13b11a # v6.1 | |