config.yml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  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. # View these jobs in the browser: https://app.circleci.com/pipelines/github/curl/curl
  25. # Use the latest 2.1 version of CircleCI pipeline process engine. See: https://circleci.com/docs/2.0/configuration-reference
  26. version: 2.1
  27. commands:
  28. configure:
  29. steps:
  30. - run:
  31. command: |
  32. autoreconf -fi
  33. ./configure --enable-warnings --enable-werror --with-openssl
  34. configure-openssl-no-verbose:
  35. steps:
  36. - run:
  37. command: |
  38. autoreconf -fi
  39. ./configure --disable-verbose --enable-werror --with-openssl
  40. configure-no-proxy:
  41. steps:
  42. - run:
  43. command: |
  44. autoreconf -fi
  45. ./configure --disable-proxy --enable-werror --with-openssl
  46. configure-macos-normal:
  47. steps:
  48. - run:
  49. command: |
  50. autoreconf -fi
  51. ./configure --enable-warnings --enable-websockets --without-ssl CFLAGS='-Wno-vla -mmacosx-version-min=10.9'
  52. configure-macos-debug:
  53. steps:
  54. - run:
  55. command: |
  56. autoreconf -fi
  57. ./configure --enable-warnings --enable-websockets --without-ssl --enable-debug CFLAGS='-Wno-vla -mmacosx-version-min=10.9'
  58. configure-macos-libssh2:
  59. steps:
  60. - run:
  61. command: |
  62. autoreconf -fi
  63. ./configure --enable-warnings --enable-websockets --without-ssl --with-libssh2=/opt/homebrew/opt/libssh2 --enable-debug CFLAGS='-Wno-vla -mmacosx-version-min=10.9'
  64. configure-macos-libssh-c-ares:
  65. steps:
  66. - run:
  67. command: |
  68. autoreconf -fi
  69. ./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'
  70. configure-macos-libssh:
  71. steps:
  72. - run:
  73. command: |
  74. autoreconf -fi
  75. ./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'
  76. configure-macos-c-ares:
  77. steps:
  78. - run:
  79. command: |
  80. autoreconf -fi
  81. ./configure --enable-warnings --enable-websockets --without-ssl --enable-ares --enable-debug CFLAGS='-Wno-vla -mmacosx-version-min=10.9'
  82. configure-macos-http-only:
  83. steps:
  84. - run:
  85. command: |
  86. autoreconf -fi
  87. ./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'
  88. configure-macos-securetransport-http2:
  89. steps:
  90. - run:
  91. command: |
  92. autoreconf -fi
  93. ./configure --enable-warnings --enable-websockets --with-secure-transport CFLAGS='-Wno-vla -mmacosx-version-min=10.8'
  94. configure-macos-openssl-http2:
  95. steps:
  96. - run:
  97. command: |
  98. autoreconf -fi
  99. ./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'
  100. configure-macos-libressl-http2:
  101. steps:
  102. - run:
  103. command: |
  104. autoreconf -fi
  105. ./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'
  106. configure-macos-torture:
  107. steps:
  108. - run:
  109. command: |
  110. autoreconf -fi
  111. ./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'
  112. configure-macos-torture-ftp:
  113. steps:
  114. - run:
  115. command: |
  116. autoreconf -fi
  117. ./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'
  118. install-cares:
  119. steps:
  120. - run:
  121. command: |
  122. sudo apt-get update && sudo apt-get install -y libc-ares-dev
  123. install-libssh:
  124. steps:
  125. - run:
  126. command: |
  127. sudo apt-get update && sudo apt-get install -y libssh-dev
  128. install-deps:
  129. steps:
  130. - run:
  131. command: |
  132. sudo apt-get update && sudo apt-get install -y libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev python3-pip
  133. sudo python3 -m pip install impacket
  134. install-deps-brew:
  135. steps:
  136. - run:
  137. command: |
  138. # Drop libressl as long as we're not trying to build it
  139. echo libtool autoconf automake pkg-config nghttp2 libssh2 openssl libssh c-ares | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
  140. 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
  141. sudo python3 -m pip install impacket
  142. configure-libssh:
  143. steps:
  144. - run:
  145. command: |
  146. autoreconf -fi
  147. ./configure --enable-warnings --enable-werror --with-openssl --with-libssh
  148. install-wolfssl:
  149. steps:
  150. - run:
  151. command: |
  152. WOLFSSL_VER=5.6.0
  153. curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://github.com/wolfSSL/wolfssl/archive/v$WOLFSSL_VER-stable.tar.gz
  154. tar -xzf v$WOLFSSL_VER-stable.tar.gz
  155. cd wolfssl-$WOLFSSL_VER-stable
  156. ./autogen.sh
  157. ./configure --enable-tls13 --enable-all --enable-harden --prefix=$HOME/wssl
  158. make install
  159. install-wolfssh:
  160. steps:
  161. - run:
  162. command: |
  163. WOLFSSH_VER=1.4.12
  164. curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://github.com/wolfSSL/wolfssh/archive/v$WOLFSSH_VER-stable.tar.gz
  165. tar -xzf v$WOLFSSH_VER-stable.tar.gz
  166. cd wolfssh-$WOLFSSH_VER-stable
  167. ./autogen.sh
  168. ./configure --with-wolfssl=$HOME/wssl --prefix=$HOME/wssh --enable-scp --enable-sftp --disable-examples
  169. make install
  170. configure-cares:
  171. steps:
  172. - run:
  173. command: |
  174. autoreconf -fi
  175. ./configure --enable-warnings --enable-werror --with-openssl --enable-ares
  176. configure-wolfssh:
  177. steps:
  178. - run:
  179. command: |
  180. autoreconf -fi
  181. LDFLAGS="-Wl,-rpath,$HOME/wssh/lib" ./configure --enable-warnings --enable-werror --with-wolfssl=$HOME/wssl --with-wolfssh=$HOME/wssh
  182. configure-cares-debug:
  183. steps:
  184. - run:
  185. command: |
  186. autoreconf -fi
  187. ./configure --enable-debug --enable-werror --with-openssl --enable-ares
  188. build:
  189. steps:
  190. - run: make -j3 V=1
  191. - run: make -j3 V=1 examples
  192. build-macos:
  193. steps:
  194. - run: make -j7 V=1
  195. - run: make -j7 V=1 examples
  196. test:
  197. steps:
  198. - run: make -j3 V=1 test-ci
  199. test-macos:
  200. steps:
  201. - run: make -j7 V=1 test-ci
  202. test-torture:
  203. steps:
  204. - run: make -j5 V=1 test-ci TFLAGS="-n -t --shallow=25 !FTP"
  205. test-torture-ftp:
  206. steps:
  207. - run: make -j5 V=1 test-ci TFLAGS="-n -t --shallow=20 FTP"
  208. executors:
  209. ubuntu:
  210. machine:
  211. image: ubuntu-2004:202010-01
  212. jobs:
  213. basic:
  214. executor: ubuntu
  215. steps:
  216. - checkout
  217. - configure
  218. - build
  219. - test
  220. no-verbose:
  221. executor: ubuntu
  222. steps:
  223. - checkout
  224. - install-deps
  225. - configure-openssl-no-verbose
  226. - build
  227. wolfssh:
  228. executor: ubuntu
  229. steps:
  230. - checkout
  231. - install-deps
  232. - install-wolfssl
  233. - install-wolfssh
  234. - configure-wolfssh
  235. - build
  236. no-proxy:
  237. executor: ubuntu
  238. steps:
  239. - checkout
  240. - install-deps
  241. - configure-no-proxy
  242. - build
  243. - test
  244. cares:
  245. executor: ubuntu
  246. steps:
  247. - checkout
  248. - install-cares
  249. - configure-cares
  250. - build
  251. - test
  252. libssh:
  253. executor: ubuntu
  254. steps:
  255. - checkout
  256. - install-libssh
  257. - configure-libssh
  258. - build
  259. - test
  260. arm:
  261. machine:
  262. image: ubuntu-2004:202101-01
  263. resource_class: arm.medium
  264. steps:
  265. - checkout
  266. - configure
  267. - build
  268. - test
  269. arm-cares:
  270. machine:
  271. image: ubuntu-2004:202101-01
  272. resource_class: arm.medium
  273. steps:
  274. - checkout
  275. - install-cares
  276. - configure-cares-debug
  277. - build
  278. - test
  279. # TODO: All builds with "macos.x86.medium.gen2" must be changed to
  280. # "macos.m1.medium.gen1" in January 2024 because the former will be removed
  281. # (the names should also be changed from macos-x86-* to macos-arm-*). We
  282. # want the M1 (ARM) machines anyway, for platform diversity.
  283. # See https://circleci.com/docs/configuration-reference/#macos-execution-environment
  284. macos-x86-normal:
  285. macos:
  286. xcode: 15.0.0
  287. resource_class: macos.x86.medium.gen2
  288. steps:
  289. - checkout
  290. - install-deps-brew
  291. - configure-macos-normal
  292. - build-macos
  293. - test-macos
  294. macos-x86-debug:
  295. macos:
  296. xcode: 15.0.0
  297. resource_class: macos.x86.medium.gen2
  298. steps:
  299. - checkout
  300. - install-deps-brew
  301. - configure-macos-debug
  302. - build-macos
  303. - test-macos
  304. macos-x86-libssh2:
  305. macos:
  306. xcode: 15.0.0
  307. resource_class: macos.x86.medium.gen2
  308. steps:
  309. - checkout
  310. - install-deps-brew
  311. - configure-macos-libssh2
  312. - build-macos
  313. - test-macos
  314. macos-x86-libssh-c-ares:
  315. macos:
  316. xcode: 15.0.0
  317. resource_class: macos.x86.medium.gen2
  318. steps:
  319. - checkout
  320. - install-deps-brew
  321. - configure-macos-libssh-c-ares
  322. - build-macos
  323. - test-macos
  324. macos-x86-libssh:
  325. macos:
  326. xcode: 15.0.0
  327. resource_class: macos.x86.medium.gen2
  328. steps:
  329. - checkout
  330. - install-deps-brew
  331. - configure-macos-libssh
  332. - build-macos
  333. - test-macos
  334. macos-x86-c-ares:
  335. macos:
  336. xcode: 15.0.0
  337. resource_class: macos.x86.medium.gen2
  338. steps:
  339. - checkout
  340. - install-deps-brew
  341. - configure-macos-c-ares
  342. - build-macos
  343. - test-macos
  344. macos-x86-http-only:
  345. macos:
  346. xcode: 15.0.0
  347. resource_class: macos.x86.medium.gen2
  348. steps:
  349. - checkout
  350. - install-deps-brew
  351. - configure-macos-http-only
  352. - build-macos
  353. - test-macos
  354. macos-x86-http-securetransport-http2:
  355. macos:
  356. xcode: 15.0.0
  357. resource_class: macos.x86.medium.gen2
  358. steps:
  359. - checkout
  360. - install-deps-brew
  361. - configure-macos-securetransport-http2
  362. - build-macos
  363. - test-macos
  364. macos-x86-http-openssl-http2:
  365. macos:
  366. xcode: 15.0.0
  367. resource_class: macos.x86.medium.gen2
  368. steps:
  369. - checkout
  370. - install-deps-brew
  371. - configure-macos-openssl-http2
  372. - build-macos
  373. - test-macos
  374. macos-x86-http-libressl-http2:
  375. macos:
  376. xcode: 15.0.0
  377. resource_class: macos.x86.medium.gen2
  378. steps:
  379. - checkout
  380. - install-deps-brew
  381. - configure-macos-libressl-http2
  382. - build-macos
  383. - test-macos
  384. macos-x86-http-torture:
  385. macos:
  386. xcode: 15.0.0
  387. resource_class: macos.x86.medium.gen2
  388. steps:
  389. - checkout
  390. - install-deps-brew
  391. - configure-macos-torture
  392. - build-macos
  393. - test-torture
  394. macos-x86-http-torture-ftp:
  395. macos:
  396. xcode: 15.0.0
  397. resource_class: macos.x86.medium.gen2
  398. steps:
  399. - checkout
  400. - install-deps-brew
  401. - configure-macos-torture-ftp
  402. - build-macos
  403. - test-torture-ftp
  404. workflows:
  405. x86-openssl:
  406. jobs:
  407. - basic
  408. openssl-c-ares:
  409. jobs:
  410. - cares
  411. openssl-libssh:
  412. jobs:
  413. - libssh
  414. openssl-no-proxy:
  415. jobs:
  416. - no-proxy
  417. openssl-no-verbose:
  418. jobs:
  419. - no-verbose
  420. wolfssl-wolfssh:
  421. jobs:
  422. - wolfssh
  423. arm-openssl:
  424. jobs:
  425. - arm
  426. arm-openssl-c-ares:
  427. jobs:
  428. - arm-cares
  429. macos-x86-normal:
  430. jobs:
  431. - macos-x86-normal
  432. macos-x86-debug:
  433. jobs:
  434. - macos-x86-debug
  435. macos-x86-libssh2:
  436. jobs:
  437. - macos-x86-libssh2
  438. macos-x86-libssh-c-ares:
  439. jobs:
  440. - macos-x86-libssh-c-ares
  441. macos-x86-libssh:
  442. jobs:
  443. - macos-x86-libssh
  444. macos-x86-c-ares:
  445. jobs:
  446. - macos-x86-c-ares
  447. macos-x86-http-only:
  448. jobs:
  449. - macos-x86-http-only
  450. macos-x86-http-securetransport-http2:
  451. jobs:
  452. - macos-x86-http-securetransport-http2
  453. macos-x86-http-openssl-http2:
  454. jobs:
  455. - macos-x86-http-openssl-http2
  456. # There are problem linking with LibreSSL on the CI boxes that prevent this
  457. # from working.
  458. #macos-x86-http-libressl-http2:
  459. # jobs:
  460. # - macos-x86-http-libressl-http2
  461. macos-x86-http-torture:
  462. jobs:
  463. - macos-x86-http-torture
  464. macos-x86-http-torture-ftp:
  465. jobs:
  466. - macos-x86-http-torture-ftp