2021-06-29 22:45:13 +08:00
#***************************************************************************
# _ _ ____ _
# Project ___| | | | _ \| |
# / __| | | | |_) | |
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
2023-01-02 20:51:48 +08:00
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
2021-06-29 22:45:13 +08:00
#
# 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.
#
2021-06-11 13:50:28 +08:00
# SPDX-License-Identifier: curl
2022-05-17 17:16:50 +08:00
#
2021-06-29 22:45:13 +08:00
###########################################################################
2021-11-16 13:00:26 +08:00
# View these jobs in the browser: https://app.circleci.com/pipelines/github/curl/curl
2021-06-11 13:50:28 +08:00
# 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 : |
2022-03-15 17:25:25 +08:00
autoreconf -fi
2021-06-11 13:50:28 +08:00
./configure --enable-warnings --enable-werror --with-openssl
2022-01-31 19:52:29 +08:00
configure-openssl-no-verbose :
steps :
- run :
command : |
2022-03-15 17:25:25 +08:00
autoreconf -fi
2022-01-31 19:52:29 +08:00
./configure --disable-verbose --enable-werror --with-openssl
configure-no-proxy :
steps :
- run :
command : |
2022-03-15 17:25:25 +08:00
autoreconf -fi
2022-01-31 19:52:29 +08:00
./configure --disable-proxy --enable-werror --with-openssl
2023-08-31 08:58:27 +08:00
configure-macos-normal :
steps :
- run :
command : |
autoreconf -fi
./configure --enable-warnings --enable-websockets --without-ssl CFLAGS='-Wno-vla -mmacosx-version-min=10.9'
configure-macos-debug :
steps :
- run :
command : |
autoreconf -fi
./configure --enable-warnings --enable-websockets --without-ssl --enable-debug CFLAGS='-Wno-vla -mmacosx-version-min=10.9'
configure-macos-libssh2 :
steps :
- run :
command : |
autoreconf -fi
./configure --enable-warnings --enable-websockets --without-ssl --with-libssh2=/opt/homebrew/opt/libssh2 --enable-debug CFLAGS='-Wno-vla -mmacosx-version-min=10.9'
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" CFLAGS='-Wno-vla -mmacosx-version-min=10.9'
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" CFLAGS='-Wno-vla -mmacosx-version-min=10.9'
configure-macos-c-ares :
steps :
- run :
command : |
autoreconf -fi
./configure --enable-warnings --enable-websockets --without-ssl --enable-ares --enable-debug CFLAGS='-Wno-vla -mmacosx-version-min=10.9'
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-pop3 --disable-rtmp --disable-rtsp --disable-scp --disable-sftp --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-ntlm-auth --without-ssl --without-zlib --enable-debug CFLAGS='-Wno-vla -mmacosx-version-min=10.15'
configure-macos-securetransport-http2 :
steps :
- run :
command : |
autoreconf -fi
./configure --enable-warnings --enable-websockets --with-secure-transport CFLAGS='-Wno-vla -mmacosx-version-min=10.8'
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" CFLAGS='-Wno-vla -mmacosx-version-min=10.9'
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" CFLAGS='-Wno-vla -mmacosx-version-min=10.9'
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" CFLAGS='-Wno-vla -mmacosx-version-min=10.9'
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" CFLAGS='-Wno-vla -mmacosx-version-min=10.9'
2022-01-31 16:41:31 +08:00
install-cares :
steps :
- run :
command : |
sudo apt-get update && sudo apt-get install -y libc-ares-dev
2022-02-13 05:57:23 +08:00
install-libssh :
steps :
- run :
command : |
sudo apt-get update && sudo apt-get install -y libssh-dev
2022-01-31 19:52:29 +08:00
install-deps :
steps :
- run :
command : |
2023-04-17 03:42:38 +08:00
sudo apt-get update && sudo apt-get install -y libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev python3-pip
sudo python3 -m pip install impacket
2022-01-31 19:52:29 +08:00
2023-08-31 08:58:27 +08:00
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 | 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
2022-02-13 05:57:23 +08:00
configure-libssh :
steps :
- run :
command : |
2022-03-15 17:25:25 +08:00
autoreconf -fi
2022-02-13 05:57:23 +08:00
./configure --enable-warnings --enable-werror --with-openssl --with-libssh
2022-02-13 06:14:16 +08:00
install-wolfssl :
steps :
- run :
command : |
2023-04-17 03:42:38 +08:00
WOLFSSL_VER=5.6.0
2023-02-13 16:04:51 +08:00
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
2022-02-13 06:14:16 +08:00
./autogen.sh
./configure --enable-tls13 --enable-all --enable-harden --prefix=$HOME/wssl
2022-09-12 06:04:32 +08:00
make install
2022-02-13 06:14:16 +08:00
install-wolfssh :
steps :
- run :
command : |
2023-02-13 16:04:51 +08:00
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
2022-02-13 06:14:16 +08:00
./autogen.sh
./configure --with-wolfssl=$HOME/wssl --prefix=$HOME/wssh --enable-scp --enable-sftp --disable-examples
2022-09-12 06:04:32 +08:00
make install
2022-02-13 06:14:16 +08:00
2022-01-31 16:41:31 +08:00
configure-cares :
steps :
- run :
command : |
2022-03-15 17:25:25 +08:00
autoreconf -fi
2022-01-31 16:41:31 +08:00
./configure --enable-warnings --enable-werror --with-openssl --enable-ares
2022-02-13 06:14:16 +08:00
configure-wolfssh :
steps :
- run :
command : |
2022-03-15 17:25:25 +08:00
autoreconf -fi
2022-02-13 06:14:16 +08:00
LDFLAGS="-Wl,-rpath,$HOME/wssh/lib" ./configure --enable-warnings --enable-werror --with-wolfssl=$HOME/wssl --with-wolfssh=$HOME/wssh
2022-01-31 17:03:15 +08:00
configure-cares-debug :
steps :
- run :
command : |
2022-03-15 17:25:25 +08:00
autoreconf -fi
2022-01-31 17:03:15 +08:00
./configure --enable-debug --enable-werror --with-openssl --enable-ares
2021-06-11 13:50:28 +08:00
build :
steps :
2023-06-24 03:51:41 +08:00
- run : make -j3 V=1
- run : make -j3 V=1 examples
2021-06-11 13:50:28 +08:00
2023-08-31 08:58:27 +08:00
build-macos :
steps :
2023-09-06 08:35:58 +08:00
- run : make -j7 V=1
- run : make -j7 V=1 examples
2023-08-31 08:58:27 +08:00
2021-06-11 13:50:28 +08:00
test :
steps :
2023-06-24 03:51:41 +08:00
- run : make -j3 V=1 test-ci
2021-06-11 13:50:28 +08:00
2023-08-31 08:58:27 +08:00
test-macos :
steps :
2023-09-06 08:35:58 +08:00
- run : make -j7 V=1 test-ci
2023-08-31 08:58:27 +08:00
test-torture :
steps :
- run : make -j5 V=1 test-ci TFLAGS="-n -t --shallow=25 !FTP"
test-torture-ftp :
steps :
- run : make -j5 V=1 test-ci TFLAGS="-n -t --shallow=20 FTP"
2021-06-11 13:50:28 +08:00
executors :
ubuntu :
machine :
image : ubuntu-2004:202010-01
jobs :
basic :
executor : ubuntu
steps :
- checkout
- configure
- build
- test
2022-01-31 19:52:29 +08:00
no-verbose :
executor : ubuntu
steps :
- checkout
- install-deps
- configure-openssl-no-verbose
- build
2022-02-13 06:14:16 +08:00
wolfssh :
executor : ubuntu
steps :
- checkout
- install-deps
- install-wolfssl
- install-wolfssh
- configure-wolfssh
- build
2022-01-31 19:52:29 +08:00
no-proxy :
executor : ubuntu
steps :
- checkout
- install-deps
- configure-no-proxy
- build
- test
2022-01-31 16:41:31 +08:00
cares :
executor : ubuntu
steps :
- checkout
- install-cares
- configure-cares
- build
- test
2022-02-13 05:57:23 +08:00
libssh :
executor : ubuntu
steps :
- checkout
- install-libssh
- configure-libssh
- build
- test
2021-06-11 13:50:28 +08:00
arm :
machine :
image : ubuntu-2004:202101-01
resource_class : arm.medium
steps :
- checkout
- configure
- build
- test
2022-01-31 17:03:15 +08:00
arm-cares :
machine :
image : ubuntu-2004:202101-01
resource_class : arm.medium
steps :
- checkout
- install-cares
- configure-cares-debug
- build
- test
2023-09-06 08:35:58 +08:00
# TODO: All builds with "macos.x86.medium.gen2" must be changed to
# "macos.m1.medium.gen1" in January 2024 because the former will be removed
# (the names should also be changed from macos-x86-* to macos-arm-*). We
# want the M1 (ARM) machines anyway, for platform diversity.
# See https://circleci.com/docs/configuration-reference/#macos-execution-environment
macos-x86-normal :
2023-08-31 08:58:27 +08:00
macos :
xcode : 15.0 .0
2023-09-06 08:35:58 +08:00
resource_class : macos.x86.medium.gen2
2023-08-31 08:58:27 +08:00
steps :
- checkout
- install-deps-brew
- configure-macos-normal
- build-macos
- test-macos
2023-09-06 08:35:58 +08:00
macos-x86-debug :
2023-08-31 08:58:27 +08:00
macos :
xcode : 15.0 .0
2023-09-06 08:35:58 +08:00
resource_class : macos.x86.medium.gen2
2023-08-31 08:58:27 +08:00
steps :
- checkout
- install-deps-brew
- configure-macos-debug
- build-macos
- test-macos
2023-09-06 08:35:58 +08:00
macos-x86-libssh2 :
2023-08-31 08:58:27 +08:00
macos :
xcode : 15.0 .0
2023-09-06 08:35:58 +08:00
resource_class : macos.x86.medium.gen2
2023-08-31 08:58:27 +08:00
steps :
- checkout
- install-deps-brew
- configure-macos-libssh2
- build-macos
- test-macos
2023-09-06 08:35:58 +08:00
macos-x86-libssh-c-ares :
2023-08-31 08:58:27 +08:00
macos :
xcode : 15.0 .0
2023-09-06 08:35:58 +08:00
resource_class : macos.x86.medium.gen2
2023-08-31 08:58:27 +08:00
steps :
- checkout
- install-deps-brew
- configure-macos-libssh-c-ares
- build-macos
- test-macos
2023-09-06 08:35:58 +08:00
macos-x86-libssh :
2023-08-31 08:58:27 +08:00
macos :
xcode : 15.0 .0
2023-09-06 08:35:58 +08:00
resource_class : macos.x86.medium.gen2
2023-08-31 08:58:27 +08:00
steps :
- checkout
- install-deps-brew
- configure-macos-libssh
- build-macos
- test-macos
2023-09-06 08:35:58 +08:00
macos-x86-c-ares :
2023-08-31 08:58:27 +08:00
macos :
xcode : 15.0 .0
2023-09-06 08:35:58 +08:00
resource_class : macos.x86.medium.gen2
2023-08-31 08:58:27 +08:00
steps :
- checkout
- install-deps-brew
- configure-macos-c-ares
- build-macos
- test-macos
2023-09-06 08:35:58 +08:00
macos-x86-http-only :
2023-08-31 08:58:27 +08:00
macos :
xcode : 15.0 .0
2023-09-06 08:35:58 +08:00
resource_class : macos.x86.medium.gen2
2023-08-31 08:58:27 +08:00
steps :
- checkout
- install-deps-brew
- configure-macos-http-only
- build-macos
- test-macos
2023-09-06 08:35:58 +08:00
macos-x86-http-securetransport-http2 :
2023-08-31 08:58:27 +08:00
macos :
xcode : 15.0 .0
2023-09-06 08:35:58 +08:00
resource_class : macos.x86.medium.gen2
2023-08-31 08:58:27 +08:00
steps :
- checkout
- install-deps-brew
- configure-macos-securetransport-http2
- build-macos
- test-macos
2023-09-06 08:35:58 +08:00
macos-x86-http-openssl-http2 :
2023-08-31 08:58:27 +08:00
macos :
xcode : 15.0 .0
2023-09-06 08:35:58 +08:00
resource_class : macos.x86.medium.gen2
2023-08-31 08:58:27 +08:00
steps :
- checkout
- install-deps-brew
- configure-macos-openssl-http2
- build-macos
- test-macos
2023-09-06 08:35:58 +08:00
macos-x86-http-libressl-http2 :
2023-08-31 08:58:27 +08:00
macos :
xcode : 15.0 .0
2023-09-06 08:35:58 +08:00
resource_class : macos.x86.medium.gen2
2023-08-31 08:58:27 +08:00
steps :
- checkout
- install-deps-brew
- configure-macos-libressl-http2
- build-macos
- test-macos
2023-09-06 08:35:58 +08:00
macos-x86-http-torture :
2023-08-31 08:58:27 +08:00
macos :
xcode : 15.0 .0
2023-09-06 08:35:58 +08:00
resource_class : macos.x86.medium.gen2
2023-08-31 08:58:27 +08:00
steps :
- checkout
- install-deps-brew
- configure-macos-torture
- build-macos
- test-torture
2023-09-06 08:35:58 +08:00
macos-x86-http-torture-ftp :
2023-08-31 08:58:27 +08:00
macos :
xcode : 15.0 .0
2023-09-06 08:35:58 +08:00
resource_class : macos.x86.medium.gen2
2023-08-31 08:58:27 +08:00
steps :
- checkout
- install-deps-brew
- configure-macos-torture-ftp
- build-macos
- test-torture-ftp
2021-06-11 13:50:28 +08:00
workflows :
x86-openssl :
jobs :
- basic
2022-01-31 16:41:31 +08:00
openssl-c-ares :
jobs :
- cares
2021-06-11 13:50:28 +08:00
2022-02-13 05:57:23 +08:00
openssl-libssh :
jobs :
- libssh
2022-01-31 19:52:29 +08:00
openssl-no-proxy :
jobs :
- no -proxy
openssl-no-verbose :
jobs :
- no -verbose
2022-02-13 06:14:16 +08:00
wolfssl-wolfssh :
jobs :
- wolfssh
2021-06-11 13:50:28 +08:00
arm-openssl :
jobs :
- arm
2022-01-31 17:03:15 +08:00
arm-openssl-c-ares :
jobs :
- arm-cares
2023-08-31 08:58:27 +08:00
2023-09-06 08:35:58 +08:00
macos-x86-normal :
2023-08-31 08:58:27 +08:00
jobs :
2023-09-06 08:35:58 +08:00
- macos-x86-normal
2023-08-31 08:58:27 +08:00
2023-09-06 08:35:58 +08:00
macos-x86-debug :
2023-08-31 08:58:27 +08:00
jobs :
2023-09-06 08:35:58 +08:00
- macos-x86-debug
2023-08-31 08:58:27 +08:00
2023-09-06 08:35:58 +08:00
macos-x86-libssh2 :
2023-08-31 08:58:27 +08:00
jobs :
2023-09-06 08:35:58 +08:00
- macos-x86-libssh2
2023-08-31 08:58:27 +08:00
2023-09-06 08:35:58 +08:00
macos-x86-libssh-c-ares :
2023-08-31 08:58:27 +08:00
jobs :
2023-09-06 08:35:58 +08:00
- macos-x86-libssh-c-ares
2023-08-31 08:58:27 +08:00
2023-09-06 08:35:58 +08:00
macos-x86-libssh :
2023-08-31 08:58:27 +08:00
jobs :
2023-09-06 08:35:58 +08:00
- macos-x86-libssh
2023-08-31 08:58:27 +08:00
2023-09-06 08:35:58 +08:00
macos-x86-c-ares :
2023-08-31 08:58:27 +08:00
jobs :
2023-09-06 08:35:58 +08:00
- macos-x86-c-ares
2023-08-31 08:58:27 +08:00
2023-09-06 08:35:58 +08:00
macos-x86-http-only :
2023-08-31 08:58:27 +08:00
jobs :
2023-09-06 08:35:58 +08:00
- macos-x86-http-only
2023-08-31 08:58:27 +08:00
2023-09-06 08:35:58 +08:00
macos-x86-http-securetransport-http2 :
2023-08-31 08:58:27 +08:00
jobs :
2023-09-06 08:35:58 +08:00
- macos-x86-http-securetransport-http2
2023-08-31 08:58:27 +08:00
2023-09-06 08:35:58 +08:00
macos-x86-http-openssl-http2 :
2023-08-31 08:58:27 +08:00
jobs :
2023-09-06 08:35:58 +08:00
- macos-x86-http-openssl-http2
2023-08-31 08:58:27 +08:00
# There are problem linking with LibreSSL on the CI boxes that prevent this
# from working.
2023-09-06 08:35:58 +08:00
#macos-x86-http-libressl-http2:
2023-08-31 08:58:27 +08:00
# jobs:
2023-09-06 08:35:58 +08:00
# - macos-x86-http-libressl-http2
2023-08-31 08:58:27 +08:00
2023-09-06 08:35:58 +08:00
macos-x86-http-torture :
2023-08-31 08:58:27 +08:00
jobs :
2023-09-06 08:35:58 +08:00
- macos-x86-http-torture
2023-08-31 08:58:27 +08:00
2023-09-06 08:35:58 +08:00
macos-x86-http-torture-ftp :
2023-08-31 08:58:27 +08:00
jobs :
2023-09-06 08:35:58 +08:00
- macos-x86-http-torture-ftp