123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546 |
- #***************************************************************************
- # _ _ ____ _
- # 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: |
- source .github/scripts/VERSIONS
- echo "Installing wolfSSL $WOLFSSL_VER"
- 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: |
- source .github/scripts/VERSIONS
- echo "Installing wolfSSH $WOLFSSH_VER"
- 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
|