| #*************************************************************************** |
| # _ _ ____ _ |
| # Project ___| | | | _ \| | |
| # / __| | | | |_) | | |
| # | (__| |_| | _ <| |___ |
| # \___|\___/|_| \_\_____| |
| # |
| # Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. |
| # |
| # This software is licensed as described in the file COPYING, which |
| # you should have received as part of this distribution. The terms |
| # are also available at https://curl.se/docs/copyright.html. |
| # |
| # You may opt to use, copy, modify, merge, publish, distribute and/or sell |
| # copies of the Software, and permit persons to whom the Software is |
| # furnished to do so, under the terms of the COPYING file. |
| # |
| # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| # KIND, either express or implied. |
| # |
| # SPDX-License-Identifier: curl |
| # |
| ########################################################################### |
| |
| # View these jobs in the browser: https://app.circleci.com/pipelines/github/curl/curl |
| # |
| # The macOS builds use M1 (ARM) machines for platform diversity. |
| # See https://circleci.com/docs/configuration-reference/#macos-execution-environment |
| |
| # Use the latest 2.1 version of CircleCI pipeline process engine. See: https://circleci.com/docs/2.0/configuration-reference |
| version: 2.1 |
| |
| commands: |
| configure: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-werror --with-openssl || { tail -1000 config.log; false; } |
| |
| configure-openssl-no-verbose: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --disable-verbose --enable-werror --with-openssl || { tail -1000 config.log; false; } |
| |
| configure-no-proxy: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --disable-proxy --enable-werror --with-openssl || { tail -1000 config.log; false; } |
| |
| configure-macos-normal: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-websockets --without-ssl CFLAGS='-Wno-vla -mmacosx-version-min=10.9' CPPFLAGS="-I$(brew --prefix libpsl)/include" LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; } |
| |
| configure-macos-debug: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-websockets --without-ssl --enable-debug CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; } |
| |
| configure-macos-libssh2: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-websockets --without-ssl --with-libssh2=/opt/homebrew/opt/libssh2 --enable-debug CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; } |
| |
| configure-macos-libssh-c-ares: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-websockets --with-openssl --with-libssh --enable-ares --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; } |
| |
| configure-macos-libssh: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-websockets --with-openssl --with-libssh --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; } |
| |
| configure-macos-c-ares: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-websockets --without-ssl --enable-ares --enable-debug CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; } |
| |
| configure-macos-http-only: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-maintainer-mode --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-ldap --disable-mqtt --disable-pop3 --disable-rtsp --disable-smb --disable-smtp --disable-telnet --disable-tftp --disable-unix-sockets --disable-shared --without-brotli --without-gssapi --without-libidn2 --without-libpsl --without-librtmp --without-libssh2 --without-nghttp2 --without-ssl --without-zlib --enable-debug CFLAGS='-Wno-vla -mmacosx-version-min=10.15' || { tail -1000 config.log; false; } |
| |
| configure-macos-securetransport-http2: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-websockets --with-secure-transport CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.8' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; } |
| |
| configure-macos-openssl-http2: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-websockets --with-openssl --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; } |
| |
| configure-macos-libressl-http2: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-websockets --with-openssl --enable-debug PKG_CONFIG_PATH="$(brew --prefix libressl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; } |
| |
| configure-macos-torture: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-websockets --disable-shared --disable-threaded-resolver --with-openssl --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; } |
| |
| configure-macos-torture-ftp: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-websockets --disable-shared --disable-threaded-resolver --with-openssl --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; } |
| |
| install-cares: |
| steps: |
| - run: |
| command: | |
| sudo apt-get update && sudo apt-get install -y libc-ares-dev |
| |
| install-libssh: |
| steps: |
| - run: |
| command: | |
| sudo apt-get update && sudo apt-get install -y libssh-dev |
| |
| install-deps: |
| steps: |
| - run: |
| command: | |
| sudo apt-get update && sudo apt-get install -y libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev python3-pip libpsl-dev |
| sudo python3 -m pip install impacket |
| |
| install-deps-brew: |
| steps: |
| - run: |
| command: | |
| # Drop libressl as long as we're not trying to build it |
| echo libtool autoconf automake pkg-config nghttp2 libssh2 openssl libssh c-ares libpsl icu4c | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile |
| while [ $? -eq 0 ]; do for i in 1 2 3; do brew update && brew bundle install --no-lock --file /tmp/Brewfile && break 2 || { echo Error: wait to try again; sleep 10; } done; false Too many retries; done |
| sudo python3 -m pip install impacket |
| |
| configure-libssh: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-werror --with-openssl --with-libssh || { tail -1000 config.log; false; } |
| |
| install-wolfssl: |
| steps: |
| - run: |
| command: | |
| WOLFSSL_VER=5.6.0 |
| curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://github.com/wolfSSL/wolfssl/archive/v$WOLFSSL_VER-stable.tar.gz |
| tar -xzf v$WOLFSSL_VER-stable.tar.gz |
| cd wolfssl-$WOLFSSL_VER-stable |
| ./autogen.sh |
| ./configure --enable-tls13 --enable-all --enable-harden --prefix=$HOME/wssl |
| make install |
| |
| install-wolfssh: |
| steps: |
| - run: |
| command: | |
| WOLFSSH_VER=1.4.12 |
| curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://github.com/wolfSSL/wolfssh/archive/v$WOLFSSH_VER-stable.tar.gz |
| tar -xzf v$WOLFSSH_VER-stable.tar.gz |
| cd wolfssh-$WOLFSSH_VER-stable |
| ./autogen.sh |
| ./configure --with-wolfssl=$HOME/wssl --prefix=$HOME/wssh --enable-scp --enable-sftp --disable-examples |
| make install |
| |
| configure-cares: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-warnings --enable-werror --with-openssl --enable-ares || { tail -1000 config.log; false; } |
| |
| configure-wolfssh: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| LDFLAGS="-Wl,-rpath,$HOME/wssh/lib" ./configure --enable-warnings --enable-werror --with-wolfssl=$HOME/wssl --with-wolfssh=$HOME/wssh || { tail -1000 config.log; false; } |
| |
| configure-cares-debug: |
| steps: |
| - run: |
| command: | |
| autoreconf -fi |
| ./configure --enable-debug --enable-werror --with-openssl --enable-ares || { tail -1000 config.log; false; } |
| |
| build: |
| steps: |
| - run: make -j3 V=1 |
| - run: make -j3 V=1 examples |
| |
| build-macos: |
| steps: |
| - run: make -j5 V=1 |
| - run: make -j5 V=1 examples |
| |
| test: |
| steps: |
| - run: make -j3 V=1 test-ci |
| |
| test-macos: |
| steps: |
| - run: make -j5 V=1 test-ci |
| |
| test-torture: |
| steps: |
| - run: make -j5 V=1 test-ci TFLAGS="-n -t --shallow=25 !FTP" |
| |
| test-torture-ftp: |
| steps: |
| # Test 250 takes too long, causing Circle CI to kill the job |
| - run: make -j5 V=1 test-ci TFLAGS="-n -t --shallow=20 FTP !250 !251" |
| |
| executors: |
| ubuntu: |
| machine: |
| image: ubuntu-2004:2024.01.1 |
| |
| jobs: |
| basic: |
| executor: ubuntu |
| steps: |
| - checkout |
| - install-deps |
| - configure |
| - build |
| - test |
| |
| no-verbose: |
| executor: ubuntu |
| steps: |
| - checkout |
| - install-deps |
| - configure-openssl-no-verbose |
| - build |
| |
| wolfssh: |
| executor: ubuntu |
| steps: |
| - checkout |
| - install-deps |
| - install-wolfssl |
| - install-wolfssh |
| - configure-wolfssh |
| - build |
| |
| no-proxy: |
| executor: ubuntu |
| steps: |
| - checkout |
| - install-deps |
| - configure-no-proxy |
| - build |
| - test |
| |
| cares: |
| executor: ubuntu |
| steps: |
| - checkout |
| - install-deps |
| - install-cares |
| - configure-cares |
| - build |
| - test |
| |
| libssh: |
| executor: ubuntu |
| steps: |
| - checkout |
| - install-deps |
| - install-libssh |
| - configure-libssh |
| - build |
| - test |
| |
| arm: |
| machine: |
| image: ubuntu-2004:2024.01.1 |
| resource_class: arm.medium |
| steps: |
| - checkout |
| - install-deps |
| - configure |
| - build |
| - test |
| |
| arm-cares: |
| machine: |
| image: ubuntu-2004:2024.01.1 |
| resource_class: arm.medium |
| steps: |
| - checkout |
| - install-deps |
| - install-cares |
| - configure-cares-debug |
| - build |
| - test |
| |
| macos-arm-normal: |
| macos: |
| xcode: 15.0.0 |
| resource_class: macos.m1.medium.gen1 |
| steps: |
| - checkout |
| - install-deps-brew |
| - configure-macos-normal |
| - build-macos |
| - test-macos |
| |
| macos-arm-debug: |
| macos: |
| xcode: 15.0.0 |
| resource_class: macos.m1.medium.gen1 |
| steps: |
| - checkout |
| - install-deps-brew |
| - configure-macos-debug |
| - build-macos |
| - test-macos |
| |
| macos-arm-libssh2: |
| macos: |
| xcode: 15.0.0 |
| resource_class: macos.m1.medium.gen1 |
| steps: |
| - checkout |
| - install-deps-brew |
| - configure-macos-libssh2 |
| - build-macos |
| - test-macos |
| |
| macos-arm-libssh-c-ares: |
| macos: |
| xcode: 15.0.0 |
| resource_class: macos.m1.medium.gen1 |
| steps: |
| - checkout |
| - install-deps-brew |
| - configure-macos-libssh-c-ares |
| - build-macos |
| - test-macos |
| |
| macos-arm-libssh: |
| macos: |
| xcode: 15.0.0 |
| resource_class: macos.m1.medium.gen1 |
| steps: |
| - checkout |
| - install-deps-brew |
| - configure-macos-libssh |
| - build-macos |
| - test-macos |
| |
| macos-arm-c-ares: |
| macos: |
| xcode: 15.0.0 |
| resource_class: macos.m1.medium.gen1 |
| steps: |
| - checkout |
| - install-deps-brew |
| - configure-macos-c-ares |
| - build-macos |
| - test-macos |
| |
| macos-arm-http-only: |
| macos: |
| xcode: 15.0.0 |
| resource_class: macos.m1.medium.gen1 |
| steps: |
| - checkout |
| - install-deps-brew |
| - configure-macos-http-only |
| - build-macos |
| - test-macos |
| |
| macos-arm-http-securetransport-http2: |
| macos: |
| xcode: 15.0.0 |
| resource_class: macos.m1.medium.gen1 |
| steps: |
| - checkout |
| - install-deps-brew |
| - configure-macos-securetransport-http2 |
| - build-macos |
| - test-macos |
| |
| macos-arm-http-openssl-http2: |
| macos: |
| xcode: 15.0.0 |
| resource_class: macos.m1.medium.gen1 |
| steps: |
| - checkout |
| - install-deps-brew |
| - configure-macos-openssl-http2 |
| - build-macos |
| - test-macos |
| |
| macos-arm-http-libressl-http2: |
| macos: |
| xcode: 15.0.0 |
| resource_class: macos.m1.medium.gen1 |
| steps: |
| - checkout |
| - install-deps-brew |
| - configure-macos-libressl-http2 |
| - build-macos |
| - test-macos |
| |
| macos-arm-http-torture: |
| macos: |
| xcode: 15.0.0 |
| resource_class: macos.m1.medium.gen1 |
| steps: |
| - checkout |
| - install-deps-brew |
| - configure-macos-torture |
| - build-macos |
| - test-torture |
| |
| macos-arm-http-torture-ftp: |
| macos: |
| xcode: 15.0.0 |
| resource_class: macos.m1.medium.gen1 |
| steps: |
| - checkout |
| - install-deps-brew |
| - configure-macos-torture-ftp |
| - build-macos |
| - test-torture-ftp |
| |
| workflows: |
| x86-openssl: |
| jobs: |
| - basic |
| |
| openssl-c-ares: |
| jobs: |
| - cares |
| |
| openssl-libssh: |
| jobs: |
| - libssh |
| |
| openssl-no-proxy: |
| jobs: |
| - no-proxy |
| |
| openssl-no-verbose: |
| jobs: |
| - no-verbose |
| |
| wolfssl-wolfssh: |
| jobs: |
| - wolfssh |
| |
| arm-openssl: |
| jobs: |
| - arm |
| |
| arm-openssl-c-ares: |
| jobs: |
| - arm-cares |
| |
| macos-arm-normal: |
| jobs: |
| - macos-arm-normal |
| |
| macos-arm-debug: |
| jobs: |
| - macos-arm-debug |
| |
| macos-arm-libssh2: |
| jobs: |
| - macos-arm-libssh2 |
| |
| macos-arm-libssh-c-ares: |
| jobs: |
| - macos-arm-libssh-c-ares |
| |
| macos-arm-libssh: |
| jobs: |
| - macos-arm-libssh |
| |
| macos-arm-c-ares: |
| jobs: |
| - macos-arm-c-ares |
| |
| macos-arm-http-only: |
| jobs: |
| - macos-arm-http-only |
| |
| macos-arm-http-securetransport-http2: |
| jobs: |
| - macos-arm-http-securetransport-http2 |
| |
| macos-arm-http-openssl-http2: |
| jobs: |
| - macos-arm-http-openssl-http2 |
| |
| # There are problem linking with LibreSSL on the CI boxes that prevent this |
| # from working. |
| # macos-arm-http-libressl-http2: |
| # jobs: |
| # - macos-arm-http-libressl-http2 |
| |
| macos-arm-http-torture: |
| jobs: |
| - macos-arm-http-torture |
| |
| macos-arm-http-torture-ftp: |
| jobs: |
| - macos-arm-http-torture-ftp |