1#*************************************************************************** 2# _ _ ____ _ 3# Project ___| | | | _ \| | 4# / __| | | | |_) | | 5# | (__| |_| | _ <| |___ 6# \___|\___/|_| \_\_____| 7# 8# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 9# 10# This software is licensed as described in the file COPYING, which 11# you should have received as part of this distribution. The terms 12# are also available at https://curl.se/docs/copyright.html. 13# 14# You may opt to use, copy, modify, merge, publish, distribute and/or sell 15# copies of the Software, and permit persons to whom the Software is 16# furnished to do so, under the terms of the COPYING file. 17# 18# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 19# KIND, either express or implied. 20# 21# SPDX-License-Identifier: curl 22# 23########################################################################### 24 25# View these jobs in the browser: https://app.circleci.com/pipelines/github/curl/curl 26# 27# The macOS builds use M1 (ARM) machines for platform diversity. 28# See https://circleci.com/docs/configuration-reference/#macos-execution-environment 29 30# Use the latest 2.1 version of CircleCI pipeline process engine. See: https://circleci.com/docs/2.0/configuration-reference 31version: 2.1 32 33commands: 34 configure: 35 steps: 36 - run: 37 command: | 38 autoreconf -fi 39 ./configure --enable-warnings --enable-werror --with-openssl || { tail -1000 config.log; false; } 40 41 configure-openssl-no-verbose: 42 steps: 43 - run: 44 command: | 45 autoreconf -fi 46 ./configure --disable-verbose --enable-werror --with-openssl || { tail -1000 config.log; false; } 47 48 configure-no-proxy: 49 steps: 50 - run: 51 command: | 52 autoreconf -fi 53 ./configure --disable-proxy --enable-werror --with-openssl || { tail -1000 config.log; false; } 54 55 configure-macos-normal: 56 steps: 57 - run: 58 command: | 59 autoreconf -fi 60 ./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; } 61 62 configure-macos-debug: 63 steps: 64 - run: 65 command: | 66 autoreconf -fi 67 ./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; } 68 69 configure-macos-libssh2: 70 steps: 71 - run: 72 command: | 73 autoreconf -fi 74 ./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; } 75 76 configure-macos-libssh-c-ares: 77 steps: 78 - run: 79 command: | 80 autoreconf -fi 81 ./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; } 82 83 configure-macos-libssh: 84 steps: 85 - run: 86 command: | 87 autoreconf -fi 88 ./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; } 89 90 configure-macos-c-ares: 91 steps: 92 - run: 93 command: | 94 autoreconf -fi 95 ./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; } 96 97 configure-macos-http-only: 98 steps: 99 - run: 100 command: | 101 autoreconf -fi 102 ./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; } 103 104 configure-macos-securetransport-http2: 105 steps: 106 - run: 107 command: | 108 autoreconf -fi 109 ./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; } 110 111 configure-macos-openssl-http2: 112 steps: 113 - run: 114 command: | 115 autoreconf -fi 116 ./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; } 117 118 configure-macos-libressl-http2: 119 steps: 120 - run: 121 command: | 122 autoreconf -fi 123 ./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; } 124 125 configure-macos-torture: 126 steps: 127 - run: 128 command: | 129 autoreconf -fi 130 ./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; } 131 132 configure-macos-torture-ftp: 133 steps: 134 - run: 135 command: | 136 autoreconf -fi 137 ./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; } 138 139 install-cares: 140 steps: 141 - run: 142 command: | 143 sudo apt-get update && sudo apt-get install -y libc-ares-dev 144 145 install-libssh: 146 steps: 147 - run: 148 command: | 149 sudo apt-get update && sudo apt-get install -y libssh-dev 150 151 install-deps: 152 steps: 153 - run: 154 command: | 155 sudo apt-get update && sudo apt-get install -y libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev python3-pip libpsl-dev 156 sudo python3 -m pip install impacket 157 158 install-deps-brew: 159 steps: 160 - run: 161 command: | 162 # Drop libressl as long as we're not trying to build it 163 echo libtool autoconf automake pkg-config nghttp2 libssh2 openssl libssh c-ares libpsl icu4c | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile 164 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 165 sudo python3 -m pip install impacket 166 167 configure-libssh: 168 steps: 169 - run: 170 command: | 171 autoreconf -fi 172 ./configure --enable-warnings --enable-werror --with-openssl --with-libssh || { tail -1000 config.log; false; } 173 174 install-wolfssl: 175 steps: 176 - run: 177 command: | 178 source .github/scripts/VERSIONS 179 echo "Installing wolfSSL $WOLFSSL_VER" 180 curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://github.com/wolfSSL/wolfssl/archive/v$WOLFSSL_VER-stable.tar.gz 181 tar -xzf v$WOLFSSL_VER-stable.tar.gz 182 cd wolfssl-$WOLFSSL_VER-stable 183 ./autogen.sh 184 ./configure --enable-tls13 --enable-all --enable-harden --prefix=$HOME/wssl 185 make install 186 187 install-wolfssh: 188 steps: 189 - run: 190 command: | 191 source .github/scripts/VERSIONS 192 echo "Installing wolfSSH $WOLFSSH_VER" 193 curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://github.com/wolfSSL/wolfssh/archive/v$WOLFSSH_VER-stable.tar.gz 194 tar -xzf v$WOLFSSH_VER-stable.tar.gz 195 cd wolfssh-$WOLFSSH_VER-stable 196 ./autogen.sh 197 ./configure --with-wolfssl=$HOME/wssl --prefix=$HOME/wssh --enable-scp --enable-sftp --disable-examples 198 make install 199 200 configure-cares: 201 steps: 202 - run: 203 command: | 204 autoreconf -fi 205 ./configure --enable-warnings --enable-werror --with-openssl --enable-ares || { tail -1000 config.log; false; } 206 207 configure-wolfssh: 208 steps: 209 - run: 210 command: | 211 autoreconf -fi 212 LDFLAGS="-Wl,-rpath,$HOME/wssh/lib" ./configure --enable-warnings --enable-werror --with-wolfssl=$HOME/wssl --with-wolfssh=$HOME/wssh || { tail -1000 config.log; false; } 213 214 configure-cares-debug: 215 steps: 216 - run: 217 command: | 218 autoreconf -fi 219 ./configure --enable-debug --enable-werror --with-openssl --enable-ares || { tail -1000 config.log; false; } 220 221 build: 222 steps: 223 - run: make -j3 V=1 224 - run: make -j3 V=1 examples 225 226 build-macos: 227 steps: 228 - run: make -j5 V=1 229 - run: make -j5 V=1 examples 230 231 test: 232 steps: 233 - run: make -j3 V=1 test-ci 234 235 test-macos: 236 steps: 237 - run: make -j5 V=1 test-ci 238 239 test-torture: 240 steps: 241 - run: make -j5 V=1 test-ci TFLAGS="-n -t --shallow=25 !FTP" 242 243 test-torture-ftp: 244 steps: 245 # Test 250 takes too long, causing Circle CI to kill the job 246 - run: make -j5 V=1 test-ci TFLAGS="-n -t --shallow=20 FTP !250 !251" 247 248executors: 249 ubuntu: 250 machine: 251 image: ubuntu-2004:2024.01.1 252 253jobs: 254 basic: 255 executor: ubuntu 256 steps: 257 - checkout 258 - install-deps 259 - configure 260 - build 261 - test 262 263 no-verbose: 264 executor: ubuntu 265 steps: 266 - checkout 267 - install-deps 268 - configure-openssl-no-verbose 269 - build 270 271 wolfssh: 272 executor: ubuntu 273 steps: 274 - checkout 275 - install-deps 276 - install-wolfssl 277 - install-wolfssh 278 - configure-wolfssh 279 - build 280 281 no-proxy: 282 executor: ubuntu 283 steps: 284 - checkout 285 - install-deps 286 - configure-no-proxy 287 - build 288 - test 289 290 cares: 291 executor: ubuntu 292 steps: 293 - checkout 294 - install-deps 295 - install-cares 296 - configure-cares 297 - build 298 - test 299 300 libssh: 301 executor: ubuntu 302 steps: 303 - checkout 304 - install-deps 305 - install-libssh 306 - configure-libssh 307 - build 308 - test 309 310 arm: 311 machine: 312 image: ubuntu-2004:2024.01.1 313 resource_class: arm.medium 314 steps: 315 - checkout 316 - install-deps 317 - configure 318 - build 319 - test 320 321 arm-cares: 322 machine: 323 image: ubuntu-2004:2024.01.1 324 resource_class: arm.medium 325 steps: 326 - checkout 327 - install-deps 328 - install-cares 329 - configure-cares-debug 330 - build 331 - test 332 333 macos-arm-normal: 334 macos: 335 xcode: 15.0.0 336 resource_class: macos.m1.medium.gen1 337 steps: 338 - checkout 339 - install-deps-brew 340 - configure-macos-normal 341 - build-macos 342 - test-macos 343 344 macos-arm-debug: 345 macos: 346 xcode: 15.0.0 347 resource_class: macos.m1.medium.gen1 348 steps: 349 - checkout 350 - install-deps-brew 351 - configure-macos-debug 352 - build-macos 353 - test-macos 354 355 macos-arm-libssh2: 356 macos: 357 xcode: 15.0.0 358 resource_class: macos.m1.medium.gen1 359 steps: 360 - checkout 361 - install-deps-brew 362 - configure-macos-libssh2 363 - build-macos 364 - test-macos 365 366 macos-arm-libssh-c-ares: 367 macos: 368 xcode: 15.0.0 369 resource_class: macos.m1.medium.gen1 370 steps: 371 - checkout 372 - install-deps-brew 373 - configure-macos-libssh-c-ares 374 - build-macos 375 - test-macos 376 377 macos-arm-libssh: 378 macos: 379 xcode: 15.0.0 380 resource_class: macos.m1.medium.gen1 381 steps: 382 - checkout 383 - install-deps-brew 384 - configure-macos-libssh 385 - build-macos 386 - test-macos 387 388 macos-arm-c-ares: 389 macos: 390 xcode: 15.0.0 391 resource_class: macos.m1.medium.gen1 392 steps: 393 - checkout 394 - install-deps-brew 395 - configure-macos-c-ares 396 - build-macos 397 - test-macos 398 399 macos-arm-http-only: 400 macos: 401 xcode: 15.0.0 402 resource_class: macos.m1.medium.gen1 403 steps: 404 - checkout 405 - install-deps-brew 406 - configure-macos-http-only 407 - build-macos 408 - test-macos 409 410 macos-arm-http-securetransport-http2: 411 macos: 412 xcode: 15.0.0 413 resource_class: macos.m1.medium.gen1 414 steps: 415 - checkout 416 - install-deps-brew 417 - configure-macos-securetransport-http2 418 - build-macos 419 - test-macos 420 421 macos-arm-http-openssl-http2: 422 macos: 423 xcode: 15.0.0 424 resource_class: macos.m1.medium.gen1 425 steps: 426 - checkout 427 - install-deps-brew 428 - configure-macos-openssl-http2 429 - build-macos 430 - test-macos 431 432 macos-arm-http-libressl-http2: 433 macos: 434 xcode: 15.0.0 435 resource_class: macos.m1.medium.gen1 436 steps: 437 - checkout 438 - install-deps-brew 439 - configure-macos-libressl-http2 440 - build-macos 441 - test-macos 442 443 macos-arm-http-torture: 444 macos: 445 xcode: 15.0.0 446 resource_class: macos.m1.medium.gen1 447 steps: 448 - checkout 449 - install-deps-brew 450 - configure-macos-torture 451 - build-macos 452 - test-torture 453 454 macos-arm-http-torture-ftp: 455 macos: 456 xcode: 15.0.0 457 resource_class: macos.m1.medium.gen1 458 steps: 459 - checkout 460 - install-deps-brew 461 - configure-macos-torture-ftp 462 - build-macos 463 - test-torture-ftp 464 465workflows: 466 x86-openssl: 467 jobs: 468 - basic 469 470 openssl-c-ares: 471 jobs: 472 - cares 473 474 openssl-libssh: 475 jobs: 476 - libssh 477 478 openssl-no-proxy: 479 jobs: 480 - no-proxy 481 482 openssl-no-verbose: 483 jobs: 484 - no-verbose 485 486 wolfssl-wolfssh: 487 jobs: 488 - wolfssh 489 490 arm-openssl: 491 jobs: 492 - arm 493 494 arm-openssl-c-ares: 495 jobs: 496 - arm-cares 497 498 macos-arm-normal: 499 jobs: 500 - macos-arm-normal 501 502 macos-arm-debug: 503 jobs: 504 - macos-arm-debug 505 506 macos-arm-libssh2: 507 jobs: 508 - macos-arm-libssh2 509 510 macos-arm-libssh-c-ares: 511 jobs: 512 - macos-arm-libssh-c-ares 513 514 macos-arm-libssh: 515 jobs: 516 - macos-arm-libssh 517 518 macos-arm-c-ares: 519 jobs: 520 - macos-arm-c-ares 521 522 macos-arm-http-only: 523 jobs: 524 - macos-arm-http-only 525 526 macos-arm-http-securetransport-http2: 527 jobs: 528 - macos-arm-http-securetransport-http2 529 530 macos-arm-http-openssl-http2: 531 jobs: 532 - macos-arm-http-openssl-http2 533 534 # There are problem linking with LibreSSL on the CI boxes that prevent this 535 # from working. 536 # macos-arm-http-libressl-http2: 537 # jobs: 538 # - macos-arm-http-libressl-http2 539 540 macos-arm-http-torture: 541 jobs: 542 - macos-arm-http-torture 543 544 macos-arm-http-torture-ftp: 545 jobs: 546 - macos-arm-http-torture-ftp 547