| # Copyright (C) Viktor Szakats |
| # |
| # SPDX-License-Identifier: curl |
| |
| name: non-native |
| |
| on: |
| push: |
| branches: |
| - master |
| - '*/ci' |
| paths-ignore: |
| - '**/*.md' |
| - '.azure-pipelines.yml' |
| - '.circleci/**' |
| - '.cirrus.yml' |
| - 'appveyor.*' |
| - 'packages/**' |
| - 'plan9/**' |
| - 'projects/**' |
| - 'winbuild/**' |
| pull_request: |
| branches: |
| - master |
| paths-ignore: |
| - '**/*.md' |
| - '.azure-pipelines.yml' |
| - '.circleci/**' |
| - '.cirrus.yml' |
| - 'appveyor.*' |
| - 'packages/**' |
| - 'plan9/**' |
| - 'projects/**' |
| - 'winbuild/**' |
| |
| concurrency: |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} |
| cancel-in-progress: true |
| |
| permissions: {} |
| |
| jobs: |
| netbsd: |
| name: 'NetBSD (cmake, openssl, clang)' |
| runs-on: ubuntu-latest |
| timeout-minutes: 30 |
| strategy: |
| matrix: |
| arch: ['x86_64'] |
| steps: |
| - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 |
| - name: 'cmake' |
| uses: cross-platform-actions/action@b2e15da1e667187766fff4945d20b98ac7055576 # v0.24.0 |
| with: |
| operating_system: 'netbsd' |
| version: '10.0' |
| architecture: ${{ matrix.arch }} |
| run: | |
| # https://pkgsrc.se/ |
| sudo pkgin -y install cmake perl brotli heimdal openldap-client libssh2 libidn2 libpsl nghttp2 # python311 py311-impacket |
| cmake -B bld \ |
| -DCMAKE_UNITY_BUILD=ON \ |
| -DCURL_WERROR=ON \ |
| -DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG= \ |
| -DBUILD_EXAMPLES=ON \ |
| -DENABLE_WEBSOCKETS=ON \ |
| -DCURL_USE_OPENSSL=ON \ |
| -DCURL_BROTLI=ON -DUSE_NGHTTP2=ON -DCURL_USE_GSSAPI=ON \ |
| || { cat bld/CMakeFiles/CMake*.yaml; false; } |
| cmake --build bld --config Debug --parallel 3 |
| "$(pwd)/bld/src/curl" --disable --version |
| if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU |
| cmake --build bld --config Debug --parallel 3 --target testdeps |
| cmake --build bld --config Debug --target test-ci |
| fi |
| |
| openbsd: |
| name: 'OpenBSD (cmake, libressl, clang)' |
| runs-on: ubuntu-latest |
| timeout-minutes: 30 |
| strategy: |
| matrix: |
| arch: ['x86_64'] |
| steps: |
| - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 |
| - name: 'cmake' |
| uses: cross-platform-actions/action@b2e15da1e667187766fff4945d20b98ac7055576 # v0.24.0 |
| with: |
| operating_system: 'openbsd' |
| version: '7.5' |
| architecture: ${{ matrix.arch }} |
| run: | |
| # https://openbsd.app/ |
| sudo pkg_add cmake perl brotli openldap-client libssh2 libidn2 libpsl nghttp2 python3 py3-impacket |
| cmake -B bld \ |
| -DCMAKE_UNITY_BUILD=ON \ |
| -DCURL_WERROR=ON \ |
| -DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG= \ |
| -DBUILD_EXAMPLES=ON \ |
| -DENABLE_WEBSOCKETS=ON \ |
| -DCURL_USE_OPENSSL=ON \ |
| -DCURL_BROTLI=ON -DUSE_NGHTTP2=ON \ |
| || { cat bld/CMakeFiles/CMake*.yaml; false; } |
| cmake --build bld --config Debug --parallel 3 |
| "$(pwd)/bld/src/curl" --disable --version |
| if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU |
| cmake --build bld --config Debug --parallel 3 --target testdeps |
| export TFLAGS='-j8 ~3017 ~TFTP' # FIXME: TFTP requests executed twice? Related: `curl: (69) TFTP: Access Violation`? |
| cmake --build bld --config Debug --target test-ci |
| fi |
| |
| freebsd: |
| name: 'FreeBSD (${{ matrix.build }}, openssl, ${{ matrix.compiler }}, ${{ matrix.arch }})' |
| runs-on: ubuntu-latest |
| timeout-minutes: 60 |
| strategy: |
| matrix: |
| include: |
| - { build: 'autotools', arch: 'arm64', compiler: 'clang' } |
| - { build: 'cmake' , arch: 'arm64', compiler: 'clang' } |
| fail-fast: false |
| steps: |
| - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 |
| - name: 'autotools' |
| if: ${{ matrix.build == 'autotools' }} |
| uses: cross-platform-actions/action@b2e15da1e667187766fff4945d20b98ac7055576 # v0.24.0 |
| with: |
| operating_system: 'freebsd' |
| version: '14.0' |
| architecture: ${{ matrix.arch }} |
| run: | |
| # https://ports.freebsd.org/ |
| sudo pkg install -y autoconf automake libtool pkgconf brotli openldap26-client libidn2 libnghttp2 nghttp2 stunnel py39-openssl py39-impacket py39-cryptography |
| autoreconf -fi |
| export CC='${{ matrix.compiler }}' |
| mkdir bld && cd bld && ../configure --enable-debug --enable-warnings --enable-werror \ |
| --prefix="${HOME}"/install \ |
| --enable-websockets \ |
| --with-openssl \ |
| --with-brotli --enable-ldap --enable-ldaps --with-libidn2 --with-libssh2 --with-nghttp2 --with-gssapi \ |
| --disable-dependency-tracking || { tail -n 1000 config.log; false; } |
| make -j3 install |
| src/curl --disable --version |
| make -j3 examples |
| if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU |
| export TFLAGS='-j12' |
| make check V=1 |
| fi |
| |
| - name: 'cmake' |
| if: ${{ matrix.build == 'cmake' }} |
| uses: cross-platform-actions/action@b2e15da1e667187766fff4945d20b98ac7055576 # v0.24.0 |
| with: |
| operating_system: 'freebsd' |
| version: '14.0' |
| architecture: ${{ matrix.arch }} |
| run: | |
| # https://ports.freebsd.org/ |
| sudo pkg install -y cmake brotli openldap26-client libidn2 libnghttp2 nghttp2 stunnel py39-openssl py39-impacket py39-cryptography |
| cmake -B bld \ |
| '-DCMAKE_C_COMPILER=${{ matrix.compiler }}' \ |
| -DCMAKE_UNITY_BUILD=ON \ |
| -DCURL_WERROR=ON \ |
| -DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG= \ |
| -DBUILD_EXAMPLES=ON \ |
| -DENABLE_WEBSOCKETS=ON \ |
| -DCURL_USE_OPENSSL=ON \ |
| -DCURL_BROTLI=ON -DUSE_NGHTTP2=ON -DCURL_USE_GSSAPI=ON \ |
| || { cat bld/CMakeFiles/CMake*.yaml; false; } |
| cmake --build bld --config Debug --parallel 3 |
| bld/src/curl --disable --version |
| if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU |
| cmake --build bld --config Debug --parallel 3 --target testdeps |
| export TFLAGS='-j12' |
| cmake --build bld --config Debug --target test-ci |
| fi |
| |
| omnios: |
| name: 'OmniOS (autotools, openssl, gcc, amd64)' |
| runs-on: ubuntu-latest |
| timeout-minutes: 30 |
| steps: |
| - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 |
| - name: 'autotools' |
| uses: vmactions/omnios-vm@a61ca1ebafdcb14a9d986928d070c9834ee66fd3 # v1 |
| with: |
| usesh: true |
| # https://pkg.omnios.org/r151050/core/en/index.shtml |
| prepare: pkg install build-essential libtool |
| run: | |
| ln -s /usr/bin/gcpp /usr/bin/cpp # Some tests expect `cpp`, which is named `gcpp` in this env. |
| autoreconf -fi |
| mkdir bld && cd bld && ../configure --enable-debug --enable-warnings --enable-werror \ |
| --prefix="${HOME}"/install \ |
| --enable-websockets \ |
| --with-openssl \ |
| --disable-dependency-tracking || { tail -n 1000 config.log; false; } |
| gmake -j3 install |
| src/curl --disable --version |
| gmake -j3 examples |
| export TFLAGS='-j12 ~MQTT ~FTP' |
| gmake check V=1 |