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"